From 2f51e9a66893b2d5eb0041489f5c54d87180a1e9 Mon Sep 17 00:00:00 2001 From: landv Date: Fri, 3 Feb 2023 14:34:20 +0800 Subject: [PATCH] first commit --- LuYao.Toolkit.Core/AppHelper.cs | 19 + LuYao.Toolkit.Core/BuildFunctionsReport.linq | 43 + .../Channels/Channel.Converts.cs | 213 + .../Channels/Channel.CrossBorder.cs | 33 + .../Channels/Channel.Encodings.cs | 123 + LuYao.Toolkit.Core/Channels/Channel.Files.cs | 48 + LuYao.Toolkit.Core/Channels/Channel.Gens.cs | 108 + LuYao.Toolkit.Core/Channels/Channel.Images.cs | 78 + .../Channels/Channel.Networks.cs | 153 + LuYao.Toolkit.Core/Channels/Channel.Other.cs | 33 + LuYao.Toolkit.Core/Channels/Channel.Texts.cs | 138 + LuYao.Toolkit.Core/Channels/Channel.cs | 39 + LuYao.Toolkit.Core/Channels/FunctionItem.cs | 77 + ...\260\347\224\237\346\210\220 Channel.linq" | 85 + .../Entities/ChannelItemSession.Biz.cs | 159 + .../Entities/ChannelItemSession.cs | 123 + .../Entities/Log/2022_07_27.log | 8 + .../Entities/Log/2022_08_04.log | 55 + .../Entities/Log/2022_08_08.log | 15 + .../Entities/Log/2022_09_13.log | 8 + .../Entities/Log/2023_01_14.log | 26 + LuYao.Toolkit.Core/Entities/LuYao.Toolkit.xml | 84 + .../Entities/PortProxyRule.Biz.cs | 157 + LuYao.Toolkit.Core/Entities/PortProxyRule.cs | 178 + .../Entities/RdpConnection.Biz.cs | 150 + LuYao.Toolkit.Core/Entities/RdpConnection.cs | 527 ++ LuYao.Toolkit.Core/Entities/RdpGroup.Biz.cs | 129 + LuYao.Toolkit.Core/Entities/RdpGroup.cs | 136 + .../Entities/ViewModelState.Biz.cs | 150 + LuYao.Toolkit.Core/Entities/ViewModelState.cs | 137 + .../Events/EntityCreatedEvent.cs | 8 + .../Events/EntityDeletedEvent.cs | 8 + .../Events/EntityUpdatedEvent.cs | 13 + .../Events/OpenFunctionItemEvent.cs | 6 + .../Events/OpenFunctionItemEventPayload.cs | 15 + LuYao.Toolkit.Core/Events/OpenTabEvent.cs | 6 + .../Events/PreviewFileAsStringEvent.cs | 10 + .../Events/PreviewFileAsStringEventPayload.cs | 17 + .../Events/ThemeChangedEvent.cs | 8 + .../Events/ViewFileContentAsStringEvent.cs | 10 + .../ViewFileContentAsStringEventPayload.cs | 17 + LuYao.Toolkit.Core/IClipboardAware.cs | 6 + LuYao.Toolkit.Core/IFileDragDropTarget.cs | 6 + LuYao.Toolkit.Core/IO/TempHelper.cs | 69 + LuYao.Toolkit.Core/Icons.cs | 6401 +++++++++++++++++ LuYao.Toolkit.Core/LuYao.Toolkit.Core.csproj | 37 + LuYao.Toolkit.Core/Regions/RegionNames.cs | 12 + LuYao.Toolkit.Core/Resources/AppResources.cs | 66 + .../Resources/AppResources.g.cs | 11 + .../Resources/BuildAppResources.linq | 112 + .../Resources/LuYao.Toolkit.dat | Bin 0 -> 25610 bytes .../Resources/TestAppResources.linq | 13 + .../Services/ClipboardService.cs | 11 + .../Services/FileDialogService.cs | 7 + LuYao.Toolkit.Core/Services/FileService.cs | 43 + LuYao.Toolkit.Core/Services/GoogleService.cs | 236 + .../Services/IOpenFileDialog.cs | 11 + .../Services/ISaveFileDialog.cs | 19 + .../Services/IServiceProvider.cs | 22 + LuYao.Toolkit.Core/Services/IWatchToken.cs | 10 + .../Services/MessageBoxService.cs | 10 + LuYao.Toolkit.Core/Services/NotifyService.cs | 15 + .../Services/NullServiceProvider.cs | 83 + .../Services/ServiceProviderContainer.cs | 12 + LuYao.Toolkit.Core/Services/SoundService.cs | 13 + LuYao.Toolkit.Core/Services/TongjiService.cs | 30 + .../Services/WatchFileService.cs | 21 + LuYao.Toolkit.Core/Services/WatchToken.cs | 88 + .../Tabs/Navs/BuildFromWebsite.linq | 61 + LuYao.Toolkit.Core/Tabs/Navs/NavGroup.cs | 11 + LuYao.Toolkit.Core/Tabs/Navs/NavGroup.g.cs | 6 + LuYao.Toolkit.Core/Tabs/Navs/NavItem.cs | 10 + LuYao.Toolkit.Core/Tabs/Tab.cs | 22 + LuYao.Toolkit.Core/Themes/ThemeMode.cs | 11 + LuYao.Toolkit.Core/Update/UpdateConfig.cs | 30 + LuYao.Toolkit.Core/Validators/Extensions.cs | 15 + .../Validators/IPAddressValidator.cs | 17 + .../Validators/NetworkPortValidator.cs | 22 + LuYao.Toolkit.Core/Views/ViewNameAttribute.cs | 14 + LuYao.Toolkit.Core/Views/ViewNames.cs | 113 + .../LuYao.Toolkit.Extensions.csproj | 20 + .../LuYao/Toolkit/PortProxy/CmdRunner.cs | 42 + .../LuYao/Toolkit/PortProxy/CmdUtil.cs | 83 + .../LuYao/Toolkit/PortProxy/ProxyType.cs | 31 + .../LuYao/Toolkit/Rdm/AudioRedirection.cs | 18 + .../LuYao/Toolkit/Rdm/AuthenticationLevel.cs | 18 + .../LuYao/Toolkit/Rdm/ColorDepth.cs | 23 + .../LuYao/Toolkit/Rdm/DesktopSize.cs | 22 + .../Rdm/Events/AddRdpConnectionEvent.cs | 4 + .../Rdm/Events/AfterRdmSettingEvent.cs | 5 + .../Rdm/Events/EditRdpConnectionEvent.cs | 5 + .../Events/EditRdpConnectionEventPayload.cs | 14 + .../Toolkit/Rdm/Events/OpenRdmSettingEvent.cs | 8 + .../Rdm/Events/OpenRdpConnectionEvent.cs | 12 + .../Events/OpenRdpConnectionEventPayload.cs | 9 + .../Rdm/Events/RdpConnectionChangedEvent.cs | 5 + .../LuYao/Toolkit/Rdm/IRdpConnection.cs | 41 + .../LuYao/Toolkit/Rdm/KeyboardRedirection.cs | 16 + .../Toolkit/Rdm/RdpConnectionValidator.cs | 19 + .../Json/Linq/JsonFlattenExtensions.cs | 185 + .../Youdao/YoudaoDictionary.cs | 98 + .../Youdao/YoudaoPhonetic.cs | 8 + .../Youdao/YoudaoSuggestItem.cs | 13 + LuYao.Toolkit.Extensions/Youdao/YoudaoWord.cs | 17 + .../Converts/ColorConverterViewModel.cs | 104 + .../Channels/Converts/HexConvertViewModel.cs | 71 + .../Channels/Converts/IndentJsonViewModel.cs | 138 + .../Channels/Converts/IndentXmlViewModel.cs | 121 + .../Channels/Converts/JsonToCSharp.res.js | 85 + .../Converts/JsonToCSharpDemo.res.json | 21 + .../Converts/JsonToCSharpViewModel.cs | 72 + .../Channels/Converts/JsonToCsv.res.js | 8 + .../Channels/Converts/JsonToCsvDemo.res.json | 52 + .../Channels/Converts/JsonToCsvViewModel.cs | 71 + .../Converts/PostmanConverterViewModel.cs | 129 + .../Converts/RsaKeyConvertViewModel.cs | 78 + .../Converts/TranslateJsonByJsViewModel.cs | 138 + .../TranslateJsonByLiquidViewModel.cs | 98 + .../Converts/TranslateXmlByXslViewModel.cs | 109 + .../Converts/UnixTimestampViewModel.cs | 129 + .../Channels/Converts/YamlToJsonViewModel.cs | 51 + .../MercadoToWorldFirstViewModel.cs | 326 + .../Encodings/Ascii85EncodeViewModel.cs | 48 + .../Encodings/Base16EncodeViewModel.cs | 48 + .../Encodings/Base62EncodeViewModel.cs | 48 + .../Encodings/Base64EncodeViewModel.cs | 50 + .../Encodings/EncodingViewModelBase.cs | 37 + .../Channels/Encodings/HtmlEncodeViewModel.cs | 37 + .../Encodings/StringZipperViewModel.cs | 85 + .../Channels/Encodings/UrlEncodeViewModel.cs | 36 + .../Files/CrackingMdbPasswordViewModel.cs | 49 + .../Files/DetectFileEncodeingViewModel.cs | 98 + .../Channels/Files/HashFileViewModel.cs | 220 + .../Channels/Gens/GenAesKeyViewModel.cs | 57 + .../Channels/Gens/GenGuidViewModel.cs | 79 + .../Channels/Gens/GenLinesByRangeViewModel.cs | 60 + .../Channels/Gens/GenPasswordViewModel.cs | 75 + .../Channels/Gens/GenRsaKeyViewModel.cs | 54 + .../Channels/Gens/GenXCodeEntityViewModel.cs | 117 + .../Channels/Gens/RsaKeyFormat.cs | 3 + .../Channels/Images/Base64ToImageViewModel.cs | 81 + .../Channels/Images/GifSplitterViewModel.cs | 108 + .../Channels/Images/ImageToBase64ViewModel.cs | 112 + .../Channels/Images/ImageToIconViewModel.cs | 88 + .../Networks/HttpProxyCheckerViewModel.cs | 121 + .../Channels/Networks/IPLookupViewModel.cs | 362 + .../Channels/Networks/PingViewModel.cs | 111 + .../Networks/PortProxy/DetailViewModel.cs | 175 + .../Networks/PortProxy/IndexViewModel.cs | 196 + .../Networks/PortProxy/PortProxyItem.cs | 53 + .../PortProxy/PortProxyItemValidator.cs | 30 + .../Networks/RemoteDesktopManagerViewModel.cs | 313 + ...icMonitorViewModel.GetAllTcpConnections.cs | 105 + .../Networks/TrafficMonitorViewModel.cs | 136 + .../Channels/Networks/UrlAnalyzerViewModel.cs | 78 + .../Networks/UserAgentParserViewModel.cs | 64 + .../Channels/Networks/WhoisViewModel.cs | 100 + .../Channels/Texts/CsvReaderViewModel.cs | 131 + .../Texts/FullHalfConvertViewModel.cs | 85 + .../Texts/GoogleTranslateViewModel.cs | 246 + .../Channels/Texts/HashCalculatorViewModel.cs | 101 + .../Channels/Texts/LogReaderViewModel.cs | 81 + .../Channels/Texts/RegexEvaluatorViewModel.cs | 133 + .../Channels/Texts/TextJoinViewModel.cs | 163 + .../Texts/YoudaoDictionaryViewModel.cs | 41 + .../Drawing/IconFactory.cs | 173 + .../LuYao.Toolkit.ViewModels.csproj | 40 + .../MainWindowViewModel.cs | 69 + LuYao.Toolkit.ViewModels/Rdm/RdpConnection.cs | 144 + .../Rdm/RdpConnectionBase.cs | 41 + .../Rdm/RdpConnectionCsvMap.cs | 70 + LuYao.Toolkit.ViewModels/Rdm/RdpGroup.cs | 24 + .../Rdm/RdpGroupValidator.cs | 17 + LuYao.Toolkit.ViewModels/TabItem.cs | 21 + .../Tabs/Explorer/IndexViewModel.cs | 31 + .../Tabs/Navs/IndexViewModel.cs | 48 + .../Tabs/Rdp/IndexViewModel.cs | 15 + .../Tabs/Session/ChannelItemSessionItem.cs | 21 + .../Tabs/Session/IndexViewModel.cs | 161 + .../UI/DetailViewModelBase.cs | 19 + .../UI/IMasterDetailViewModel.cs | 6 + .../UI/MasterDetailViewModelBase.cs | 26 + LuYao.Toolkit.ViewModels/ViewModelBase.cs | 36 + .../ViewStates/IViewStateHost.cs | 9 + .../ViewStates/ViewStateBag.cs | 79 + .../ViewStates/ViewStateItem.cs | 20 + .../ViewStates/WatchViewStateAttribute.cs | 14 + LuYao.Toolkit.sln | 48 + LuYao.Toolkit/App.config | 6 + LuYao.Toolkit/App.ico | Bin 0 -> 60129 bytes LuYao.Toolkit/App.xaml | 25 + LuYao.Toolkit/App.xaml.cs | 162 + LuYao.Toolkit/AppRegisterTypes.cs | 65 + LuYao.Toolkit/AppRegisterTypes.linq | 38 + LuYao.Toolkit/AppRegisterTypes.liquid | 12 + LuYao.Toolkit/AssemblyInfo.cs | 10 + LuYao.Toolkit/Attaches/ComboBoxAttach.cs | 47 + LuYao.Toolkit/Attaches/FileDragDropAttach.cs | 60 + LuYao.Toolkit/Attaches/TextBoxAttach.cs | 7 + .../Attaches/UniformSpacingPanelAttach.cs | 106 + .../Behaviors/AvalonEditBehaviour.cs | 189 + .../ListBoxScrollIntoNewAddBehaviour.cs | 32 + LuYao.Toolkit/Behaviors/UIElementBehaviour.cs | 52 + .../Channels/Converts/ColorConverter.xaml | 48 + .../Channels/Converts/ColorConverter.xaml.cs | 29 + .../Channels/Converts/HexConvert.xaml | 47 + .../Channels/Converts/HexConvert.xaml.cs | 29 + .../Channels/Converts/IndentJson.xaml | 31 + .../Channels/Converts/IndentJson.xaml.cs | 20 + .../Channels/Converts/IndentXml.xaml | 33 + .../Channels/Converts/IndentXml.xaml.cs | 32 + .../Channels/Converts/JsonToCSharp.xaml | 31 + .../Channels/Converts/JsonToCSharp.xaml.cs | 29 + .../Channels/Converts/JsonToCsv.xaml | 35 + .../Channels/Converts/JsonToCsv.xaml.cs | 16 + .../Channels/Converts/PostmanConverter.xaml | 30 + .../Converts/PostmanConverter.xaml.cs | 29 + .../Channels/Converts/RsaKeyConvert.xaml | 36 + .../Channels/Converts/RsaKeyConvert.xaml.cs | 29 + .../Channels/Converts/TranslateJsonByJs.xaml | 28 + .../Converts/TranslateJsonByJs.xaml.cs | 30 + .../Converts/TranslateJsonByLiquid.xaml | 28 + .../Converts/TranslateJsonByLiquid.xaml.cs | 29 + .../Channels/Converts/TranslateXmlByXsl.xaml | 32 + .../Converts/TranslateXmlByXsl.xaml.cs | 30 + .../Channels/Converts/UnixTimestamp.xaml | 93 + .../Channels/Converts/UnixTimestamp.xaml.cs | 29 + .../Channels/Converts/YamlToJson.xaml | 35 + .../Channels/Converts/YamlToJson.xaml.cs | 29 + .../CrossBorder/MercadoToWorldFirst.xaml | 32 + .../CrossBorder/MercadoToWorldFirst.xaml.cs | 30 + .../Channels/Encodings/Ascii85Encode.xaml | 27 + .../Channels/Encodings/Ascii85Encode.xaml.cs | 29 + .../Channels/Encodings/Base16Encode.xaml | 27 + .../Channels/Encodings/Base16Encode.xaml.cs | 29 + .../Channels/Encodings/Base62Encode.xaml | 27 + .../Channels/Encodings/Base62Encode.xaml.cs | 29 + .../Channels/Encodings/Base64Encode.xaml | 27 + .../Channels/Encodings/Base64Encode.xaml.cs | 29 + .../Channels/Encodings/HtmlEncode.xaml | 26 + .../Channels/Encodings/HtmlEncode.xaml.cs | 29 + .../Channels/Encodings/StringZipper.xaml | 38 + .../Channels/Encodings/StringZipper.xaml.cs | 29 + .../Channels/Encodings/UrlEncode.xaml | 26 + .../Channels/Encodings/UrlEncode.xaml.cs | 29 + .../Channels/Files/DetectFileEncodeing.xaml | 68 + .../Files/DetectFileEncodeing.xaml.cs | 30 + LuYao.Toolkit/Channels/Files/HashFile.xaml | 137 + LuYao.Toolkit/Channels/Files/HashFile.xaml.cs | 30 + LuYao.Toolkit/Channels/Gens/GenAesKey.xaml | 31 + LuYao.Toolkit/Channels/Gens/GenAesKey.xaml.cs | 30 + LuYao.Toolkit/Channels/Gens/GenGuid.xaml | 44 + LuYao.Toolkit/Channels/Gens/GenGuid.xaml.cs | 30 + .../Channels/Gens/GenLinesByRange.xaml | 29 + .../Channels/Gens/GenLinesByRange.xaml.cs | 30 + LuYao.Toolkit/Channels/Gens/GenPassword.xaml | 38 + .../Channels/Gens/GenPassword.xaml.cs | 17 + LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml | 43 + LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml.cs | 30 + .../Channels/Gens/GenXCodeEntity.xaml | 27 + .../Channels/Gens/GenXCodeEntity.xaml.cs | 29 + .../Channels/Images/Base64ToImage.xaml | 40 + .../Channels/Images/Base64ToImage.xaml.cs | 29 + .../Channels/Images/GifSplitter.xaml | 75 + .../Channels/Images/GifSplitter.xaml.cs | 29 + .../Channels/Images/ImageToBase64.xaml | 77 + .../Channels/Images/ImageToBase64.xaml.cs | 31 + .../Channels/Images/ImageToIcon.xaml | 35 + .../Channels/Images/ImageToIcon.xaml.cs | 29 + .../Channels/Networks/HttpProxyChecker.xaml | 68 + .../Networks/HttpProxyChecker.xaml.cs | 30 + LuYao.Toolkit/Channels/Networks/IPLookup.xaml | 38 + .../Channels/Networks/IPLookup.xaml.cs | 29 + LuYao.Toolkit/Channels/Networks/Ping.xaml | 23 + LuYao.Toolkit/Channels/Networks/Ping.xaml.cs | 29 + .../Channels/Networks/PortProxy/Detail.xaml | 48 + .../Networks/PortProxy/Detail.xaml.cs | 26 + .../Channels/Networks/PortProxy/Index.xaml | 86 + .../Channels/Networks/PortProxy/Index.xaml.cs | 33 + .../Networks/RemoteDesktopManager.xaml | 76 + .../Networks/RemoteDesktopManager.xaml.cs | 88 + .../Channels/Networks/TrafficMonitor.xaml | 43 + .../Channels/Networks/TrafficMonitor.xaml.cs | 29 + .../Channels/Networks/UrlAnalyzer.xaml | 79 + .../Channels/Networks/UrlAnalyzer.xaml.cs | 29 + .../Channels/Networks/UserAgentParser.xaml | 24 + .../Channels/Networks/UserAgentParser.xaml.cs | 29 + LuYao.Toolkit/Channels/Networks/Whois.xaml | 39 + LuYao.Toolkit/Channels/Networks/Whois.xaml.cs | 29 + .../Channels/Other/SystemToolkit.xaml | 154 + .../Channels/Other/SystemToolkit.xaml.cs | 101 + LuYao.Toolkit/Channels/Texts/CsvReader.xaml | 21 + .../Channels/Texts/CsvReader.xaml.cs | 41 + .../Channels/Texts/FullHalfConvert.xaml | 26 + .../Channels/Texts/FullHalfConvert.xaml.cs | 29 + .../Channels/Texts/GoogleTranslate.xaml | 53 + .../Channels/Texts/GoogleTranslate.xaml.cs | 137 + .../Channels/Texts/HashCalculator.xaml | 38 + .../Channels/Texts/HashCalculator.xaml.cs | 30 + LuYao.Toolkit/Channels/Texts/LogReader.xaml | 23 + .../Channels/Texts/LogReader.xaml.cs | 29 + .../Channels/Texts/RegexEvaluator.xaml | 87 + .../Channels/Texts/RegexEvaluator.xaml.cs | 65 + LuYao.Toolkit/Channels/Texts/TextJoin.xaml | 47 + LuYao.Toolkit/Channels/Texts/TextJoin.xaml.cs | 31 + .../Channels/Texts/YoudaoDictionary.xaml | 98 + .../Channels/Texts/YoudaoDictionary.xaml.cs | 28 + .../Highlighting/CSharp-Mode-Dark.xshd | 312 + .../Highlighting/CSharp-Mode-Default.xshd | 310 + .../AvalonEdit/Highlighting/Defines.cs | 22 + .../Highlighting/Json-Mode-Dark.xshd | 72 + .../Highlighting/Json-Mode-Default.xshd | 72 + .../Controls/AvalonEdit/Highlighting/Log.xshd | 118 + .../Highlighting/XML-Mode-Dark.xshd | 63 + .../Highlighting/XML-Mode-Default.xshd | 63 + .../Controls/AvalonEdit/HighlightingHelper.cs | 51 + .../AvalonEdit/JsonFoldingStrategy.cs | 87 + .../Controls/AvalonEdit/SearchPanel.xaml | 64 + .../TruncateLongLinesElementGenerator.cs | 29 + LuYao.Toolkit/Controls/CodeEditor.Commands.cs | 49 + LuYao.Toolkit/Controls/CodeEditor.Context.cs | 30 + .../Controls/CodeEditor.Highlighting.cs | 13 + LuYao.Toolkit/Controls/CodeEditor.xaml | 32 + LuYao.Toolkit/Controls/CodeEditor.xaml.cs | 198 + LuYao.Toolkit/Controls/DirectorySelector.xaml | 33 + .../Controls/DirectorySelector.xaml.cs | 125 + LuYao.Toolkit/Controls/FileSelector.xaml | 31 + LuYao.Toolkit/Controls/FileSelector.xaml.cs | 133 + LuYao.Toolkit/Controls/FormItemContainer.cs | 53 + LuYao.Toolkit/Controls/MasterDetailLayout.cs | 48 + .../Controls/TextBlockWithIconBox.cs | 45 + LuYao.Toolkit/Controls/Utils/Boxes.cs | 18 + LuYao.Toolkit/Controls/WindowToolbox.cs | 165 + .../ByteCountToDisplaySizeConverter.cs | 33 + .../Converters/DateTimeToRelativeConverter.cs | 19 + .../Converters/EnumToBooleanConverter.cs | 39 + .../Converters/EnumToDescriptionConverter.cs | 27 + .../Converters/EnumToVisibilityConverter.cs | 26 + .../Converters/FunctionBackgroundConverter.cs | 125 + .../FunctionBackgroundConverter.linq | 19 + .../Converters/LanguageCodeToNameConverter.cs | 50 + .../Converters/PathToFileNameConverter.cs | 21 + .../Converters/PathToIconConverter.cs | 66 + .../Converters/RegexMatchPositionConverter.cs | 35 + .../Converters/SingleLineConverter.cs | 26 + .../StringIsNotNullOrEmptyConverter.cs | 24 + .../Converters/TruncateStringConverter.cs | 26 + LuYao.Toolkit/Dialogs/DialogWindow.xaml | 12 + LuYao.Toolkit/Dialogs/DialogWindow.xaml.cs | 40 + LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml | 24 + .../Dialogs/MultiboxingDialog.xaml.cs | 33 + .../Dialogs/MultiboxingDialogViewModel.cs | 47 + .../Dialogs/MultiboxingDialogWindow.xaml | 14 + .../Dialogs/MultiboxingDialogWindow.xaml.cs | 44 + .../Dialogs/PreviewFileAsStringDialog.xaml | 35 + .../Dialogs/PreviewFileAsStringDialog.xaml.cs | 28 + .../PreviewFileAsStringDialogViewModel.cs | 84 + .../Dialogs/ToolkitSettingsDialog.xaml | 39 + .../Dialogs/ToolkitSettingsDialog.xaml.cs | 32 + .../Dialogs/ToolkitSettingsDialogViewModel.cs | 48 + LuYao.Toolkit/Helpers/ComboBoxHelper.cs | 39 + LuYao.Toolkit/IO/FileType.cs | 66 + LuYao.Toolkit/IO/FileTypeExtensions.cs | 115 + .../IO/FileTypeExtensionsAttribute.cs | 22 + LuYao.Toolkit/IPLookup.dat | Bin 0 -> 1500888 bytes LuYao.Toolkit/LuYao.Toolkit.csproj | 107 + LuYao.Toolkit/LuYao.Toolkit.csproj.user | 344 + LuYao.Toolkit/LuYaoCommands.cs | 12 + LuYao.Toolkit/MainWindow.xaml | 88 + LuYao.Toolkit/MainWindow.xaml.cs | 199 + LuYao.Toolkit/ProcessManager.cs | 79 + .../Rdm/Dialogs/RdmSettingDialog.xaml | 36 + .../Rdm/Dialogs/RdmSettingDialog.xaml.cs | 28 + .../Rdm/Dialogs/RdmSettingViewModel.cs | 147 + .../Dialogs/RdpConnectionDetailDialog.xaml | 153 + .../Dialogs/RdpConnectionDetailDialog.xaml.cs | 66 + .../Dialogs/RdpConnectionDetailViewModel.cs | 122 + .../Rdm/Dialogs/RdpGroupDetailDialog.xaml | 33 + .../Rdm/Dialogs/RdpGroupDetailDialog.xaml.cs | 28 + .../Rdm/Dialogs/RdpGroupDetailViewModel.cs | 85 + LuYao.Toolkit/Rdm/IMsRdpClient.cs | 18 + LuYao.Toolkit/Rdm/IMsRdpClientHandler.cs | 15 + LuYao.Toolkit/Rdm/MsRdpClientFactory.cs | 418 ++ LuYao.Toolkit/Rdm/RdpConnectStatus.cs | 3 + LuYao.Toolkit/Rdm/RdpSession.Designer.cs | 70 + LuYao.Toolkit/Rdm/RdpSession.cs | 186 + LuYao.Toolkit/Rdm/RdpSession.resx | 63 + LuYao.Toolkit/Rdm/StatusChangedEventArgs.cs | 12 + LuYao.Toolkit/Resources/JetBrainsMono.ttf | Bin 0 -> 203952 bytes .../Resources/SystemToolkit/calc.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/certmgr.ico | Bin 0 -> 1150 bytes LuYao.Toolkit/Resources/SystemToolkit/cmd.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/credential.ico | Bin 0 -> 1406 bytes .../Resources/SystemToolkit/datetime.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/deskicon.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/devmgr.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/disks.ico | Bin 0 -> 1150 bytes LuYao.Toolkit/Resources/SystemToolkit/env.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/eventlog.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/firewall.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/gpedit.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/hosts.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/ipv4.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/ipv6.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/killexplorer.ico | Bin 0 -> 1150 bytes .../SystemToolkit/netconnections.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/pcname.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/performance.ico | Bin 0 -> 1406 bytes .../Resources/SystemToolkit/perfsettings.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/powercfg.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/poweroff.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/powershell.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/program.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/proxy.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/reboot.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/recyclebin.png | Bin 0 -> 851 bytes .../Resources/SystemToolkit/regedit.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/resetexplorer.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/resmon.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/route.ico | Bin 0 -> 1014 bytes .../Resources/SystemToolkit/secpolicy.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/services.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/share.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/systeminfo.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/taskmgr.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/tasksch.ico | Bin 0 -> 1150 bytes LuYao.Toolkit/Resources/SystemToolkit/uac.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/users.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/version.ico | Bin 0 -> 1150 bytes .../Resources/SystemToolkit/wallpaper.ico | Bin 0 -> 1150 bytes LuYao.Toolkit/Resources/SystemToolkit/wsl.ico | Bin 0 -> 1150 bytes LuYao.Toolkit/Resources/Toolbox.png | Bin 0 -> 26576 bytes LuYao.Toolkit/Resources/Update.png | Bin 0 -> 10155 bytes LuYao.Toolkit/Resources/find.png | Bin 0 -> 13922 bytes LuYao.Toolkit/Services/IGrowlTokenProvider.cs | 12 + LuYao.Toolkit/Services/ServiceProvider.cs | 128 + .../Services/TongjiServiceProvider.cs | 172 + LuYao.Toolkit/Tabs/Explorer/Index.xaml | 102 + LuYao.Toolkit/Tabs/Explorer/Index.xaml.cs | 17 + LuYao.Toolkit/Tabs/Navs/Index.xaml | 70 + LuYao.Toolkit/Tabs/Navs/Index.xaml.cs | 30 + LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItem.cs | 53 + .../Tabs/Rdp/Controls/RdpTabItemHeader.cs | 91 + LuYao.Toolkit/Tabs/Rdp/Index.xaml | 18 + LuYao.Toolkit/Tabs/Rdp/Index.xaml.cs | 50 + LuYao.Toolkit/Tabs/Session/Index.xaml | 126 + LuYao.Toolkit/Tabs/Session/Index.xaml.cs | 86 + LuYao.Toolkit/Themes/Basic/Converters.xaml | 15 + LuYao.Toolkit/Themes/Basic/Geometries.xaml | 5 + .../Themes/Basic/MaterialToGeometry.linq | 19 + LuYao.Toolkit/Themes/Controls/DataGrid.xaml | 11 + .../Themes/Controls/FormItemContainer.xaml | 26 + .../Themes/Controls/MasterDetailLayout.xaml | 38 + .../Themes/Controls/RdpTabItemHeader.xaml | 84 + .../Themes/Controls/TextBlockWithIconBox.xaml | 21 + LuYao.Toolkit/Themes/Controls/TextEditor.xaml | 22 + LuYao.Toolkit/Themes/Controls/Window.xaml | 8 + LuYao.Toolkit/Themes/Generic.txt | 10 + LuYao.Toolkit/Themes/Generic.xaml | 177 + LuYao.Toolkit/Themes/SkinDark.xaml | 6 + LuYao.Toolkit/Themes/SkinDefault.xaml | 5 + LuYao.Toolkit/Themes/Theme.xaml | 9 + LuYao.Toolkit/Themes/ThemeManager.cs | 52 + LuYao.Toolkit/Themes/XamlCombine.exe | Bin 0 -> 14336 bytes LuYao.Toolkit/ToolkitConfig.cs | 21 + .../Update/FindNewVersionDialog.xaml | 46 + .../Update/FindNewVersionDialog.xaml.cs | 34 + .../Update/FindNewVersionDialogViewModel.cs | 49 + LuYao.Toolkit/Update/Update.xaml | 49 + LuYao.Toolkit/Update/Update.xaml.cs | 29 + LuYao.Toolkit/Update/UpdateViewModel.cs | 195 + README.md | 1 + common.props | 5 + delete-bin-obj-folders.bat | 20 + libs/AxInterop.MSTSCLib.dll | Bin 0 -> 368640 bytes libs/Interop.MSTSCLib.dll | Bin 0 -> 755712 bytes libs/LuYao.Common.deps.json | 47 + libs/LuYao.Common.dll | Bin 0 -> 128000 bytes libs/LuYao.Common.pdb | Bin 0 -> 58844 bytes libs/LuYao.Common.xml | 534 ++ 480 files changed, 32451 insertions(+) create mode 100644 LuYao.Toolkit.Core/AppHelper.cs create mode 100644 LuYao.Toolkit.Core/BuildFunctionsReport.linq create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Converts.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.CrossBorder.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Encodings.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Files.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Gens.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Images.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Networks.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Other.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.Texts.cs create mode 100644 LuYao.Toolkit.Core/Channels/Channel.cs create mode 100644 LuYao.Toolkit.Core/Channels/FunctionItem.cs create mode 100644 "LuYao.Toolkit.Core/Channels/\351\207\215\346\226\260\347\224\237\346\210\220 Channel.linq" create mode 100644 LuYao.Toolkit.Core/Entities/ChannelItemSession.Biz.cs create mode 100644 LuYao.Toolkit.Core/Entities/ChannelItemSession.cs create mode 100644 LuYao.Toolkit.Core/Entities/Log/2022_07_27.log create mode 100644 LuYao.Toolkit.Core/Entities/Log/2022_08_04.log create mode 100644 LuYao.Toolkit.Core/Entities/Log/2022_08_08.log create mode 100644 LuYao.Toolkit.Core/Entities/Log/2022_09_13.log create mode 100644 LuYao.Toolkit.Core/Entities/Log/2023_01_14.log create mode 100644 LuYao.Toolkit.Core/Entities/LuYao.Toolkit.xml create mode 100644 LuYao.Toolkit.Core/Entities/PortProxyRule.Biz.cs create mode 100644 LuYao.Toolkit.Core/Entities/PortProxyRule.cs create mode 100644 LuYao.Toolkit.Core/Entities/RdpConnection.Biz.cs create mode 100644 LuYao.Toolkit.Core/Entities/RdpConnection.cs create mode 100644 LuYao.Toolkit.Core/Entities/RdpGroup.Biz.cs create mode 100644 LuYao.Toolkit.Core/Entities/RdpGroup.cs create mode 100644 LuYao.Toolkit.Core/Entities/ViewModelState.Biz.cs create mode 100644 LuYao.Toolkit.Core/Entities/ViewModelState.cs create mode 100644 LuYao.Toolkit.Core/Events/EntityCreatedEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/EntityDeletedEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/EntityUpdatedEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/OpenFunctionItemEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/OpenFunctionItemEventPayload.cs create mode 100644 LuYao.Toolkit.Core/Events/OpenTabEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/PreviewFileAsStringEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/PreviewFileAsStringEventPayload.cs create mode 100644 LuYao.Toolkit.Core/Events/ThemeChangedEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/ViewFileContentAsStringEvent.cs create mode 100644 LuYao.Toolkit.Core/Events/ViewFileContentAsStringEventPayload.cs create mode 100644 LuYao.Toolkit.Core/IClipboardAware.cs create mode 100644 LuYao.Toolkit.Core/IFileDragDropTarget.cs create mode 100644 LuYao.Toolkit.Core/IO/TempHelper.cs create mode 100644 LuYao.Toolkit.Core/Icons.cs create mode 100644 LuYao.Toolkit.Core/LuYao.Toolkit.Core.csproj create mode 100644 LuYao.Toolkit.Core/Regions/RegionNames.cs create mode 100644 LuYao.Toolkit.Core/Resources/AppResources.cs create mode 100644 LuYao.Toolkit.Core/Resources/AppResources.g.cs create mode 100644 LuYao.Toolkit.Core/Resources/BuildAppResources.linq create mode 100644 LuYao.Toolkit.Core/Resources/LuYao.Toolkit.dat create mode 100644 LuYao.Toolkit.Core/Resources/TestAppResources.linq create mode 100644 LuYao.Toolkit.Core/Services/ClipboardService.cs create mode 100644 LuYao.Toolkit.Core/Services/FileDialogService.cs create mode 100644 LuYao.Toolkit.Core/Services/FileService.cs create mode 100644 LuYao.Toolkit.Core/Services/GoogleService.cs create mode 100644 LuYao.Toolkit.Core/Services/IOpenFileDialog.cs create mode 100644 LuYao.Toolkit.Core/Services/ISaveFileDialog.cs create mode 100644 LuYao.Toolkit.Core/Services/IServiceProvider.cs create mode 100644 LuYao.Toolkit.Core/Services/IWatchToken.cs create mode 100644 LuYao.Toolkit.Core/Services/MessageBoxService.cs create mode 100644 LuYao.Toolkit.Core/Services/NotifyService.cs create mode 100644 LuYao.Toolkit.Core/Services/NullServiceProvider.cs create mode 100644 LuYao.Toolkit.Core/Services/ServiceProviderContainer.cs create mode 100644 LuYao.Toolkit.Core/Services/SoundService.cs create mode 100644 LuYao.Toolkit.Core/Services/TongjiService.cs create mode 100644 LuYao.Toolkit.Core/Services/WatchFileService.cs create mode 100644 LuYao.Toolkit.Core/Services/WatchToken.cs create mode 100644 LuYao.Toolkit.Core/Tabs/Navs/BuildFromWebsite.linq create mode 100644 LuYao.Toolkit.Core/Tabs/Navs/NavGroup.cs create mode 100644 LuYao.Toolkit.Core/Tabs/Navs/NavGroup.g.cs create mode 100644 LuYao.Toolkit.Core/Tabs/Navs/NavItem.cs create mode 100644 LuYao.Toolkit.Core/Tabs/Tab.cs create mode 100644 LuYao.Toolkit.Core/Themes/ThemeMode.cs create mode 100644 LuYao.Toolkit.Core/Update/UpdateConfig.cs create mode 100644 LuYao.Toolkit.Core/Validators/Extensions.cs create mode 100644 LuYao.Toolkit.Core/Validators/IPAddressValidator.cs create mode 100644 LuYao.Toolkit.Core/Validators/NetworkPortValidator.cs create mode 100644 LuYao.Toolkit.Core/Views/ViewNameAttribute.cs create mode 100644 LuYao.Toolkit.Core/Views/ViewNames.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao.Toolkit.Extensions.csproj create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdRunner.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdUtil.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/ProxyType.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AudioRedirection.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AuthenticationLevel.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/ColorDepth.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/DesktopSize.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AddRdpConnectionEvent.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AfterRdmSettingEvent.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEvent.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEventPayload.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdmSettingEvent.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEvent.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEventPayload.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/RdpConnectionChangedEvent.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/IRdpConnection.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/KeyboardRedirection.cs create mode 100644 LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/RdpConnectionValidator.cs create mode 100644 LuYao.Toolkit.Extensions/Newtonsoft/Json/Linq/JsonFlattenExtensions.cs create mode 100644 LuYao.Toolkit.Extensions/Youdao/YoudaoDictionary.cs create mode 100644 LuYao.Toolkit.Extensions/Youdao/YoudaoPhonetic.cs create mode 100644 LuYao.Toolkit.Extensions/Youdao/YoudaoSuggestItem.cs create mode 100644 LuYao.Toolkit.Extensions/Youdao/YoudaoWord.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/ColorConverterViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/HexConvertViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/IndentJsonViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/IndentXmlViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharp.res.js create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpDemo.res.json create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsv.res.js create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvDemo.res.json create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/PostmanConverterViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/RsaKeyConvertViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByJsViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByLiquidViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/TranslateXmlByXslViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/UnixTimestampViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Converts/YamlToJsonViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/CrossBorder/MercadoToWorldFirstViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/Ascii85EncodeViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/Base16EncodeViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/Base62EncodeViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/Base64EncodeViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/EncodingViewModelBase.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/HtmlEncodeViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/StringZipperViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Encodings/UrlEncodeViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Files/CrackingMdbPasswordViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Files/DetectFileEncodeingViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Files/HashFileViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Gens/GenAesKeyViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Gens/GenGuidViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Gens/GenLinesByRangeViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Gens/GenPasswordViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Gens/GenRsaKeyViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Gens/GenXCodeEntityViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Gens/RsaKeyFormat.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Images/Base64ToImageViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Images/GifSplitterViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Images/ImageToBase64ViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Images/ImageToIconViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/HttpProxyCheckerViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/IPLookupViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/PingViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/DetailViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/IndexViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItem.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItemValidator.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/RemoteDesktopManagerViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.GetAllTcpConnections.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/UrlAnalyzerViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/UserAgentParserViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Networks/WhoisViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/CsvReaderViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/FullHalfConvertViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/GoogleTranslateViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/HashCalculatorViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/LogReaderViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/RegexEvaluatorViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/TextJoinViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Channels/Texts/YoudaoDictionaryViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Drawing/IconFactory.cs create mode 100644 LuYao.Toolkit.ViewModels/LuYao.Toolkit.ViewModels.csproj create mode 100644 LuYao.Toolkit.ViewModels/MainWindowViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Rdm/RdpConnection.cs create mode 100644 LuYao.Toolkit.ViewModels/Rdm/RdpConnectionBase.cs create mode 100644 LuYao.Toolkit.ViewModels/Rdm/RdpConnectionCsvMap.cs create mode 100644 LuYao.Toolkit.ViewModels/Rdm/RdpGroup.cs create mode 100644 LuYao.Toolkit.ViewModels/Rdm/RdpGroupValidator.cs create mode 100644 LuYao.Toolkit.ViewModels/TabItem.cs create mode 100644 LuYao.Toolkit.ViewModels/Tabs/Explorer/IndexViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Tabs/Navs/IndexViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Tabs/Rdp/IndexViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/Tabs/Session/ChannelItemSessionItem.cs create mode 100644 LuYao.Toolkit.ViewModels/Tabs/Session/IndexViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/UI/DetailViewModelBase.cs create mode 100644 LuYao.Toolkit.ViewModels/UI/IMasterDetailViewModel.cs create mode 100644 LuYao.Toolkit.ViewModels/UI/MasterDetailViewModelBase.cs create mode 100644 LuYao.Toolkit.ViewModels/ViewModelBase.cs create mode 100644 LuYao.Toolkit.ViewModels/ViewStates/IViewStateHost.cs create mode 100644 LuYao.Toolkit.ViewModels/ViewStates/ViewStateBag.cs create mode 100644 LuYao.Toolkit.ViewModels/ViewStates/ViewStateItem.cs create mode 100644 LuYao.Toolkit.ViewModels/ViewStates/WatchViewStateAttribute.cs create mode 100644 LuYao.Toolkit.sln create mode 100644 LuYao.Toolkit/App.config create mode 100644 LuYao.Toolkit/App.ico create mode 100644 LuYao.Toolkit/App.xaml create mode 100644 LuYao.Toolkit/App.xaml.cs create mode 100644 LuYao.Toolkit/AppRegisterTypes.cs create mode 100644 LuYao.Toolkit/AppRegisterTypes.linq create mode 100644 LuYao.Toolkit/AppRegisterTypes.liquid create mode 100644 LuYao.Toolkit/AssemblyInfo.cs create mode 100644 LuYao.Toolkit/Attaches/ComboBoxAttach.cs create mode 100644 LuYao.Toolkit/Attaches/FileDragDropAttach.cs create mode 100644 LuYao.Toolkit/Attaches/TextBoxAttach.cs create mode 100644 LuYao.Toolkit/Attaches/UniformSpacingPanelAttach.cs create mode 100644 LuYao.Toolkit/Behaviors/AvalonEditBehaviour.cs create mode 100644 LuYao.Toolkit/Behaviors/ListBoxScrollIntoNewAddBehaviour.cs create mode 100644 LuYao.Toolkit/Behaviors/UIElementBehaviour.cs create mode 100644 LuYao.Toolkit/Channels/Converts/ColorConverter.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/ColorConverter.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/HexConvert.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/HexConvert.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/IndentJson.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/IndentJson.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/IndentXml.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/IndentXml.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Converts/YamlToJson.xaml create mode 100644 LuYao.Toolkit/Channels/Converts/YamlToJson.xaml.cs create mode 100644 LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml create mode 100644 LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml create mode 100644 LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml create mode 100644 LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml create mode 100644 LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml create mode 100644 LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml create mode 100644 LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Encodings/StringZipper.xaml create mode 100644 LuYao.Toolkit/Channels/Encodings/StringZipper.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml create mode 100644 LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml create mode 100644 LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Files/HashFile.xaml create mode 100644 LuYao.Toolkit/Channels/Files/HashFile.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Gens/GenAesKey.xaml create mode 100644 LuYao.Toolkit/Channels/Gens/GenAesKey.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Gens/GenGuid.xaml create mode 100644 LuYao.Toolkit/Channels/Gens/GenGuid.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml create mode 100644 LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Gens/GenPassword.xaml create mode 100644 LuYao.Toolkit/Channels/Gens/GenPassword.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml create mode 100644 LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml create mode 100644 LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Images/Base64ToImage.xaml create mode 100644 LuYao.Toolkit/Channels/Images/Base64ToImage.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Images/GifSplitter.xaml create mode 100644 LuYao.Toolkit/Channels/Images/GifSplitter.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Images/ImageToBase64.xaml create mode 100644 LuYao.Toolkit/Channels/Images/ImageToBase64.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Images/ImageToIcon.xaml create mode 100644 LuYao.Toolkit/Channels/Images/ImageToIcon.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/HttpProxyChecker.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/HttpProxyChecker.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/IPLookup.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/IPLookup.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/Ping.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/Ping.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Networks/Whois.xaml create mode 100644 LuYao.Toolkit/Channels/Networks/Whois.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Other/SystemToolkit.xaml create mode 100644 LuYao.Toolkit/Channels/Other/SystemToolkit.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/CsvReader.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/CsvReader.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/HashCalculator.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/HashCalculator.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/LogReader.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/LogReader.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/TextJoin.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/TextJoin.xaml.cs create mode 100644 LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml create mode 100644 LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml.cs create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Dark.xshd create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Default.xshd create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Defines.cs create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Dark.xshd create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Default.xshd create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Log.xshd create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Dark.xshd create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Default.xshd create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/HighlightingHelper.cs create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/JsonFoldingStrategy.cs create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/SearchPanel.xaml create mode 100644 LuYao.Toolkit/Controls/AvalonEdit/TruncateLongLinesElementGenerator.cs create mode 100644 LuYao.Toolkit/Controls/CodeEditor.Commands.cs create mode 100644 LuYao.Toolkit/Controls/CodeEditor.Context.cs create mode 100644 LuYao.Toolkit/Controls/CodeEditor.Highlighting.cs create mode 100644 LuYao.Toolkit/Controls/CodeEditor.xaml create mode 100644 LuYao.Toolkit/Controls/CodeEditor.xaml.cs create mode 100644 LuYao.Toolkit/Controls/DirectorySelector.xaml create mode 100644 LuYao.Toolkit/Controls/DirectorySelector.xaml.cs create mode 100644 LuYao.Toolkit/Controls/FileSelector.xaml create mode 100644 LuYao.Toolkit/Controls/FileSelector.xaml.cs create mode 100644 LuYao.Toolkit/Controls/FormItemContainer.cs create mode 100644 LuYao.Toolkit/Controls/MasterDetailLayout.cs create mode 100644 LuYao.Toolkit/Controls/TextBlockWithIconBox.cs create mode 100644 LuYao.Toolkit/Controls/Utils/Boxes.cs create mode 100644 LuYao.Toolkit/Controls/WindowToolbox.cs create mode 100644 LuYao.Toolkit/Converters/ByteCountToDisplaySizeConverter.cs create mode 100644 LuYao.Toolkit/Converters/DateTimeToRelativeConverter.cs create mode 100644 LuYao.Toolkit/Converters/EnumToBooleanConverter.cs create mode 100644 LuYao.Toolkit/Converters/EnumToDescriptionConverter.cs create mode 100644 LuYao.Toolkit/Converters/EnumToVisibilityConverter.cs create mode 100644 LuYao.Toolkit/Converters/FunctionBackgroundConverter.cs create mode 100644 LuYao.Toolkit/Converters/FunctionBackgroundConverter.linq create mode 100644 LuYao.Toolkit/Converters/LanguageCodeToNameConverter.cs create mode 100644 LuYao.Toolkit/Converters/PathToFileNameConverter.cs create mode 100644 LuYao.Toolkit/Converters/PathToIconConverter.cs create mode 100644 LuYao.Toolkit/Converters/RegexMatchPositionConverter.cs create mode 100644 LuYao.Toolkit/Converters/SingleLineConverter.cs create mode 100644 LuYao.Toolkit/Converters/StringIsNotNullOrEmptyConverter.cs create mode 100644 LuYao.Toolkit/Converters/TruncateStringConverter.cs create mode 100644 LuYao.Toolkit/Dialogs/DialogWindow.xaml create mode 100644 LuYao.Toolkit/Dialogs/DialogWindow.xaml.cs create mode 100644 LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml create mode 100644 LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml.cs create mode 100644 LuYao.Toolkit/Dialogs/MultiboxingDialogViewModel.cs create mode 100644 LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml create mode 100644 LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml.cs create mode 100644 LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml create mode 100644 LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml.cs create mode 100644 LuYao.Toolkit/Dialogs/PreviewFileAsStringDialogViewModel.cs create mode 100644 LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml create mode 100644 LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml.cs create mode 100644 LuYao.Toolkit/Dialogs/ToolkitSettingsDialogViewModel.cs create mode 100644 LuYao.Toolkit/Helpers/ComboBoxHelper.cs create mode 100644 LuYao.Toolkit/IO/FileType.cs create mode 100644 LuYao.Toolkit/IO/FileTypeExtensions.cs create mode 100644 LuYao.Toolkit/IO/FileTypeExtensionsAttribute.cs create mode 100644 LuYao.Toolkit/IPLookup.dat create mode 100644 LuYao.Toolkit/LuYao.Toolkit.csproj create mode 100644 LuYao.Toolkit/LuYao.Toolkit.csproj.user create mode 100644 LuYao.Toolkit/LuYaoCommands.cs create mode 100644 LuYao.Toolkit/MainWindow.xaml create mode 100644 LuYao.Toolkit/MainWindow.xaml.cs create mode 100644 LuYao.Toolkit/ProcessManager.cs create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml.cs create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdmSettingViewModel.cs create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml.cs create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailViewModel.cs create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml.cs create mode 100644 LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailViewModel.cs create mode 100644 LuYao.Toolkit/Rdm/IMsRdpClient.cs create mode 100644 LuYao.Toolkit/Rdm/IMsRdpClientHandler.cs create mode 100644 LuYao.Toolkit/Rdm/MsRdpClientFactory.cs create mode 100644 LuYao.Toolkit/Rdm/RdpConnectStatus.cs create mode 100644 LuYao.Toolkit/Rdm/RdpSession.Designer.cs create mode 100644 LuYao.Toolkit/Rdm/RdpSession.cs create mode 100644 LuYao.Toolkit/Rdm/RdpSession.resx create mode 100644 LuYao.Toolkit/Rdm/StatusChangedEventArgs.cs create mode 100644 LuYao.Toolkit/Resources/JetBrainsMono.ttf create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/calc.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/certmgr.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/cmd.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/credential.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/datetime.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/deskicon.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/devmgr.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/disks.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/env.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/eventlog.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/firewall.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/gpedit.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/hosts.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/ipv4.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/ipv6.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/killexplorer.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/netconnections.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/pcname.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/performance.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/perfsettings.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/powercfg.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/poweroff.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/powershell.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/program.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/proxy.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/reboot.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/recyclebin.png create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/regedit.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/resetexplorer.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/resmon.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/route.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/secpolicy.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/services.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/share.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/systeminfo.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/taskmgr.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/tasksch.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/uac.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/users.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/version.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/wallpaper.ico create mode 100644 LuYao.Toolkit/Resources/SystemToolkit/wsl.ico create mode 100644 LuYao.Toolkit/Resources/Toolbox.png create mode 100644 LuYao.Toolkit/Resources/Update.png create mode 100644 LuYao.Toolkit/Resources/find.png create mode 100644 LuYao.Toolkit/Services/IGrowlTokenProvider.cs create mode 100644 LuYao.Toolkit/Services/ServiceProvider.cs create mode 100644 LuYao.Toolkit/Services/TongjiServiceProvider.cs create mode 100644 LuYao.Toolkit/Tabs/Explorer/Index.xaml create mode 100644 LuYao.Toolkit/Tabs/Explorer/Index.xaml.cs create mode 100644 LuYao.Toolkit/Tabs/Navs/Index.xaml create mode 100644 LuYao.Toolkit/Tabs/Navs/Index.xaml.cs create mode 100644 LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItem.cs create mode 100644 LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItemHeader.cs create mode 100644 LuYao.Toolkit/Tabs/Rdp/Index.xaml create mode 100644 LuYao.Toolkit/Tabs/Rdp/Index.xaml.cs create mode 100644 LuYao.Toolkit/Tabs/Session/Index.xaml create mode 100644 LuYao.Toolkit/Tabs/Session/Index.xaml.cs create mode 100644 LuYao.Toolkit/Themes/Basic/Converters.xaml create mode 100644 LuYao.Toolkit/Themes/Basic/Geometries.xaml create mode 100644 LuYao.Toolkit/Themes/Basic/MaterialToGeometry.linq create mode 100644 LuYao.Toolkit/Themes/Controls/DataGrid.xaml create mode 100644 LuYao.Toolkit/Themes/Controls/FormItemContainer.xaml create mode 100644 LuYao.Toolkit/Themes/Controls/MasterDetailLayout.xaml create mode 100644 LuYao.Toolkit/Themes/Controls/RdpTabItemHeader.xaml create mode 100644 LuYao.Toolkit/Themes/Controls/TextBlockWithIconBox.xaml create mode 100644 LuYao.Toolkit/Themes/Controls/TextEditor.xaml create mode 100644 LuYao.Toolkit/Themes/Controls/Window.xaml create mode 100644 LuYao.Toolkit/Themes/Generic.txt create mode 100644 LuYao.Toolkit/Themes/Generic.xaml create mode 100644 LuYao.Toolkit/Themes/SkinDark.xaml create mode 100644 LuYao.Toolkit/Themes/SkinDefault.xaml create mode 100644 LuYao.Toolkit/Themes/Theme.xaml create mode 100644 LuYao.Toolkit/Themes/ThemeManager.cs create mode 100644 LuYao.Toolkit/Themes/XamlCombine.exe create mode 100644 LuYao.Toolkit/ToolkitConfig.cs create mode 100644 LuYao.Toolkit/Update/FindNewVersionDialog.xaml create mode 100644 LuYao.Toolkit/Update/FindNewVersionDialog.xaml.cs create mode 100644 LuYao.Toolkit/Update/FindNewVersionDialogViewModel.cs create mode 100644 LuYao.Toolkit/Update/Update.xaml create mode 100644 LuYao.Toolkit/Update/Update.xaml.cs create mode 100644 LuYao.Toolkit/Update/UpdateViewModel.cs create mode 100644 README.md create mode 100644 common.props create mode 100644 delete-bin-obj-folders.bat create mode 100644 libs/AxInterop.MSTSCLib.dll create mode 100644 libs/Interop.MSTSCLib.dll create mode 100644 libs/LuYao.Common.deps.json create mode 100644 libs/LuYao.Common.dll create mode 100644 libs/LuYao.Common.pdb create mode 100644 libs/LuYao.Common.xml diff --git a/LuYao.Toolkit.Core/AppHelper.cs b/LuYao.Toolkit.Core/AppHelper.cs new file mode 100644 index 0000000..2c6edf3 --- /dev/null +++ b/LuYao.Toolkit.Core/AppHelper.cs @@ -0,0 +1,19 @@ +using System; +using System.Reflection; + +namespace LuYao.Toolkit +{ + public static class AppHelper + { + public static Type ViewModelTypeResolver(Type viewType, params Assembly[] assemblies) + { + var name = $"{viewType.FullName}ViewModel"; + foreach (var assembly in assemblies) + { + var type = assembly.GetType(name); + if (type != null) return type; + } + return null; + } + } +} diff --git a/LuYao.Toolkit.Core/BuildFunctionsReport.linq b/LuYao.Toolkit.Core/BuildFunctionsReport.linq new file mode 100644 index 0000000..442684d --- /dev/null +++ b/LuYao.Toolkit.Core/BuildFunctionsReport.linq @@ -0,0 +1,43 @@ + + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\netstandard2.0\LuYao.Common.dll + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\netstandard2.0\LuYao.Toolkit.Core.dll + LuYao.Toolkit.Channels + HtmlAgilityPack + + +var channels = Channel.Channels; +var html = new HtmlAgilityPack.HtmlDocument(); +var body = html.CreateElement("body"); +html.DocumentNode.AppendChild(body); +body.AppendChild(html.CreateTextNode(Environment.NewLine)); +foreach (var item in channels) +{ + body.AppendChild(html.CreateComment("")); + body.AppendChild(html.CreateTextNode(Environment.NewLine)); + var h3 = html.CreateElement("h3"); + h3.AppendChild(html.CreateTextNode(item.Title)); + body.AppendChild(h3); + body.AppendChild(html.CreateTextNode(Environment.NewLine)); + body.AppendChild(html.CreateComment("")); + body.AppendChild(html.CreateTextNode(Environment.NewLine)); + + + body.AppendChild(html.CreateTextNode(Environment.NewLine)); + body.AppendChild(html.CreateComment("")); + body.AppendChild(html.CreateTextNode(Environment.NewLine)); + var ul = html.CreateElement("ul"); + body.AppendChild(ul); + foreach (var func in item.Items) + { + ul.AppendChild(html.CreateTextNode(Environment.NewLine)); + var li = html.CreateElement("li"); + li.AppendChild(html.CreateTextNode(func.Title)); + ul.AppendChild(li); + } + body.AppendChild(html.CreateTextNode(Environment.NewLine)); + body.AppendChild(html.CreateComment("")); + body.AppendChild(html.CreateTextNode(Environment.NewLine)); + body.AppendChild(html.CreateTextNode(Environment.NewLine)); +} + +html.DocumentNode.InnerHtml.Dump(); \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Channels/Channel.Converts.cs b/LuYao.Toolkit.Core/Channels/Channel.Converts.cs new file mode 100644 index 0000000..464eecc --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Converts.cs @@ -0,0 +1,213 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static ConvertsChannel Converts { get; } = new ConvertsChannel(); + public class ConvertsChannel : Channel + { + public FunctionItem UnixTimestamp { get; } + public FunctionItem RsaKeyConvert { get; } + public FunctionItem IndentJson { get; } + public FunctionItem IndentXml { get; } + public FunctionItem HexConvert { get; } + public FunctionItem TranslateXmlByXsl { get; } + public FunctionItem TranslateJsonByJs { get; } + public FunctionItem TranslateJsonByLiquid { get; } + public FunctionItem ColorConverter { get; } + public FunctionItem JsonToCSharp { get; } + public FunctionItem JsonToCsv { get; } + public FunctionItem PostmanConverter { get; } + public FunctionItem YamlToJson { get; } + + public ConvertsChannel() : base(nameof(Converts), "格式转换", Icons.CogTransfer) + { + this.UnixTimestamp = new FunctionItem(this, Guid.Parse("F9FF43A6C1C64DB4A296241061656868"), nameof(UnixTimestamp)) + { + Title = "Unix 时间戳转换", + Icon = Icons.Alarm, + Description = "Unix 时间戳转换可以把Unix时间转成北京时间。", + View = Views.ViewNames.Channels.Converters.UnixTimestamp, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "UnixShiJianChuoZhuanHuan", "UnixSJCZH" }, + }; + + this.RsaKeyConvert = new FunctionItem(this, Guid.Parse("E1760524FC2F4434AF2EFAA5184C046E"), nameof(RsaKeyConvert)) + { + Title = "RSA 密钥格式转换", + Icon = Icons.KeyChange, + Description = "RSA 私钥格式转换工具,支持 PKCS#1 、PKCS#8 私钥格式相互转换。", + View = Views.ViewNames.Channels.Converters.RsaKeyConvert, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "rsaMiYaoGeShiZhuanHuan", "RsaMYGSZH", "MYZH", "MiYaoZhuanHuan" }, + }; + + this.IndentJson = new FunctionItem(this, Guid.Parse("3D3FA103F8D84067BA0FDAE3DD356C6D"), nameof(IndentJson)) + { + Title = "JSON 格式化", + Icon = Icons.LanguageJavascript, + Description = "支持对 JSON 字符串美化、压缩、转义等功能。", + View = Views.ViewNames.Channels.Converters.IndentJson, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "JsonGeShiHua", "JsonGSH" }, + }; + + this.IndentXml = new FunctionItem(this, Guid.Parse("B8665B3060FC4BEF982F2D3C39764A69"), nameof(IndentXml)) + { + Title = "XML 格式化", + Icon = Icons.Xml, + Description = "支持对 XML 字符串美化、压缩等功能。", + View = Views.ViewNames.Channels.Converters.IndentXml, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "XmlGeShiHua", "XmlGSH" }, + }; + + this.HexConvert = new FunctionItem(this, Guid.Parse("BCA1AA0C8E5545B5A51D37116EF07BF7"), nameof(HexConvert)) + { + Title = "进制转换", + Icon = Icons.Numeric, + Description = "支持在2~36进制之间进行任意转换。", + View = Views.ViewNames.Channels.Converters.HexConvert, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "JinZhiZhuanHuan", "JZZH" }, + }; + + this.TranslateXmlByXsl = new FunctionItem(this, Guid.Parse("ECBBC27B95CE48CFB27E2E91FCE3C82F"), nameof(TranslateXmlByXsl)) + { + Title = "XSLT 转换", + Icon = Icons.Xml, + Description = "可以将 XML 数据档转换为另外的 XML 或其它格式,如 HTML 网页,纯文字。", + View = Views.ViewNames.Channels.Converters.TranslateXmlByXsl, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "XSLTZhuanHuan", "XSLTZH" }, + }; + + this.TranslateJsonByJs = new FunctionItem(this, Guid.Parse("F732A4D50D3C4A87AD681DD2D75B6C26"), nameof(TranslateJsonByJs)) + { + Title = "JSON 转换", + Icon = Icons.LanguageJavascript, + Description = "可以将 JSON 数据档通过 JavaScript 转换为另外的 JSON 或其它格式。", + View = Views.ViewNames.Channels.Converters.TranslateJsonByJs, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "JSONZhuanHuan", "JSONZH" }, + }; + + this.TranslateJsonByLiquid = new FunctionItem(this, Guid.Parse("F18B557AEE614BAABE2942F98570C42F"), nameof(TranslateJsonByLiquid)) + { + Title = "Liquid 转换", + Icon = Icons.LiquidSpot, + Description = "可以将 JSON 数据档通过 Liquid 转换为其它格式。", + View = Views.ViewNames.Channels.Converters.TranslateJsonByLiquid, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "LiquidZhuanHuan", "LiquidZH" }, + }; + + this.ColorConverter = new FunctionItem(this, Guid.Parse("B528E5B0C66548BAB5CBB8D210312E8C"), nameof(ColorConverter)) + { + Title = "RGB 颜色转换", + Icon = Icons.ColorHelper, + Description = "RGB颜色和16进制色互转。", + View = Views.ViewNames.Channels.Converters.ColorConverter, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "RGBYanSeZhuanHuan", "RGBYSZH" }, + }; + + this.JsonToCSharp = new FunctionItem(this, Guid.Parse("6CBE22DCF367401CAFE331CA5B3843DA"), nameof(JsonToCSharp)) + { + Title = "JSON 转 C# 实体类", + Icon = Icons.AccountConvert, + Description = "将 JSON 对象转换为相对应的 C# 实体类", + View = Views.ViewNames.Channels.Converters.JsonToCSharp, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "JSONZhuanC#ShiTiLei", "JSONZCSTL" }, + }; + + this.JsonToCsv = new FunctionItem(this, Guid.Parse("0A62665513684D9DB560A4C5E1BD3EFE"), nameof(JsonToCsv)) + { + Title = "JSON 转 CSV", + Icon = Icons.MicrosoftExcel, + Description = "将 JSON 转换为 CSV 数据", + View = Views.ViewNames.Channels.Converters.JsonToCsv, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "JSONZhuanCSV", "JSONZCSV" }, + }; + + this.PostmanConverter = new FunctionItem(this, Guid.Parse("AC92D3CB1CEA46D2A263401B2D8E2577"), nameof(PostmanConverter)) + { + Title = "Postman 数据转换", + Icon = Icons.Web, + Description = "Postman 参数格式互转", + View = Views.ViewNames.Channels.Converters.PostmanConverter, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "PostmanShuJuZhuanHuan", "PostmanSJZH" }, + }; + + this.YamlToJson = new FunctionItem(this, Guid.Parse("78C9651CF6E5470E801CAE043ADBC0CB"), nameof(YamlToJson)) + { + Title = "Yaml 转 Json", + Icon = Icons.CodeJson, + Description = "Yaml 和 Json 格式转换", + View = Views.ViewNames.Channels.Converters.YamlToJson, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "YamlZhuanJson", "Yaml", "Json" }, + }; + + this.Items = new[] + { + UnixTimestamp, + RsaKeyConvert, + IndentJson, + IndentXml, + HexConvert, + TranslateXmlByXsl, + TranslateJsonByJs, + TranslateJsonByLiquid, + ColorConverter, + JsonToCSharp, + JsonToCsv, + PostmanConverter, + YamlToJson, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.CrossBorder.cs b/LuYao.Toolkit.Core/Channels/Channel.CrossBorder.cs new file mode 100644 index 0000000..c0a170d --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.CrossBorder.cs @@ -0,0 +1,33 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static CrossBorderChannel CrossBorder { get; } = new CrossBorderChannel(); + public class CrossBorderChannel : Channel + { + public FunctionItem MercadoToWorldFirst { get; } + + public CrossBorderChannel() : base(nameof(CrossBorder), "跨境电商", Icons.Shopping) + { + this.MercadoToWorldFirst = new FunctionItem(this, Guid.Parse("846209761E14421BB59B068225443F31"), nameof(MercadoToWorldFirst)) + { + Title = "美客多转万里汇", + Icon = Icons.MicrosoftExcel, + Description = "将美客多订单报表转为万里汇所需 Excel", + View = Views.ViewNames.Channels.CrossBorder.MercadoToWorldFirst, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "MeiKeDuo", "MKD", "Mercado", "WanLiHui", "WLH" }, + }; + + this.Items = new[] + { + MercadoToWorldFirst, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.Encodings.cs b/LuYao.Toolkit.Core/Channels/Channel.Encodings.cs new file mode 100644 index 0000000..8e906ce --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Encodings.cs @@ -0,0 +1,123 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static EncodingsChannel Encodings { get; } = new EncodingsChannel(); + public class EncodingsChannel : Channel + { + public FunctionItem StringZipper { get; } + public FunctionItem UrlEncode { get; } + public FunctionItem HtmlEncode { get; } + public FunctionItem Ascii85Encode { get; } + public FunctionItem Base64Encode { get; } + public FunctionItem Base62Encode { get; } + public FunctionItem Base16Encode { get; } + + public EncodingsChannel() : base(nameof(Encodings), "编码互转", Icons.Altimeter) + { + this.StringZipper = new FunctionItem(this, Guid.Parse("C20499BE2E874AB193B14E59B97A84B4"), nameof(StringZipper)) + { + Title = "文本压缩", + Icon = Icons.Package, + Description = "将字符串压缩后再进行编码,以减少带宽占用。", + View = Views.ViewNames.Channels.Encodings.StringZipper, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "WenBenYaSuo", "WBYS" }, + }; + + this.UrlEncode = new FunctionItem(this, Guid.Parse("6206D4C38FAC4750848595D22DE565E1"), nameof(UrlEncode)) + { + Title = "URL 编码", + Icon = Icons.Web, + Description = "为了让包含中文的URL可以使用,您可以使用本工具对中文进行UrlEncode编码。", + View = Views.ViewNames.Channels.Encodings.UrlEncode, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "URLBianMa", "URLBM" }, + }; + + this.HtmlEncode = new FunctionItem(this, Guid.Parse("8ADFDB01B0C742408E405999EEA813B7"), nameof(HtmlEncode)) + { + Title = "HTML 编码", + Icon = Icons.LanguageHtml5, + Description = "对html字符串进行HtmlEncode编码与HtmlDecode解码。", + View = Views.ViewNames.Channels.Encodings.HtmlEncode, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "HTMLBianMa", "HTMLBM" }, + }; + + this.Ascii85Encode = new FunctionItem(this, Guid.Parse("BAE9969570D64055AAE5B357BF42E804"), nameof(Ascii85Encode)) + { + Title = "ASCII85 编码", + Icon = Icons.Altimeter, + Description = "ASCII85 编码解码,可以指定字符串编码。", + View = Views.ViewNames.Channels.Encodings.Ascii85Encode, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "ASCII85BianMa", "ASCII85BM" }, + }; + + this.Base64Encode = new FunctionItem(this, Guid.Parse("ED00FB68A01E458C9122EE976D0036AA"), nameof(Base64Encode)) + { + Title = "BASE64 编码", + Icon = Icons.Altimeter, + Description = "Base64 编码解码,可以指定字符串编码。", + View = Views.ViewNames.Channels.Encodings.Base64Encode, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "Base64BianMa", "Base64BM" }, + }; + + this.Base62Encode = new FunctionItem(this, Guid.Parse("3B78E3A4A1E749CBA151B24C147ECAC2"), nameof(Base62Encode)) + { + Title = "BASE62 编码", + Icon = Icons.Altimeter, + Description = "Base62 编码解码,可以指定字符串编码。", + View = Views.ViewNames.Channels.Encodings.Base62Encode, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "Base62BianMa", "Base62BM" }, + }; + + this.Base16Encode = new FunctionItem(this, Guid.Parse("B018FD5E66374039A5A37BB3F57F3630"), nameof(Base16Encode)) + { + Title = "BASE16 编码", + Icon = Icons.Altimeter, + Description = "Base16 编码解码,可以指定字符串编码。", + View = Views.ViewNames.Channels.Encodings.Base16Encode, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "Base16BianMa", "Base16BM" }, + }; + + this.Items = new[] + { + StringZipper, + UrlEncode, + HtmlEncode, + Ascii85Encode, + Base64Encode, + Base62Encode, + Base16Encode, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.Files.cs b/LuYao.Toolkit.Core/Channels/Channel.Files.cs new file mode 100644 index 0000000..f3fceaf --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Files.cs @@ -0,0 +1,48 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static FilesChannel Files { get; } = new FilesChannel(); + public class FilesChannel : Channel + { + public FunctionItem DetectFileEncodeing { get; } + public FunctionItem HashFile { get; } + + public FilesChannel() : base(nameof(Files), "文件处理", Icons.File) + { + this.DetectFileEncodeing = new FunctionItem(this, Guid.Parse("5AA7E19C47DE41D7BC7FE0C8FD2EF56F"), nameof(DetectFileEncodeing)) + { + Title = "编码识别", + Icon = Icons.TextRecognition, + Description = "文本文件编码识别", + View = Views.ViewNames.Channels.Files.DetectFileEncodeing, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "BianMaShiBie", "BMSB", "Encoding" }, + }; + + this.HashFile = new FunctionItem(this, Guid.Parse("D7CE1BB56ECA4DBA952B2BE96DD8E967"), nameof(HashFile)) + { + Title = "文件校验", + Icon = Icons.HandSaw, + Description = "获取文件校验值", + View = Views.ViewNames.Channels.Files.HashFile, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "WenJianJiaoYan", "WJJY", "Hash", "MD5", "SHA1", "SHA256", "SHA512" }, + }; + + this.Items = new[] + { + DetectFileEncodeing, + HashFile, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.Gens.cs b/LuYao.Toolkit.Core/Channels/Channel.Gens.cs new file mode 100644 index 0000000..a578e14 --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Gens.cs @@ -0,0 +1,108 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static GensChannel Gens { get; } = new GensChannel(); + public class GensChannel : Channel + { + public FunctionItem GenGuid { get; } + public FunctionItem GenPassword { get; } + public FunctionItem GenAesKey { get; } + public FunctionItem GenRsaKey { get; } + public FunctionItem GenXCodeEntity { get; } + public FunctionItem GenLinesByRange { get; } + + public GensChannel() : base(nameof(Gens), "数据生成", Icons.Refresh) + { + this.GenGuid = new FunctionItem(this, Guid.Parse("E135CA55B356496D910B7A95BBC552D3"), nameof(GenGuid)) + { + Title = "生成 GUID", + Icon = Icons.Earth, + Description = "生成随机 Guid", + View = Views.ViewNames.Channels.Gens.GenGuid, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "ShengChengGuid", "SCGuid" }, + }; + + this.GenPassword = new FunctionItem(this, Guid.Parse("CFD68DBC4D054968A9C859FA358F2152"), nameof(GenPassword)) + { + Title = "生成密码", + Icon = Icons.FormTextboxPassword, + Description = "生成随机密码", + View = Views.ViewNames.Channels.Gens.GenPassword, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "ShengChengMiMa", "SCMM" }, + }; + + this.GenAesKey = new FunctionItem(this, Guid.Parse("23A02AD776D74772B88919707B4E00F3"), nameof(GenAesKey)) + { + Title = "生成 AES 密钥", + Icon = Icons.Key, + Description = "生成随机 AES 密钥", + View = Views.ViewNames.Channels.Gens.GenAesKey, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "ShengChengAesMiYao", "SCAESMY" }, + }; + + this.GenRsaKey = new FunctionItem(this, Guid.Parse("A5DB45C57100451F8847AA79C9EDEC9F"), nameof(GenRsaKey)) + { + Title = "生成 RSA 密钥", + Icon = Icons.KeyPlus, + Description = "生成随机 RSA 密钥", + View = Views.ViewNames.Channels.Gens.GenRsaKey, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "ShengChengRsaMiYao", "SCRSAMY" }, + }; + + this.GenXCodeEntity = new FunctionItem(this, Guid.Parse("629FE6AC348840459F46FB59E195FA47"), nameof(GenXCodeEntity)) + { + Title = "生成 XCode 实体", + Icon = Icons.Clover, + Description = "通过 XML 文件生成 XCode 实体", + View = Views.ViewNames.Channels.Gens.GenXCodeEntity, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "ShengChengXCodeShiTi", "SCXCodeST" }, + }; + + this.GenLinesByRange = new FunctionItem(this, Guid.Parse("E8972DB2AECD4C88B2EB3038AF7CF835"), nameof(GenLinesByRange)) + { + Title = "模板批量生成", + Icon = Icons.FormatLineStyle, + Description = "通过一个数字范围和字符串模板生成一批字符串,常用于分表系统的迁移语句编写。", + View = Views.ViewNames.Channels.Gens.GenLinesByRange, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "MuBanPiLiangShengCheng", "MBPLSC" }, + }; + + this.Items = new[] + { + GenGuid, + GenPassword, + GenAesKey, + GenRsaKey, + GenXCodeEntity, + GenLinesByRange, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.Images.cs b/LuYao.Toolkit.Core/Channels/Channel.Images.cs new file mode 100644 index 0000000..f73ce60 --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Images.cs @@ -0,0 +1,78 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static ImagesChannel Images { get; } = new ImagesChannel(); + public class ImagesChannel : Channel + { + public FunctionItem ImageToIcon { get; } + public FunctionItem GifSplitter { get; } + public FunctionItem ImageToBase64 { get; } + public FunctionItem Base64ToImage { get; } + + public ImagesChannel() : base(nameof(Images), "图片处理", Icons.Image) + { + this.ImageToIcon = new FunctionItem(this, Guid.Parse("5CF336BBB79548F88231ECFCACC0918F"), nameof(ImageToIcon)) + { + Title = "图片转图标", + Icon = Icons.Emoticon, + Description = "将图片转为 Icon 格式", + View = Views.ViewNames.Channels.Images.ImageToIcon, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "TuPianZhuanTuBiao", "TPZTB" }, + }; + + this.GifSplitter = new FunctionItem(this, Guid.Parse("7D335ED73BCA47C9A57E2E08BC760268"), nameof(GifSplitter)) + { + Title = "Gif 分割", + Icon = Icons.FileGifBox, + Description = "分割gif图片,可用于gif图片的打印,制作翻页动画册子。", + View = Views.ViewNames.Channels.Images.GifSplitter, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "GifFenGe", "GIFFG" }, + }; + + this.ImageToBase64 = new FunctionItem(this, Guid.Parse("43FB2B33182A486E9F75533DF81B363E"), nameof(ImageToBase64)) + { + Title = "图片转 Base64", + Icon = Icons.FileImageOutline, + Description = "图片转换成base64编码工具", + View = Views.ViewNames.Channels.Images.ImageToBase64, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "TuPianZhuanBase64", "TPZBase64", "DataUrl" }, + }; + + this.Base64ToImage = new FunctionItem(this, Guid.Parse("653EC3972B5B4697B2F663D7F36497A8"), nameof(Base64ToImage)) + { + Title = "Base64 转图片", + Icon = Icons.FileImageOutline, + Description = "Base64编码图片还原为图片的工具", + View = Views.ViewNames.Channels.Images.Base64ToImage, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "Base64ZhuanTuPian", "Base64ZTP", "DataUrl" }, + }; + + this.Items = new[] + { + ImageToIcon, + GifSplitter, + ImageToBase64, + Base64ToImage, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.Networks.cs b/LuYao.Toolkit.Core/Channels/Channel.Networks.cs new file mode 100644 index 0000000..a98fada --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Networks.cs @@ -0,0 +1,153 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static NetworksChannel Networks { get; } = new NetworksChannel(); + public class NetworksChannel : Channel + { + public FunctionItem IPLookup { get; } + public FunctionItem Ping { get; } + public FunctionItem Whois { get; } + public FunctionItem UserAgentParser { get; } + public FunctionItem UrlAnalyzer { get; } + public FunctionItem RemoteDesktopManager { get; } + public FunctionItem TrafficMonitor { get; } + public FunctionItem HttpProxyChecker { get; } + public FunctionItem PortProxy { get; } + + public NetworksChannel() : base(nameof(Networks), "网络工具", Icons.Magnet) + { + this.IPLookup = new FunctionItem(this, Guid.Parse("AC449F65DF5D49D086604AAC55E3101D"), nameof(IPLookup)) + { + Title = "IP 查询", + Icon = Icons.IpNetwork, + Description = "本工具可以获取当前的IP地址,输入IP可以查询对应的归属地、地理位置信息。可以精确到运营商和国家、省市级别。", + View = Views.ViewNames.Channels.Networks.IPLookup, + IsNew = false, + UseNetwork = true, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "IPChaXun", "IPCX" }, + }; + + this.Ping = new FunctionItem(this, Guid.Parse("11561511804445D6948691190488EF7E"), nameof(Ping)) + { + Title = "Ping 检测", + Icon = Icons.Speedometer, + Description = "通过该工具可以 Ping 服务器以检测服务器响应速度。", + View = Views.ViewNames.Channels.Networks.Ping, + IsNew = false, + UseNetwork = true, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "PINGJianCe", "PINGJC" }, + }; + + this.Whois = new FunctionItem(this, Guid.Parse("CD05842B0AAF487DA23EBD4CEE84EABC"), nameof(Whois)) + { + Title = "Whois 信息查询", + Icon = Icons.CardAccountDetailsOutline, + Description = "域名注册信息查询", + View = Views.ViewNames.Channels.Networks.Whois, + IsNew = false, + UseNetwork = true, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "WhoisXinXiChaXun", "WhoisXXCX" }, + }; + + this.UserAgentParser = new FunctionItem(this, Guid.Parse("6514BB9F8DD34418A5167F6C89473469"), nameof(UserAgentParser)) + { + Title = "User Agent 解析", + Icon = Icons.Web, + Description = "通过UA分析出浏览器名称、浏览器版本号、浏览器渲染引擎、浏览器操作系统等信息。", + View = Views.ViewNames.Channels.Networks.UserAgentParser, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "UserAgentJieXi", "UserAgentJieXi", "UAJX" }, + }; + + this.UrlAnalyzer = new FunctionItem(this, Guid.Parse("2E9F578A754E459F9216A670AEE26DE0"), nameof(UrlAnalyzer)) + { + Title = "URL 分析器", + Icon = Icons.Abacus, + Description = "获取一个 URL 地址的详细信息", + View = Views.ViewNames.Channels.Networks.UrlAnalyzer, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "URLFenXiQi", "URLFXQ" }, + }; + + this.RemoteDesktopManager = new FunctionItem(this, Guid.Parse("0B8C2033F49D4C28A1D488AE256EBD2D"), nameof(RemoteDesktopManager)) + { + Title = "远程桌面", + Icon = Icons.RemoteDesktop, + Description = "简易远程桌面管理工具", + View = Views.ViewNames.Channels.Networks.RemoteDesktopManager, + IsNew = false, + UseNetwork = true, + IsDocument = false, + Multiboxing = false, + Keywords = new string[] { "YuanChengZhuoMian", "YCZM", "RDP", "RDO", "RDM" }, + }; + + this.TrafficMonitor = new FunctionItem(this, Guid.Parse("A16B2AD7913146FAB522B5147AE0222E"), nameof(TrafficMonitor)) + { + Title = "流量监控", + Icon = Icons.Wan, + Description = "查看程序的网络流量", + View = Views.ViewNames.Channels.Networks.TrafficMonitor, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = false, + Keywords = new string[] { "LiuLiangJianKong", "LLJK" }, + }; + + this.HttpProxyChecker = new FunctionItem(this, Guid.Parse("3DC849233B1E4FF1A8ADA09ECB30933B"), nameof(HttpProxyChecker)) + { + Title = "HTTP 代理检测", + Icon = Icons.WebCheck, + Description = "测试 HTTP 代理服务器是否正常工作", + View = Views.ViewNames.Channels.Networks.HttpProxyChecker, + IsNew = false, + UseNetwork = true, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "HTTPDaiLiJianCe", "HTTPDLJC", "HttpProxyChecker" }, + }; + + this.PortProxy = new FunctionItem(this, Guid.Parse("D980814A28E94C7E930A3021EDD0D14C"), nameof(PortProxy)) + { + Title = "端口转发", + Icon = Icons.Trackpad, + Description = "端口转发配置工具,基于 netsh 。", + View = Views.ViewNames.Channels.Networks.PortProxy.Index, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = false, + Keywords = new string[] { "DuanKouZhuanFa", "DKZF", "PORT", "PROXY", "NETSH" }, + }; + + this.Items = new[] + { + IPLookup, + Ping, + Whois, + UserAgentParser, + UrlAnalyzer, + RemoteDesktopManager, + TrafficMonitor, + HttpProxyChecker, + PortProxy, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.Other.cs b/LuYao.Toolkit.Core/Channels/Channel.Other.cs new file mode 100644 index 0000000..e631be8 --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Other.cs @@ -0,0 +1,33 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static OtherChannel Other { get; } = new OtherChannel(); + public class OtherChannel : Channel + { + public FunctionItem SystemToolkit { get; } + + public OtherChannel() : base(nameof(Other), "其他工具", Icons.Puzzle) + { + this.SystemToolkit = new FunctionItem(this, Guid.Parse("D8F1C1B5B3674EB6AE1BDB05EF15BC16"), nameof(SystemToolkit)) + { + Title = "系统工具", + Icon = Icons.MicrosoftWindows, + Description = "Windows 系统工具", + View = Views.ViewNames.Channels.Other.SystemToolkit, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = false, + Keywords = new string[] { "XiTongGongJu", "XTGJ" }, + }; + + this.Items = new[] + { + SystemToolkit, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.Texts.cs b/LuYao.Toolkit.Core/Channels/Channel.Texts.cs new file mode 100644 index 0000000..44a5ae5 --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.Texts.cs @@ -0,0 +1,138 @@ +using System; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static TextsChannel Texts { get; } = new TextsChannel(); + public class TextsChannel : Channel + { + public FunctionItem GoogleTranslate { get; } + public FunctionItem TextJoin { get; } + public FunctionItem LogReader { get; } + public FunctionItem FullHalfConvert { get; } + public FunctionItem CsvReader { get; } + public FunctionItem RegexEvaluator { get; } + public FunctionItem YoudaoDictionary { get; } + public FunctionItem HashCalculator { get; } + + public TextsChannel() : base(nameof(Texts), "文字工具", Icons.FormatText) + { + this.GoogleTranslate = new FunctionItem(this, Guid.Parse("FDFA4822F6C94B6DAC9A2C7AF37DC407"), nameof(GoogleTranslate)) + { + Title = "谷歌翻译", + Icon = Icons.Translate, + Description = "Google 的免费翻译服务可提供简体中文和另外 100 多种语言之间的互译功能。", + View = Views.ViewNames.Channels.Texts.GoogleTranslate, + IsNew = false, + UseNetwork = true, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "GuGeFanYi", "GGFY" }, + }; + + this.TextJoin = new FunctionItem(this, Guid.Parse("E6D432D4FA63469F983B3DC2D7A08A1B"), nameof(TextJoin)) + { + Title = "多行拼接", + Icon = Icons.FormatLineStyle, + Description = "多用于拼接 SQL 中的 IN 语句参数", + View = Views.ViewNames.Channels.Texts.TextJoin, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "DuoHangPinJie", "DHPJ" }, + }; + + this.LogReader = new FunctionItem(this, Guid.Parse("6CF8B81E3D7541C7B4D50069AA6DC29D"), nameof(LogReader)) + { + Title = "日志查看器", + Icon = Icons.SearchWeb, + Description = "用于查看不断输出的日志", + View = Views.ViewNames.Channels.Texts.LogReader, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "RiZhiChaKanQi", "RZCKQ" }, + }; + + this.FullHalfConvert = new FunctionItem(this, Guid.Parse("7571EB70555C41428343CC086DCB5A33"), nameof(FullHalfConvert)) + { + Title = "全角半角转换", + Icon = Icons.CircleHalfFull, + Description = "全角占两个字节,全角是一种电脑字符,且每个全角字符占用两个标准字符(或半角字符)位置。半角占一个字节,全角半角转换工具,很方便的将全角字符和半角字符相互切换。", + View = Views.ViewNames.Channels.Texts.FullHalfConvert, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "QuanJiaoBanJiaoZhuanHuan", "QJBJZH", "BanJiaoZhuanHuan", "QuanJiaoZhuanHuan", "QJZH", "BJZH" }, + }; + + this.CsvReader = new FunctionItem(this, Guid.Parse("7571EB70555C41428343CC086DCB5A33"), nameof(CsvReader)) + { + Title = "CSV 查看器", + Icon = Icons.MicrosoftExcel, + Description = "用于预览 CSV 文件", + View = Views.ViewNames.Channels.Texts.CsvReader, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "CSVChaKanQi", "CSVCKQ" }, + }; + + this.RegexEvaluator = new FunctionItem(this, Guid.Parse("7349B31A354440B4AD76C677D90D8D04"), nameof(RegexEvaluator)) + { + Title = "正则测试", + Icon = Icons.Regex, + Description = "正则表达式测试工具", + View = Views.ViewNames.Channels.Texts.RegexEvaluator, + IsNew = false, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "ZhengZeCeShi", "ZZCS", "regex" }, + }; + + this.YoudaoDictionary = new FunctionItem(this, Guid.Parse("6D80E543C4274281BF7BB46ACDF54A87"), nameof(YoudaoDictionary)) + { + Title = "有道词典", + Icon = Icons.Bookshelf, + Description = "英汉词典", + View = Views.ViewNames.Channels.Texts.YoudaoDictionary, + IsNew = false, + UseNetwork = true, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "YouDaoCiDian", "YDCD" }, + }; + + this.HashCalculator = new FunctionItem(this, Guid.Parse("4ABD65D372644199B78B6F2F60C829E8"), nameof(HashCalculator)) + { + Title = "哈希计算器", + Icon = Icons.Calculator, + Description = "计算文本的哈希值,支持 HMAC 算法。", + View = Views.ViewNames.Channels.Texts.HashCalculator, + IsNew = true, + UseNetwork = false, + IsDocument = false, + Multiboxing = true, + Keywords = new string[] { "HaXiJiSuanQi", "HXJSQ", "MD5", "SHA1", "HMAC" }, + }; + + this.Items = new[] + { + GoogleTranslate, + TextJoin, + LogReader, + FullHalfConvert, + CsvReader, + RegexEvaluator, + YoudaoDictionary, + HashCalculator, + }; + } + } +} diff --git a/LuYao.Toolkit.Core/Channels/Channel.cs b/LuYao.Toolkit.Core/Channels/Channel.cs new file mode 100644 index 0000000..06df482 --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/Channel.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; + +namespace LuYao.Toolkit.Channels; + +public partial class Channel +{ + public static bool TryGetItem(Guid id, out FunctionItem item) + { + return FunctionItem._maps.TryGetValue(id, out item); + } + static Channel() + { + Channels = new Channel[] + { + Gens, + Networks, + Converts, + Texts, + Encodings, + Files, + Images, + CrossBorder, + Other + }; + } + private Channel(string name, string title, string icon) + { + Name = name; + Title = title; + Icon = icon; + } + + public string Name { get; } + public string Title { get; } + public string Icon { get; } + public IReadOnlyList Items { get; private set; } + public static IReadOnlyList Channels { get; } +} diff --git a/LuYao.Toolkit.Core/Channels/FunctionItem.cs b/LuYao.Toolkit.Core/Channels/FunctionItem.cs new file mode 100644 index 0000000..63a9866 --- /dev/null +++ b/LuYao.Toolkit.Core/Channels/FunctionItem.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; + +namespace LuYao.Toolkit.Channels; + +public partial class FunctionItem +{ + internal static readonly Dictionary _maps = new Dictionary(); + internal static readonly NameValueCollection _keywords = new NameValueCollection(); + public FunctionItem(Channel channel, Guid id, string name) + { + lock (_maps) _maps[id] = this; + Channel = channel; + Id = id; + Name = name; + } + public Channel Channel { get; } + public Guid Id { get; } + public string Name { get; } + public string Title { get; internal set; } + public string Icon { get; internal set; } + public string Description { get; internal set; } + public string View { get; internal set; } + public bool IsNew { get; internal set; } + public bool UseNetwork { get; internal set; } + public bool IsDocument { get; internal set; } + public bool Multiboxing { get; internal set; } = true; + public IReadOnlyCollection Keywords { get; internal set; } + public static IReadOnlyList Search(string keyword, int limit) + { + if (string.IsNullOrWhiteSpace(keyword)) return Array.Empty(); + if (_keywords.Count == 0) + { + lock (_keywords) + { + if (_keywords.Count == 0) + { + foreach (var item in _maps.Values) + { + var id = item.Id.ToString(); + _keywords.Add(item.Title, id); + if (item.Keywords == null || item.Keywords.Count == 0) continue; + foreach (var k in item.Keywords) + { + _keywords.Add(k, id); + } + } + } + } + } + var keys = new List(); + foreach (var key in _keywords.AllKeys) + { + if (key.IndexOf(keyword, StringComparison.InvariantCultureIgnoreCase) < 0) continue; + keys.Add(key); + } + if (keys.Count <= 0) return Array.Empty(); + keys.Sort(static (x, y) => x.Length - y.Length); + var ret = new List(keys.Count); + var set = new SortedSet(); + foreach (var key in keys) + { + if (ret.Count >= limit) break; + foreach (var id in _keywords.GetValues(key)) + { + if (Channel.TryGetItem(Guid.Parse(id), out var item)) + { + if (set.Contains(item.Id)) continue; + ret.Add(item); + set.Add(item.Id); + } + } + } + return ret; + } +} diff --git "a/LuYao.Toolkit.Core/Channels/\351\207\215\346\226\260\347\224\237\346\210\220 Channel.linq" "b/LuYao.Toolkit.Core/Channels/\351\207\215\346\226\260\347\224\237\346\210\220 Channel.linq" new file mode 100644 index 0000000..bb49845 --- /dev/null +++ "b/LuYao.Toolkit.Core/Channels/\351\207\215\346\226\260\347\224\237\346\210\220 Channel.linq" @@ -0,0 +1,85 @@ + + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\net7.0\LuYao.Common.dll + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\net7.0\LuYao.Common.pdb + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\net7.0\LuYao.Common.xml + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\net7.0\LuYao.Toolkit.Core.deps.json + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\net7.0\LuYao.Toolkit.Core.dll + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\net7.0\LuYao.Toolkit.Core.pdb + LuYao.Toolkit.Channels + Newtonsoft.Json + + +void Main() +{ + //Channel.Channels.Dump(); + var dir = Path.GetDirectoryName(Util.CurrentQueryPath); + foreach (var chl in Channel.Channels) + { + var fn = Path.Combine(dir, $"Channel.{chl.Name}.cs"); + Console.WriteLine(fn); + var sb = new StringBuilder(); + sb.AppendLine("using System;"); + sb.AppendLine(); + sb.AppendLine("namespace LuYao.Toolkit.Channels;"); + sb.AppendLine(); + sb.AppendLine("public partial class Channel"); + sb.AppendLine("{"); + sb.AppendFormat(" public static {0}Channel {0} {{ get; }} = new {0}Channel();", chl.Name); + sb.AppendLine(); + + sb.AppendLine($" public class {chl.Name}Channel : Channel"); + sb.AppendLine(" {"); + + foreach (var item in chl.Items) + { + sb.AppendLine($" public FunctionItem {(item.Name)} {{ get; }}"); + } + sb.AppendLine(); + + sb.AppendLine($" public {chl.Name}Channel() : base(nameof({chl.Name}), {JsonConvert.SerializeObject(chl.Title)}, Icons.{chl.Icon})"); + sb.AppendLine(" {"); + + foreach (var item in chl.Items) + { + sb.AppendLine($" this.{(item.Name)} = new FunctionItem(this, Guid.Parse(\"{item.Id.ToString("N").ToUpper()}\"), nameof({item.Name}))"); + sb.AppendLine(" {"); + sb.AppendLine($" Title = {JsonConvert.SerializeObject(item.Title)},"); + sb.AppendLine($" Icon = Icons.{(item.Icon)},"); + sb.AppendLine($" Description = {JsonConvert.SerializeObject(item.Description)},"); + sb.AppendLine($" View = Views.ViewNames.{(item.View)},"); + sb.AppendLine($" IsNew = {(item.IsNew ? "true" : "false")},"); + sb.AppendLine($" UseNetwork = {(item.UseNetwork ? "true" : "false")},"); + sb.AppendLine($" IsDocument = {(item.IsDocument ? "true" : "false")},"); + sb.AppendLine($" Multiboxing = {(item.Multiboxing ? "true" : "false")},"); + sb.AppendLine($" Keywords = new string[] {{ {(GetKeywords(item))} }},"); + sb.AppendLine(" };"); + sb.AppendLine(); + } + + sb.AppendLine(" this.Items = new[]"); + sb.AppendLine(" {"); + foreach (var item in chl.Items) + { + sb.AppendLine($" {(item.Name)},"); + } + sb.AppendLine(" };"); + + sb.AppendLine(" }"); + + sb.AppendLine(" }"); + + sb.AppendLine("}"); + var str = sb.ToString(); + File.WriteAllText(fn, str, Encoding.UTF8); + } +} + +// You can define other methods, fields, classes and namespaces here +private static string GetName(string view) +{ + return view.Split('.').Last(); +} +private static string GetKeywords(FunctionItem item) +{ + return Newtonsoft.Json.JsonConvert.SerializeObject(item.Keywords).Trim('[', ']').Replace(",",", "); +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/ChannelItemSession.Biz.cs b/LuYao.Toolkit.Core/Entities/ChannelItemSession.Biz.cs new file mode 100644 index 0000000..b97cf9b --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/ChannelItemSession.Biz.cs @@ -0,0 +1,159 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace LuYao.Toolkit.Entities +{ + public partial class ChannelItemSession : Entity + { + #region 对象操作 + static ChannelItemSession() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(IsFavorite)); + + // 过滤器 UserModule、TimeModule、IPModule + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化ChannelItemSession[ChannelItemSession]数据……"); + + // var entity = new ChannelItemSession(); + // entity.CreatedAt = DateTime.Now; + // entity.LastClick = DateTime.Now; + // entity.IsFavorite = 0; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化ChannelItemSession[ChannelItemSession]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + #endregion + + #region 扩展查询 + /// 根据主键查找 + /// 主键 + /// 实体对象 + public static ChannelItemSession FindById(Guid id) + { + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据收藏查找 + /// 收藏 + /// 实体列表 + public static IList FindAllByIsFavorite(Int32 isFavorite) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.IsFavorite == isFavorite); + + return FindAll(_.IsFavorite == isFavorite); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 最后点击 + /// 收藏 + /// 创建时间开始 + /// 创建时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(DateTime lastClick, Int32 isFavorite, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (isFavorite >= 0) exp &= _.IsFavorite == isFavorite; + exp &= _.CreatedAt.Between(start, end); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From ChannelItemSession Where LastClick>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.LastClick > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + public static IList FindAll(int limit) + { + var order = _.IsFavorite.Asc() & _.LastClick.Desc(); + return FindAll(null, order, null, 0, limit); + } + + public static bool HasSessin() => Meta.Count > 0; + + #endregion + + #region 业务操作 + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/ChannelItemSession.cs b/LuYao.Toolkit.Core/Entities/ChannelItemSession.cs new file mode 100644 index 0000000..faedd3c --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/ChannelItemSession.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using XCode; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace LuYao.Toolkit.Entities +{ + /// + [Serializable] + [DataObject] + [BindIndex("IX_ChannelItemSession_CreatedAt", false, "CreatedAt")] + [BindIndex("IX_ChannelItemSession_LastClick", false, "LastClick")] + [BindIndex("IX_ChannelItemSession_IsFavorite", false, "IsFavorite")] + [BindTable("ChannelItemSession", Description = "", ConnName = "LuYao.Toolkit", DbType = DatabaseType.None)] + public partial class ChannelItemSession + { + #region 属性 + private Guid _Id; + /// 主键 + [DisplayName("主键")] + [Description("主键")] + [DataObjectField(true, false, false, 0)] + [BindColumn("Id", "主键", "")] + public Guid Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private DateTime _CreatedAt; + /// 创建时间 + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreatedAt", "创建时间", "")] + public DateTime CreatedAt { get => _CreatedAt; set { if (OnPropertyChanging("CreatedAt", value)) { _CreatedAt = value; OnPropertyChanged("CreatedAt"); } } } + + private DateTime _LastClick; + /// 最后点击 + [DisplayName("最后点击")] + [Description("最后点击")] + [DataObjectField(false, false, true, 0)] + [BindColumn("LastClick", "最后点击", "")] + public DateTime LastClick { get => _LastClick; set { if (OnPropertyChanging("LastClick", value)) { _LastClick = value; OnPropertyChanged("LastClick"); } } } + + private Int32 _IsFavorite; + /// 收藏 + [DisplayName("收藏")] + [Description("收藏")] + [DataObjectField(false, false, false, 0)] + [BindColumn("IsFavorite", "收藏", "")] + public Int32 IsFavorite { get => _IsFavorite; set { if (OnPropertyChanging("IsFavorite", value)) { _IsFavorite = value; OnPropertyChanged("IsFavorite"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get + { + switch (name) + { + case "Id": return _Id; + case "CreatedAt": return _CreatedAt; + case "LastClick": return _LastClick; + case "IsFavorite": return _IsFavorite; + default: return base[name]; + } + } + set + { + switch (name) + { + case "Id": _Id = (Guid)value; break; + case "CreatedAt": _CreatedAt = value.ToDateTime(); break; + case "LastClick": _LastClick = value.ToDateTime(); break; + case "IsFavorite": _IsFavorite = value.ToInt(); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 字段名 + /// 取得ChannelItemSession字段信息的快捷方式 + public partial class _ + { + /// 主键 + public static readonly Field Id = FindByName("Id"); + + /// 创建时间 + public static readonly Field CreatedAt = FindByName("CreatedAt"); + + /// 最后点击 + public static readonly Field LastClick = FindByName("LastClick"); + + /// 收藏 + public static readonly Field IsFavorite = FindByName("IsFavorite"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得ChannelItemSession字段名称的快捷方式 + public partial class __ + { + /// 主键 + public const String Id = "Id"; + + /// 创建时间 + public const String CreatedAt = "CreatedAt"; + + /// 最后点击 + public const String LastClick = "LastClick"; + + /// 收藏 + public const String IsFavorite = "IsFavorite"; + } + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/Log/2022_07_27.log b/LuYao.Toolkit.Core/Entities/Log/2022_07_27.log new file mode 100644 index 0000000..171f5af --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/Log/2022_07_27.log @@ -0,0 +1,8 @@ +14:15:45.514 4 N T 实体缓存(24)总次数 2 [LuYao.Toolkit.Entities.ViewModelState] +14:15:45.514 4 N T 实体缓存(36)总次数 1 [LuYao.Toolkit.Entities.FunctionViewItem] +18:15:45.532 4 N T 实体缓存(24)总次数 3 [LuYao.Toolkit.Entities.ViewModelState] +18:15:45.533 4 N T 实体缓存(36)总次数 3 [LuYao.Toolkit.Entities.FunctionViewItem] +19:48:32.100 4 N T 慢SQL[1,180ms] [LuYao.Toolkit] Update ViewModelState Set Value='{"UseNumber":true,"UseSymbols":true,"Length":80}' Where Id=1 +19:48:32.101 4 N T 任务 [7]<>c.<.cctor>b__0_0 (2147483647ms) 耗时过长 1,198ms,建议使用异步任务Async=true +20:15:45.535 4 N T 实体缓存(24)总次数 3 [LuYao.Toolkit.Entities.ViewModelState] +20:15:45.535 4 N T 实体缓存(36)总次数 4 [LuYao.Toolkit.Entities.FunctionViewItem] diff --git a/LuYao.Toolkit.Core/Entities/Log/2022_08_04.log b/LuYao.Toolkit.Core/Entities/Log/2022_08_04.log new file mode 100644 index 0000000..366ab34 --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/Log/2022_08_04.log @@ -0,0 +1,55 @@ +14:53:56.938 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +14:53:57.018 1 N - 修正模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +14:53:57.020 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +14:53:57.024 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:53:57.041 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:53:57.061 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:53:57.062 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:53:57.062 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:53:57.062 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:53:58.389 9 N T 实体缓存(14)总次数 8,命中 5(62.50%) [LuYao.Toolkit.Entities.ViewModelState] +14:54:13.169 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +14:54:13.171 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +14:54:13.171 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.171 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.171 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.172 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.172 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.172 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.983 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +14:54:13.984 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +14:54:13.984 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.985 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.985 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.985 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.986 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:13.986 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.287 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +14:54:14.288 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +14:54:14.295 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.302 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.302 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.303 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.303 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.303 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.466 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +14:54:14.467 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +14:54:14.467 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.467 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.468 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.468 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.468 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +14:54:14.469 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.878 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +15:29:22.958 1 N - 修正模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +15:29:22.960 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +15:29:22.963 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.975 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.995 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.995 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.996 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.996 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.996 1 N - 生成 RdoFolder RdoFolder {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.997 1 N - 生成 RdoFolder RdoFolder {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.998 1 N - 生成 RdoConnection RdoConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +15:29:22.999 1 N - 生成 RdoConnection RdoConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} diff --git a/LuYao.Toolkit.Core/Entities/Log/2022_08_08.log b/LuYao.Toolkit.Core/Entities/Log/2022_08_08.log new file mode 100644 index 0000000..753f451 --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/Log/2022_08_08.log @@ -0,0 +1,15 @@ +19:34:37.489 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +19:34:37.547 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +19:34:37.550 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.562 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.578 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.578 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.579 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.579 1 N - 生成 RdoIdCard RdoIdCard {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.579 1 N - 生成 RdoFolder RdoFolder {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.583 1 N - 生成 RdoFolder RdoFolder {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.583 1 N - 生成 RdoConnection RdoConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:37.584 1 N - 生成 RdoConnection RdoConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +19:34:38.871 7 Y EQ [LuYao.Toolkit] Update ChannelItemSession Set LastClick='2022-08-08 19:34:35' Where Id='629fe6ac-3488-4045-9f46-fb59e195fa47' +19:37:04.218 10 N T 实体缓存(23)总次数 2 [LuYao.Toolkit.Entities.ChannelItemSession] +19:37:04.218 10 N T 实体缓存(14)总次数 37,命中 27(72.97%) [LuYao.Toolkit.Entities.ViewModelState] diff --git a/LuYao.Toolkit.Core/Entities/Log/2022_09_13.log b/LuYao.Toolkit.Core/Entities/Log/2022_09_13.log new file mode 100644 index 0000000..e2a04dc --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/Log/2022_09_13.log @@ -0,0 +1,8 @@ +11:36:01.101 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +11:36:01.187 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +11:36:01.190 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +11:36:01.202 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +11:36:01.216 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +11:36:01.217 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +11:36:01.217 1 N - 生成 RdpConnection RdpConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +11:36:01.226 1 N - 生成 RdpConnection RdpConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} diff --git a/LuYao.Toolkit.Core/Entities/Log/2023_01_14.log b/LuYao.Toolkit.Core/Entities/Log/2023_01_14.log new file mode 100644 index 0000000..e831deb --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/Log/2023_01_14.log @@ -0,0 +1,26 @@ +16:57:39.129 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +16:57:39.490 1 N - 修正模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +16:57:39.491 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +16:57:39.492 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.494 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.496 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.497 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.497 1 N - 生成 RdpGroup RdpGroup {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.498 1 N - 生成 RdpGroup RdpGroup {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.498 1 N - 生成 RdpConnection RdpConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.499 1 N - 生成 RdpConnection RdpConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:39.509 7 Y P [LuYao.Toolkit] Select * From ViewModelState +16:57:39.510 4 N T [LuYao.Toolkit] Update ViewModelState Set UpdatedAt='2023-01-14 16:57:39',Value='{"XmlFileName":{"Type":"System.String","Json":"\"D:\\\\src\\\\coderbusy\\\\luyao\\\\src\\\\toolkit\\\\LuYao.Toolkit.Core\\\\Entities\\\\LuYao.Toolkit.xml\""}}' Where Id=20 +16:57:51.036 1 N - 导入模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +16:57:51.039 1 N - 修正模型:D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities\LuYao.Toolkit.xml +16:57:51.040 1 N - 生成实体类 D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit.Core\Entities +16:57:51.040 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.040 1 N - 生成 ViewModelState ViewModelState {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.092 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.093 1 N - 生成 ChannelItemSession ChannelItemSession {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.093 1 N - 生成 RdpGroup RdpGroup {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.094 1 N - 生成 RdpGroup RdpGroup {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.094 1 N - 生成 RdpConnection RdpConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.094 1 N - 生成 RdpConnection RdpConnection {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.095 1 N - 生成 PortProxyRule 端口转发规则 {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} +16:57:51.095 1 N - 生成 PortProxyRule 端口转发规则 {"BaseClass":"Entity","Namespace":"LuYao.Toolkit.Entities"} diff --git a/LuYao.Toolkit.Core/Entities/LuYao.Toolkit.xml b/LuYao.Toolkit.Core/Entities/LuYao.Toolkit.xml new file mode 100644 index 0000000..5f9d312 --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/LuYao.Toolkit.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
\ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/PortProxyRule.Biz.cs b/LuYao.Toolkit.Core/Entities/PortProxyRule.Biz.cs new file mode 100644 index 0000000..5c08dcb --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/PortProxyRule.Biz.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace LuYao.Toolkit.Entities +{ + public partial class PortProxyRule : Entity + { + #region 对象操作 + static PortProxyRule() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(ListenPort)); + + // 过滤器 UserModule、TimeModule、IPModule + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化PortProxyRule[端口转发规则]数据……"); + + // var entity = new PortProxyRule(); + // entity.Type = "abc"; + // entity.ListenOn = "abc"; + // entity.ListenPort = 0; + // entity.ConnectTo = "abc"; + // entity.ConnectPort = 0; + // entity.Comment = "abc"; + // entity.Group = "abc"; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化PortProxyRule[端口转发规则]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + #endregion + + #region 扩展查询 + #endregion + + #region 高级查询 + + // Select Count(Id) as Id,Category From PortProxyRule Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + public static List GetGroups() + { + var ret = new List(); + var exp = new WhereExpression().GroupBy(_.GroupName); + var list = FindAll(exp, _.GroupName.Asc(), _.GroupName, 0, 0); + foreach (var item in list) + { + if (string.IsNullOrWhiteSpace(item.GroupName)) continue; + ret.Add(item.GroupName); + } + return ret; + } + + public static List GetConnectTos() + { + var ret = new List(); + var exp = new WhereExpression().GroupBy(_.ConnectTo); + var list = FindAll(exp, _.ConnectTo.Asc(), _.ConnectTo, 0, 0); + foreach (var item in list) + { + if (string.IsNullOrWhiteSpace(item.ConnectTo)) continue; + ret.Add(item.ConnectTo); + } + return ret; + } + public static IList FindAllByIds(IReadOnlyCollection ids) + { + if (ids == null || ids.Count <= 0) return new List(); + var where = _.Id.In(ids); + return FindAll(where); + } + #endregion + + #region 业务操作 + #endregion + + public bool EqualsWithKeys(PortProxyRule other) + { + return Type == other.Type + && ListenOn == other.ListenOn + && ListenPort == other.ListenPort + && ConnectTo == other.ConnectTo + && ConnectPort == other.ConnectPort; + } + + public bool IsValid => ListenPort.ToInt() > 0 && ConnectPort.ToInt() > 0; + + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/PortProxyRule.cs b/LuYao.Toolkit.Core/Entities/PortProxyRule.cs new file mode 100644 index 0000000..3ab1b63 --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/PortProxyRule.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using XCode; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace LuYao.Toolkit.Entities +{ + /// 端口转发规则 + [Serializable] + [DataObject] + [Description("端口转发规则")] + [BindTable("PortProxyRule", Description = "端口转发规则", ConnName = "LuYao.Toolkit", DbType = DatabaseType.None)] + public partial class PortProxyRule + { + #region 属性 + private Int32 _Id; + /// 主键 + [DisplayName("主键")] + [Description("主键")] + [DataObjectField(true, true, false, 0)] + [BindColumn("Id", "主键", "")] + public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private String _Type; + /// + [DisplayName("Type")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Type", "", "")] + public String Type { get => _Type; set { if (OnPropertyChanging("Type", value)) { _Type = value; OnPropertyChanged("Type"); } } } + + private String _GroupName; + /// + [DisplayName("GroupName")] + [DataObjectField(false, false, true, 255)] + [BindColumn("GroupName", "", "")] + public String GroupName { get => _GroupName; set { if (OnPropertyChanging("GroupName", value)) { _GroupName = value; OnPropertyChanged("GroupName"); } } } + + private String _ListenOn; + /// + [DisplayName("ListenOn")] + [DataObjectField(false, false, true, 50)] + [BindColumn("ListenOn", "", "")] + public String ListenOn { get => _ListenOn; set { if (OnPropertyChanging("ListenOn", value)) { _ListenOn = value; OnPropertyChanged("ListenOn"); } } } + + private String _ListenPort; + /// + [DisplayName("ListenPort")] + [DataObjectField(false, false, true, 50)] + [BindColumn("ListenPort", "", "")] + public String ListenPort { get => _ListenPort; set { if (OnPropertyChanging("ListenPort", value)) { _ListenPort = value; OnPropertyChanged("ListenPort"); } } } + + private String _ConnectTo; + /// + [DisplayName("ConnectTo")] + [DataObjectField(false, false, true, 255)] + [BindColumn("ConnectTo", "", "")] + public String ConnectTo { get => _ConnectTo; set { if (OnPropertyChanging("ConnectTo", value)) { _ConnectTo = value; OnPropertyChanged("ConnectTo"); } } } + + private String _ConnectPort; + /// + [DisplayName("ConnectPort")] + [DataObjectField(false, false, true, 50)] + [BindColumn("ConnectPort", "", "")] + public String ConnectPort { get => _ConnectPort; set { if (OnPropertyChanging("ConnectPort", value)) { _ConnectPort = value; OnPropertyChanged("ConnectPort"); } } } + + private String _Comment; + /// + [DisplayName("Comment")] + [DataObjectField(false, false, true, -1)] + [BindColumn("Comment", "", "")] + public String Comment { get => _Comment; set { if (OnPropertyChanging("Comment", value)) { _Comment = value; OnPropertyChanged("Comment"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get + { + switch (name) + { + case "Id": return _Id; + case "Type": return _Type; + case "GroupName": return _GroupName; + case "ListenOn": return _ListenOn; + case "ListenPort": return _ListenPort; + case "ConnectTo": return _ConnectTo; + case "ConnectPort": return _ConnectPort; + case "Comment": return _Comment; + default: return base[name]; + } + } + set + { + switch (name) + { + case "Id": _Id = value.ToInt(); break; + case "Type": _Type = Convert.ToString(value); break; + case "GroupName": _GroupName = Convert.ToString(value); break; + case "ListenOn": _ListenOn = Convert.ToString(value); break; + case "ListenPort": _ListenPort = Convert.ToString(value); break; + case "ConnectTo": _ConnectTo = Convert.ToString(value); break; + case "ConnectPort": _ConnectPort = Convert.ToString(value); break; + case "Comment": _Comment = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 字段名 + /// 取得端口转发规则字段信息的快捷方式 + public partial class _ + { + /// 主键 + public static readonly Field Id = FindByName("Id"); + + /// + public static readonly Field Type = FindByName("Type"); + + /// + public static readonly Field GroupName = FindByName("GroupName"); + + /// + public static readonly Field ListenOn = FindByName("ListenOn"); + + /// + public static readonly Field ListenPort = FindByName("ListenPort"); + + /// + public static readonly Field ConnectTo = FindByName("ConnectTo"); + + /// + public static readonly Field ConnectPort = FindByName("ConnectPort"); + + /// + public static readonly Field Comment = FindByName("Comment"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得端口转发规则字段名称的快捷方式 + public partial class __ + { + /// 主键 + public const String Id = "Id"; + + /// + public const String Type = "Type"; + + /// + public const String GroupName = "GroupName"; + + /// + public const String ListenOn = "ListenOn"; + + /// + public const String ListenPort = "ListenPort"; + + /// + public const String ConnectTo = "ConnectTo"; + + /// + public const String ConnectPort = "ConnectPort"; + + /// + public const String Comment = "Comment"; + } + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/RdpConnection.Biz.cs b/LuYao.Toolkit.Core/Entities/RdpConnection.Biz.cs new file mode 100644 index 0000000..740bec0 --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/RdpConnection.Biz.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace LuYao.Toolkit.Entities +{ + public partial class RdpConnection : Entity + { + #region 对象操作 + static RdpConnection() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(Port)); + + // 过滤器 UserModule、TimeModule、IPModule + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化RdoConnection[RdoConnection]数据……"); + + // var entity = new RdoConnection(); + // entity.CreatedAt = DateTime.Now; + // entity.UpdatedAt = DateTime.Now; + // entity.Name = "abc"; + // entity.Remark = "abc"; + // entity.Host = "abc"; + // entity.Port = 0; + // entity.Domain = "abc"; + // entity.Username = "abc"; + // entity.Password = "abc"; + // entity.ConnectToConsole = true; + // entity.DisplayWidth = 0; + // entity.DisplayHeight = 0; + // entity.AutoExpand = true; + // entity.SmartSizing = true; + // entity.ColorDepth = 0; + // entity.AudioSetting = 0; + // entity.KeyboardSetting = 0; + // entity.RedirectDisks = true; + // entity.RedirectPorts = true; + // entity.RedirectPrinters = true; + // entity.RedirectSmartCards = true; + // entity.BitmapCaching = true; + // entity.AllowWallpaper = true; + // entity.AllowThemes = true; + // entity.AllowContents = true; + // entity.AllowAnimation = true; + // entity.AuthenticationLevel = 0; + // entity.EnableCredSspSupport = true; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化RdoConnection[RdoConnection]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + public RdpGroup Group => RdpGroup.FindById(this.GroupId); + public string GroupName => this.Group?.Name; + #endregion + + #region 扩展查询 + /// 根据主键查找 + /// 主键 + /// 实体对象 + public static RdpConnection FindById(Guid id) + { + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + #endregion + + #region 高级查询 + + public static IReadOnlyList FindAllByIds(IReadOnlyCollection ids) + { + if (ids.Count == 0) + { + return Array.Empty(); + } + Expression where = @_.Id.In(ids); + return Entity.FindAll(where).ToList(); + } + #endregion + + #region 业务操作 + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/RdpConnection.cs b/LuYao.Toolkit.Core/Entities/RdpConnection.cs new file mode 100644 index 0000000..496e1f9 --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/RdpConnection.cs @@ -0,0 +1,527 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using XCode; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace LuYao.Toolkit.Entities +{ + /// + [Serializable] + [DataObject] + [BindTable("RdpConnection", Description = "", ConnName = "LuYao.Toolkit", DbType = DatabaseType.None)] + public partial class RdpConnection + { + #region 属性 + private Guid _Id; + /// 主键 + [DisplayName("主键")] + [Description("主键")] + [DataObjectField(true, false, false, 0)] + [BindColumn("Id", "主键", "")] + public Guid Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private DateTime _CreatedAt; + /// 创建时间 + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreatedAt", "创建时间", "")] + public DateTime CreatedAt { get => _CreatedAt; set { if (OnPropertyChanging("CreatedAt", value)) { _CreatedAt = value; OnPropertyChanged("CreatedAt"); } } } + + private DateTime _UpdatedAt; + /// 更新时间 + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdatedAt", "更新时间", "")] + public DateTime UpdatedAt { get => _UpdatedAt; set { if (OnPropertyChanging("UpdatedAt", value)) { _UpdatedAt = value; OnPropertyChanged("UpdatedAt"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private Guid _GroupId; + /// 分组编号 + [DisplayName("分组编号")] + [Description("分组编号")] + [DataObjectField(false, false, false, 0)] + [BindColumn("GroupId", "分组编号", "")] + public Guid GroupId { get => _GroupId; set { if (OnPropertyChanging("GroupId", value)) { _GroupId = value; OnPropertyChanged("GroupId"); } } } + + private String _Remark; + /// 备注 + [DisplayName("备注")] + [Description("备注")] + [DataObjectField(false, false, true, 255)] + [BindColumn("Remark", "备注", "")] + public String Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } } + + private String _Host; + /// + [DisplayName("Host")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Host", "", "")] + public String Host { get => _Host; set { if (OnPropertyChanging("Host", value)) { _Host = value; OnPropertyChanged("Host"); } } } + + private Int32 _Port; + /// + [DisplayName("Port")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Port", "", "")] + public Int32 Port { get => _Port; set { if (OnPropertyChanging("Port", value)) { _Port = value; OnPropertyChanged("Port"); } } } + + private String _Domain; + /// + [DisplayName("Domain")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Domain", "", "")] + public String Domain { get => _Domain; set { if (OnPropertyChanging("Domain", value)) { _Domain = value; OnPropertyChanged("Domain"); } } } + + private String _Username; + /// + [DisplayName("Username")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Username", "", "")] + public String Username { get => _Username; set { if (OnPropertyChanging("Username", value)) { _Username = value; OnPropertyChanged("Username"); } } } + + private String _Password; + /// + [DisplayName("Password")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Password", "", "")] + public String Password { get => _Password; set { if (OnPropertyChanging("Password", value)) { _Password = value; OnPropertyChanged("Password"); } } } + + private Boolean _ConnectToConsole; + /// + [DisplayName("ConnectToConsole")] + [DataObjectField(false, false, false, 0)] + [BindColumn("ConnectToConsole", "", "")] + public Boolean ConnectToConsole { get => _ConnectToConsole; set { if (OnPropertyChanging("ConnectToConsole", value)) { _ConnectToConsole = value; OnPropertyChanged("ConnectToConsole"); } } } + + private Int32 _DesktopSize; + /// + [DisplayName("DesktopSize")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DesktopSize", "", "")] + public Int32 DesktopSize { get => _DesktopSize; set { if (OnPropertyChanging("DesktopSize", value)) { _DesktopSize = value; OnPropertyChanged("DesktopSize"); } } } + + private Int32 _DisplayWidth; + /// + [DisplayName("DisplayWidth")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DisplayWidth", "", "")] + public Int32 DisplayWidth { get => _DisplayWidth; set { if (OnPropertyChanging("DisplayWidth", value)) { _DisplayWidth = value; OnPropertyChanged("DisplayWidth"); } } } + + private Int32 _DisplayHeight; + /// + [DisplayName("DisplayHeight")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DisplayHeight", "", "")] + public Int32 DisplayHeight { get => _DisplayHeight; set { if (OnPropertyChanging("DisplayHeight", value)) { _DisplayHeight = value; OnPropertyChanged("DisplayHeight"); } } } + + private Boolean _AutoExpand; + /// + [DisplayName("AutoExpand")] + [DataObjectField(false, false, false, 0)] + [BindColumn("AutoExpand", "", "")] + public Boolean AutoExpand { get => _AutoExpand; set { if (OnPropertyChanging("AutoExpand", value)) { _AutoExpand = value; OnPropertyChanged("AutoExpand"); } } } + + private Boolean _SmartSizing; + /// + [DisplayName("SmartSizing")] + [DataObjectField(false, false, false, 0)] + [BindColumn("SmartSizing", "", "")] + public Boolean SmartSizing { get => _SmartSizing; set { if (OnPropertyChanging("SmartSizing", value)) { _SmartSizing = value; OnPropertyChanged("SmartSizing"); } } } + + private Int32 _ColorDepth; + /// + [DisplayName("ColorDepth")] + [DataObjectField(false, false, false, 0)] + [BindColumn("ColorDepth", "", "")] + public Int32 ColorDepth { get => _ColorDepth; set { if (OnPropertyChanging("ColorDepth", value)) { _ColorDepth = value; OnPropertyChanged("ColorDepth"); } } } + + private Int32 _AudioSetting; + /// + [DisplayName("AudioSetting")] + [DataObjectField(false, false, false, 0)] + [BindColumn("AudioSetting", "", "")] + public Int32 AudioSetting { get => _AudioSetting; set { if (OnPropertyChanging("AudioSetting", value)) { _AudioSetting = value; OnPropertyChanged("AudioSetting"); } } } + + private Int32 _KeyboardSetting; + /// + [DisplayName("KeyboardSetting")] + [DataObjectField(false, false, false, 0)] + [BindColumn("KeyboardSetting", "", "")] + public Int32 KeyboardSetting { get => _KeyboardSetting; set { if (OnPropertyChanging("KeyboardSetting", value)) { _KeyboardSetting = value; OnPropertyChanged("KeyboardSetting"); } } } + + private Boolean _RedirectDisks; + /// + [DisplayName("RedirectDisks")] + [DataObjectField(false, false, false, 0)] + [BindColumn("RedirectDisks", "", "")] + public Boolean RedirectDisks { get => _RedirectDisks; set { if (OnPropertyChanging("RedirectDisks", value)) { _RedirectDisks = value; OnPropertyChanged("RedirectDisks"); } } } + + private Boolean _RedirectPorts; + /// + [DisplayName("RedirectPorts")] + [DataObjectField(false, false, false, 0)] + [BindColumn("RedirectPorts", "", "")] + public Boolean RedirectPorts { get => _RedirectPorts; set { if (OnPropertyChanging("RedirectPorts", value)) { _RedirectPorts = value; OnPropertyChanged("RedirectPorts"); } } } + + private Boolean _RedirectPrinters; + /// + [DisplayName("RedirectPrinters")] + [DataObjectField(false, false, false, 0)] + [BindColumn("RedirectPrinters", "", "")] + public Boolean RedirectPrinters { get => _RedirectPrinters; set { if (OnPropertyChanging("RedirectPrinters", value)) { _RedirectPrinters = value; OnPropertyChanged("RedirectPrinters"); } } } + + private Boolean _RedirectSmartCards; + /// + [DisplayName("RedirectSmartCards")] + [DataObjectField(false, false, false, 0)] + [BindColumn("RedirectSmartCards", "", "")] + public Boolean RedirectSmartCards { get => _RedirectSmartCards; set { if (OnPropertyChanging("RedirectSmartCards", value)) { _RedirectSmartCards = value; OnPropertyChanged("RedirectSmartCards"); } } } + + private Boolean _BitmapCaching; + /// + [DisplayName("BitmapCaching")] + [DataObjectField(false, false, false, 0)] + [BindColumn("BitmapCaching", "", "")] + public Boolean BitmapCaching { get => _BitmapCaching; set { if (OnPropertyChanging("BitmapCaching", value)) { _BitmapCaching = value; OnPropertyChanged("BitmapCaching"); } } } + + private Boolean _AllowWallpaper; + /// + [DisplayName("AllowWallpaper")] + [DataObjectField(false, false, false, 0)] + [BindColumn("AllowWallpaper", "", "")] + public Boolean AllowWallpaper { get => _AllowWallpaper; set { if (OnPropertyChanging("AllowWallpaper", value)) { _AllowWallpaper = value; OnPropertyChanged("AllowWallpaper"); } } } + + private Boolean _AllowThemes; + /// + [DisplayName("AllowThemes")] + [DataObjectField(false, false, false, 0)] + [BindColumn("AllowThemes", "", "")] + public Boolean AllowThemes { get => _AllowThemes; set { if (OnPropertyChanging("AllowThemes", value)) { _AllowThemes = value; OnPropertyChanged("AllowThemes"); } } } + + private Boolean _AllowContents; + /// + [DisplayName("AllowContents")] + [DataObjectField(false, false, false, 0)] + [BindColumn("AllowContents", "", "")] + public Boolean AllowContents { get => _AllowContents; set { if (OnPropertyChanging("AllowContents", value)) { _AllowContents = value; OnPropertyChanged("AllowContents"); } } } + + private Boolean _AllowAnimation; + /// + [DisplayName("AllowAnimation")] + [DataObjectField(false, false, false, 0)] + [BindColumn("AllowAnimation", "", "")] + public Boolean AllowAnimation { get => _AllowAnimation; set { if (OnPropertyChanging("AllowAnimation", value)) { _AllowAnimation = value; OnPropertyChanged("AllowAnimation"); } } } + + private Int32 _AuthenticationLevel; + /// + [DisplayName("AuthenticationLevel")] + [DataObjectField(false, false, false, 0)] + [BindColumn("AuthenticationLevel", "", "")] + public Int32 AuthenticationLevel { get => _AuthenticationLevel; set { if (OnPropertyChanging("AuthenticationLevel", value)) { _AuthenticationLevel = value; OnPropertyChanged("AuthenticationLevel"); } } } + + private Boolean _EnableCredSspSupport; + /// + [DisplayName("EnableCredSspSupport")] + [DataObjectField(false, false, false, 0)] + [BindColumn("EnableCredSspSupport", "", "")] + public Boolean EnableCredSspSupport { get => _EnableCredSspSupport; set { if (OnPropertyChanging("EnableCredSspSupport", value)) { _EnableCredSspSupport = value; OnPropertyChanged("EnableCredSspSupport"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get + { + switch (name) + { + case "Id": return _Id; + case "CreatedAt": return _CreatedAt; + case "UpdatedAt": return _UpdatedAt; + case "Name": return _Name; + case "GroupId": return _GroupId; + case "Remark": return _Remark; + case "Host": return _Host; + case "Port": return _Port; + case "Domain": return _Domain; + case "Username": return _Username; + case "Password": return _Password; + case "ConnectToConsole": return _ConnectToConsole; + case "DesktopSize": return _DesktopSize; + case "DisplayWidth": return _DisplayWidth; + case "DisplayHeight": return _DisplayHeight; + case "AutoExpand": return _AutoExpand; + case "SmartSizing": return _SmartSizing; + case "ColorDepth": return _ColorDepth; + case "AudioSetting": return _AudioSetting; + case "KeyboardSetting": return _KeyboardSetting; + case "RedirectDisks": return _RedirectDisks; + case "RedirectPorts": return _RedirectPorts; + case "RedirectPrinters": return _RedirectPrinters; + case "RedirectSmartCards": return _RedirectSmartCards; + case "BitmapCaching": return _BitmapCaching; + case "AllowWallpaper": return _AllowWallpaper; + case "AllowThemes": return _AllowThemes; + case "AllowContents": return _AllowContents; + case "AllowAnimation": return _AllowAnimation; + case "AuthenticationLevel": return _AuthenticationLevel; + case "EnableCredSspSupport": return _EnableCredSspSupport; + default: return base[name]; + } + } + set + { + switch (name) + { + case "Id": _Id = (Guid)value; break; + case "CreatedAt": _CreatedAt = value.ToDateTime(); break; + case "UpdatedAt": _UpdatedAt = value.ToDateTime(); break; + case "Name": _Name = Convert.ToString(value); break; + case "GroupId": _GroupId = (Guid)value; break; + case "Remark": _Remark = Convert.ToString(value); break; + case "Host": _Host = Convert.ToString(value); break; + case "Port": _Port = value.ToInt(); break; + case "Domain": _Domain = Convert.ToString(value); break; + case "Username": _Username = Convert.ToString(value); break; + case "Password": _Password = Convert.ToString(value); break; + case "ConnectToConsole": _ConnectToConsole = value.ToBoolean(); break; + case "DesktopSize": _DesktopSize = value.ToInt(); break; + case "DisplayWidth": _DisplayWidth = value.ToInt(); break; + case "DisplayHeight": _DisplayHeight = value.ToInt(); break; + case "AutoExpand": _AutoExpand = value.ToBoolean(); break; + case "SmartSizing": _SmartSizing = value.ToBoolean(); break; + case "ColorDepth": _ColorDepth = value.ToInt(); break; + case "AudioSetting": _AudioSetting = value.ToInt(); break; + case "KeyboardSetting": _KeyboardSetting = value.ToInt(); break; + case "RedirectDisks": _RedirectDisks = value.ToBoolean(); break; + case "RedirectPorts": _RedirectPorts = value.ToBoolean(); break; + case "RedirectPrinters": _RedirectPrinters = value.ToBoolean(); break; + case "RedirectSmartCards": _RedirectSmartCards = value.ToBoolean(); break; + case "BitmapCaching": _BitmapCaching = value.ToBoolean(); break; + case "AllowWallpaper": _AllowWallpaper = value.ToBoolean(); break; + case "AllowThemes": _AllowThemes = value.ToBoolean(); break; + case "AllowContents": _AllowContents = value.ToBoolean(); break; + case "AllowAnimation": _AllowAnimation = value.ToBoolean(); break; + case "AuthenticationLevel": _AuthenticationLevel = value.ToInt(); break; + case "EnableCredSspSupport": _EnableCredSspSupport = value.ToBoolean(); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 字段名 + /// 取得RdpConnection字段信息的快捷方式 + public partial class _ + { + /// 主键 + public static readonly Field Id = FindByName("Id"); + + /// 创建时间 + public static readonly Field CreatedAt = FindByName("CreatedAt"); + + /// 更新时间 + public static readonly Field UpdatedAt = FindByName("UpdatedAt"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 分组编号 + public static readonly Field GroupId = FindByName("GroupId"); + + /// 备注 + public static readonly Field Remark = FindByName("Remark"); + + /// + public static readonly Field Host = FindByName("Host"); + + /// + public static readonly Field Port = FindByName("Port"); + + /// + public static readonly Field Domain = FindByName("Domain"); + + /// + public static readonly Field Username = FindByName("Username"); + + /// + public static readonly Field Password = FindByName("Password"); + + /// + public static readonly Field ConnectToConsole = FindByName("ConnectToConsole"); + + /// + public static readonly Field DesktopSize = FindByName("DesktopSize"); + + /// + public static readonly Field DisplayWidth = FindByName("DisplayWidth"); + + /// + public static readonly Field DisplayHeight = FindByName("DisplayHeight"); + + /// + public static readonly Field AutoExpand = FindByName("AutoExpand"); + + /// + public static readonly Field SmartSizing = FindByName("SmartSizing"); + + /// + public static readonly Field ColorDepth = FindByName("ColorDepth"); + + /// + public static readonly Field AudioSetting = FindByName("AudioSetting"); + + /// + public static readonly Field KeyboardSetting = FindByName("KeyboardSetting"); + + /// + public static readonly Field RedirectDisks = FindByName("RedirectDisks"); + + /// + public static readonly Field RedirectPorts = FindByName("RedirectPorts"); + + /// + public static readonly Field RedirectPrinters = FindByName("RedirectPrinters"); + + /// + public static readonly Field RedirectSmartCards = FindByName("RedirectSmartCards"); + + /// + public static readonly Field BitmapCaching = FindByName("BitmapCaching"); + + /// + public static readonly Field AllowWallpaper = FindByName("AllowWallpaper"); + + /// + public static readonly Field AllowThemes = FindByName("AllowThemes"); + + /// + public static readonly Field AllowContents = FindByName("AllowContents"); + + /// + public static readonly Field AllowAnimation = FindByName("AllowAnimation"); + + /// + public static readonly Field AuthenticationLevel = FindByName("AuthenticationLevel"); + + /// + public static readonly Field EnableCredSspSupport = FindByName("EnableCredSspSupport"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得RdpConnection字段名称的快捷方式 + public partial class __ + { + /// 主键 + public const String Id = "Id"; + + /// 创建时间 + public const String CreatedAt = "CreatedAt"; + + /// 更新时间 + public const String UpdatedAt = "UpdatedAt"; + + /// 名称 + public const String Name = "Name"; + + /// 分组编号 + public const String GroupId = "GroupId"; + + /// 备注 + public const String Remark = "Remark"; + + /// + public const String Host = "Host"; + + /// + public const String Port = "Port"; + + /// + public const String Domain = "Domain"; + + /// + public const String Username = "Username"; + + /// + public const String Password = "Password"; + + /// + public const String ConnectToConsole = "ConnectToConsole"; + + /// + public const String DesktopSize = "DesktopSize"; + + /// + public const String DisplayWidth = "DisplayWidth"; + + /// + public const String DisplayHeight = "DisplayHeight"; + + /// + public const String AutoExpand = "AutoExpand"; + + /// + public const String SmartSizing = "SmartSizing"; + + /// + public const String ColorDepth = "ColorDepth"; + + /// + public const String AudioSetting = "AudioSetting"; + + /// + public const String KeyboardSetting = "KeyboardSetting"; + + /// + public const String RedirectDisks = "RedirectDisks"; + + /// + public const String RedirectPorts = "RedirectPorts"; + + /// + public const String RedirectPrinters = "RedirectPrinters"; + + /// + public const String RedirectSmartCards = "RedirectSmartCards"; + + /// + public const String BitmapCaching = "BitmapCaching"; + + /// + public const String AllowWallpaper = "AllowWallpaper"; + + /// + public const String AllowThemes = "AllowThemes"; + + /// + public const String AllowContents = "AllowContents"; + + /// + public const String AllowAnimation = "AllowAnimation"; + + /// + public const String AuthenticationLevel = "AuthenticationLevel"; + + /// + public const String EnableCredSspSupport = "EnableCredSspSupport"; + } + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/RdpGroup.Biz.cs b/LuYao.Toolkit.Core/Entities/RdpGroup.Biz.cs new file mode 100644 index 0000000..eff29cb --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/RdpGroup.Biz.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace LuYao.Toolkit.Entities +{ + public partial class RdpGroup : Entity + { + #region 对象操作 + static RdpGroup() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(Rank)); + + // 过滤器 UserModule、TimeModule、IPModule + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化RdpGroup[RdpGroup]数据……"); + + // var entity = new RdpGroup(); + // entity.CreatedAt = DateTime.Now; + // entity.UpdatedAt = DateTime.Now; + // entity.Name = "abc"; + // entity.Rank = 0; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化RdpGroup[RdpGroup]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + #endregion + + #region 扩展查询 + /// 根据主键查找 + /// 主键 + /// 实体对象 + public static RdpGroup FindById(Guid id) + { + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + #endregion + + #region 高级查询 + + // Select Count(Id) as Id,Category From RdpGroup Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + + public static IList GetAllGroups() + { + return FindAll(null, _.Rank, null, 0, 0); + } + #endregion + + #region 业务操作 + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/RdpGroup.cs b/LuYao.Toolkit.Core/Entities/RdpGroup.cs new file mode 100644 index 0000000..c291b53 --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/RdpGroup.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using XCode; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace LuYao.Toolkit.Entities +{ + /// + [Serializable] + [DataObject] + [BindTable("RdpGroup", Description = "", ConnName = "LuYao.Toolkit", DbType = DatabaseType.None)] + public partial class RdpGroup + { + #region 属性 + private Guid _Id; + /// 主键 + [DisplayName("主键")] + [Description("主键")] + [DataObjectField(true, false, false, 0)] + [BindColumn("Id", "主键", "")] + public Guid Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private DateTime _CreatedAt; + /// 创建时间 + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreatedAt", "创建时间", "")] + public DateTime CreatedAt { get => _CreatedAt; set { if (OnPropertyChanging("CreatedAt", value)) { _CreatedAt = value; OnPropertyChanged("CreatedAt"); } } } + + private DateTime _UpdatedAt; + /// 更新时间 + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdatedAt", "更新时间", "")] + public DateTime UpdatedAt { get => _UpdatedAt; set { if (OnPropertyChanging("UpdatedAt", value)) { _UpdatedAt = value; OnPropertyChanged("UpdatedAt"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private Int32 _Rank; + /// 排序 + [DisplayName("排序")] + [Description("排序")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Rank", "排序", "")] + public Int32 Rank { get => _Rank; set { if (OnPropertyChanging("Rank", value)) { _Rank = value; OnPropertyChanged("Rank"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get + { + switch (name) + { + case "Id": return _Id; + case "CreatedAt": return _CreatedAt; + case "UpdatedAt": return _UpdatedAt; + case "Name": return _Name; + case "Rank": return _Rank; + default: return base[name]; + } + } + set + { + switch (name) + { + case "Id": _Id = (Guid)value; break; + case "CreatedAt": _CreatedAt = value.ToDateTime(); break; + case "UpdatedAt": _UpdatedAt = value.ToDateTime(); break; + case "Name": _Name = Convert.ToString(value); break; + case "Rank": _Rank = value.ToInt(); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 字段名 + /// 取得RdpGroup字段信息的快捷方式 + public partial class _ + { + /// 主键 + public static readonly Field Id = FindByName("Id"); + + /// 创建时间 + public static readonly Field CreatedAt = FindByName("CreatedAt"); + + /// 更新时间 + public static readonly Field UpdatedAt = FindByName("UpdatedAt"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 排序 + public static readonly Field Rank = FindByName("Rank"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得RdpGroup字段名称的快捷方式 + public partial class __ + { + /// 主键 + public const String Id = "Id"; + + /// 创建时间 + public const String CreatedAt = "CreatedAt"; + + /// 更新时间 + public const String UpdatedAt = "UpdatedAt"; + + /// 名称 + public const String Name = "Name"; + + /// 排序 + public const String Rank = "Rank"; + } + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/ViewModelState.Biz.cs b/LuYao.Toolkit.Core/Entities/ViewModelState.Biz.cs new file mode 100644 index 0000000..220ac8a --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/ViewModelState.Biz.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace LuYao.Toolkit.Entities +{ + public partial class ViewModelState : Entity + { + #region 对象操作 + static ViewModelState() + { + + // 过滤器 UserModule、TimeModule、IPModule + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + + // 检查唯一索引 + // CheckExist(isNew, nameof(Type)); + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化ViewModelState[ViewModelState]数据……"); + + // var entity = new ViewModelState(); + // entity.CreatedAt = DateTime.Now; + // entity.UpdatedAt = DateTime.Now; + // entity.Type = "abc"; + // entity.Value = "abc"; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化ViewModelState[ViewModelState]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + #endregion + + #region 扩展查询 + /// 根据自增主键查找 + /// 自增主键 + /// 实体对象 + public static ViewModelState FindById(Int32 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据类型查找 + /// 类型 + /// 实体对象 + public static ViewModelState FindByType(String type) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Type.EqualIgnoreCase(type)); + + return Find(_.Type == type); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 类型 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(String type, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (!type.IsNullOrEmpty()) exp &= _.Type == type; + if (!key.IsNullOrEmpty()) exp &= _.Type.Contains(key) | _.Value.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From ViewModelState Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + #endregion + + #region 业务操作 + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Entities/ViewModelState.cs b/LuYao.Toolkit.Core/Entities/ViewModelState.cs new file mode 100644 index 0000000..8f6a53b --- /dev/null +++ b/LuYao.Toolkit.Core/Entities/ViewModelState.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using XCode; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace LuYao.Toolkit.Entities +{ + /// + [Serializable] + [DataObject] + [BindIndex("IU_ViewModelState_Type", true, "Type")] + [BindTable("ViewModelState", Description = "", ConnName = "LuYao.Toolkit", DbType = DatabaseType.None)] + public partial class ViewModelState + { + #region 属性 + private Int32 _Id; + /// 自增主键 + [DisplayName("自增主键")] + [Description("自增主键")] + [DataObjectField(true, true, false, 0)] + [BindColumn("Id", "自增主键", "")] + public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private DateTime _CreatedAt; + /// 创建时间 + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreatedAt", "创建时间", "")] + public DateTime CreatedAt { get => _CreatedAt; set { if (OnPropertyChanging("CreatedAt", value)) { _CreatedAt = value; OnPropertyChanged("CreatedAt"); } } } + + private DateTime _UpdatedAt; + /// 更新时间 + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdatedAt", "更新时间", "")] + public DateTime UpdatedAt { get => _UpdatedAt; set { if (OnPropertyChanging("UpdatedAt", value)) { _UpdatedAt = value; OnPropertyChanged("UpdatedAt"); } } } + + private String _Type; + /// 类型 + [DisplayName("类型")] + [Description("类型")] + [DataObjectField(false, false, true, 512)] + [BindColumn("Type", "类型", "")] + public String Type { get => _Type; set { if (OnPropertyChanging("Type", value)) { _Type = value; OnPropertyChanged("Type"); } } } + + private String _Value; + /// + [DisplayName("值")] + [Description("值")] + [DataObjectField(false, false, true, -1)] + [BindColumn("Value", "值", "")] + public String Value { get => _Value; set { if (OnPropertyChanging("Value", value)) { _Value = value; OnPropertyChanged("Value"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get + { + switch (name) + { + case "Id": return _Id; + case "CreatedAt": return _CreatedAt; + case "UpdatedAt": return _UpdatedAt; + case "Type": return _Type; + case "Value": return _Value; + default: return base[name]; + } + } + set + { + switch (name) + { + case "Id": _Id = value.ToInt(); break; + case "CreatedAt": _CreatedAt = value.ToDateTime(); break; + case "UpdatedAt": _UpdatedAt = value.ToDateTime(); break; + case "Type": _Type = Convert.ToString(value); break; + case "Value": _Value = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 字段名 + /// 取得ViewModelState字段信息的快捷方式 + public partial class _ + { + /// 自增主键 + public static readonly Field Id = FindByName("Id"); + + /// 创建时间 + public static readonly Field CreatedAt = FindByName("CreatedAt"); + + /// 更新时间 + public static readonly Field UpdatedAt = FindByName("UpdatedAt"); + + /// 类型 + public static readonly Field Type = FindByName("Type"); + + /// + public static readonly Field Value = FindByName("Value"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得ViewModelState字段名称的快捷方式 + public partial class __ + { + /// 自增主键 + public const String Id = "Id"; + + /// 创建时间 + public const String CreatedAt = "CreatedAt"; + + /// 更新时间 + public const String UpdatedAt = "UpdatedAt"; + + /// 类型 + public const String Type = "Type"; + + /// + public const String Value = "Value"; + } + #endregion + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Events/EntityCreatedEvent.cs b/LuYao.Toolkit.Core/Events/EntityCreatedEvent.cs new file mode 100644 index 0000000..e8b147b --- /dev/null +++ b/LuYao.Toolkit.Core/Events/EntityCreatedEvent.cs @@ -0,0 +1,8 @@ +using Prism.Events; +using XCode; + +namespace LuYao.Toolkit.Events; + +public class EntityCreatedEvent : PubSubEvent where TEntity : IEntity +{ +} diff --git a/LuYao.Toolkit.Core/Events/EntityDeletedEvent.cs b/LuYao.Toolkit.Core/Events/EntityDeletedEvent.cs new file mode 100644 index 0000000..f3265cf --- /dev/null +++ b/LuYao.Toolkit.Core/Events/EntityDeletedEvent.cs @@ -0,0 +1,8 @@ +using Prism.Events; +using XCode; + +namespace LuYao.Toolkit.Events; + +public class EntityDeletedEvent : PubSubEvent where TEntity : IEntity +{ +} diff --git a/LuYao.Toolkit.Core/Events/EntityUpdatedEvent.cs b/LuYao.Toolkit.Core/Events/EntityUpdatedEvent.cs new file mode 100644 index 0000000..26d7f2e --- /dev/null +++ b/LuYao.Toolkit.Core/Events/EntityUpdatedEvent.cs @@ -0,0 +1,13 @@ +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using XCode; + +namespace LuYao.Toolkit.Events; + +public class EntityUpdatedEvent : PubSubEvent where TEntity : IEntity +{ +} diff --git a/LuYao.Toolkit.Core/Events/OpenFunctionItemEvent.cs b/LuYao.Toolkit.Core/Events/OpenFunctionItemEvent.cs new file mode 100644 index 0000000..25b9dd3 --- /dev/null +++ b/LuYao.Toolkit.Core/Events/OpenFunctionItemEvent.cs @@ -0,0 +1,6 @@ +using Prism.Events; + +namespace LuYao.Toolkit.Events +{ + public class OpenFunctionItemEvent : PubSubEvent { } +} diff --git a/LuYao.Toolkit.Core/Events/OpenFunctionItemEventPayload.cs b/LuYao.Toolkit.Core/Events/OpenFunctionItemEventPayload.cs new file mode 100644 index 0000000..159885d --- /dev/null +++ b/LuYao.Toolkit.Core/Events/OpenFunctionItemEventPayload.cs @@ -0,0 +1,15 @@ +using LuYao.Toolkit.Channels; + +namespace LuYao.Toolkit.Events; + +public class OpenFunctionItemEventPayload +{ + public FunctionItem Item { get; } + + public OpenFunctionItemEventPayload(FunctionItem item) + { + Item = item; + } + public bool IsNewSession { get; set; } + public bool IsMultiboxing { get; set; } +} diff --git a/LuYao.Toolkit.Core/Events/OpenTabEvent.cs b/LuYao.Toolkit.Core/Events/OpenTabEvent.cs new file mode 100644 index 0000000..25ba834 --- /dev/null +++ b/LuYao.Toolkit.Core/Events/OpenTabEvent.cs @@ -0,0 +1,6 @@ +using Prism.Events; + +namespace LuYao.Toolkit.Events +{ + public class OpenTabEvent : PubSubEvent { } +} diff --git a/LuYao.Toolkit.Core/Events/PreviewFileAsStringEvent.cs b/LuYao.Toolkit.Core/Events/PreviewFileAsStringEvent.cs new file mode 100644 index 0000000..8a55e05 --- /dev/null +++ b/LuYao.Toolkit.Core/Events/PreviewFileAsStringEvent.cs @@ -0,0 +1,10 @@ +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Events; + +public class PreviewFileAsStringEvent : PubSubEvent +{ +} diff --git a/LuYao.Toolkit.Core/Events/PreviewFileAsStringEventPayload.cs b/LuYao.Toolkit.Core/Events/PreviewFileAsStringEventPayload.cs new file mode 100644 index 0000000..877f319 --- /dev/null +++ b/LuYao.Toolkit.Core/Events/PreviewFileAsStringEventPayload.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Events; + +public class PreviewFileAsStringEventPayload +{ + public PreviewFileAsStringEventPayload(string fullName, Encoding encoding) + { + FullName = fullName; + Encoding = encoding; + } + + public string FullName { get; } + public Encoding Encoding { get; } +} diff --git a/LuYao.Toolkit.Core/Events/ThemeChangedEvent.cs b/LuYao.Toolkit.Core/Events/ThemeChangedEvent.cs new file mode 100644 index 0000000..8b0ef92 --- /dev/null +++ b/LuYao.Toolkit.Core/Events/ThemeChangedEvent.cs @@ -0,0 +1,8 @@ +using LuYao.Toolkit.Themes; +using Prism.Events; + +namespace LuYao.Toolkit.Events; + +public class ThemeChangedEvent : PubSubEvent +{ +} diff --git a/LuYao.Toolkit.Core/Events/ViewFileContentAsStringEvent.cs b/LuYao.Toolkit.Core/Events/ViewFileContentAsStringEvent.cs new file mode 100644 index 0000000..2d860db --- /dev/null +++ b/LuYao.Toolkit.Core/Events/ViewFileContentAsStringEvent.cs @@ -0,0 +1,10 @@ +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Events; + +public class ViewFileContentAsStringEvent : PubSubEvent +{ +} diff --git a/LuYao.Toolkit.Core/Events/ViewFileContentAsStringEventPayload.cs b/LuYao.Toolkit.Core/Events/ViewFileContentAsStringEventPayload.cs new file mode 100644 index 0000000..7e5bf8b --- /dev/null +++ b/LuYao.Toolkit.Core/Events/ViewFileContentAsStringEventPayload.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace LuYao.Toolkit.Events; + +public class ViewFileContentAsStringEventPayload +{ + public ViewFileContentAsStringEventPayload(string path, Encoding encoding) + { + this.Path = path; + this.Encoding = encoding; + } + public string Path { get; } + public Encoding Encoding { get; } +} diff --git a/LuYao.Toolkit.Core/IClipboardAware.cs b/LuYao.Toolkit.Core/IClipboardAware.cs new file mode 100644 index 0000000..ec4fba4 --- /dev/null +++ b/LuYao.Toolkit.Core/IClipboardAware.cs @@ -0,0 +1,6 @@ +namespace LuYao.Toolkit; + +public interface IClipboardAware +{ + void OnPaste(); +} diff --git a/LuYao.Toolkit.Core/IFileDragDropTarget.cs b/LuYao.Toolkit.Core/IFileDragDropTarget.cs new file mode 100644 index 0000000..82da18b --- /dev/null +++ b/LuYao.Toolkit.Core/IFileDragDropTarget.cs @@ -0,0 +1,6 @@ +namespace LuYao.Toolkit; + +public interface IFileDragDropTarget +{ + void OnFilesDropped(string group, string[] filepaths); +} diff --git a/LuYao.Toolkit.Core/IO/TempHelper.cs b/LuYao.Toolkit.Core/IO/TempHelper.cs new file mode 100644 index 0000000..ab1e8ce --- /dev/null +++ b/LuYao.Toolkit.Core/IO/TempHelper.cs @@ -0,0 +1,69 @@ +using NewLife.Log; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace LuYao.Toolkit.IO; + +public static class TempHelper +{ + static TempHelper() + { + Root = Path.Combine(Path.GetTempPath(), "LuYao.Toolkit", "Cache"); + if (!Directory.Exists(Root)) Directory.CreateDirectory(Root); + } + + public static string Root { get; } + + public static string GetTempFileName() + { + var dir = Root; + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + var fn = Path.Combine(dir, Path.GetRandomFileName()); + XTrace.WriteLine("分配临时文件:{0}", fn); + return fn; + } + + public static string GetTempFileName(string name) + { + var dir = Root; + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + return Path.Combine(dir, name); + } + + + public static void ClearTemp() + { + XTrace.WriteLine("清理临时目录:{0}", Root); + var dirs = Directory.GetDirectories(Root); + foreach (var dir in dirs) + { + try + { + XTrace.WriteLine("删除临时目录:{0}", dir); + Directory.Delete(dir, true); + } + catch (Exception e) + { + XTrace.WriteLine("目录删除失败"); + XTrace.WriteException(e); + } + } + + var files = Directory.GetFiles(Root); + foreach (var file in files) + { + try + { + XTrace.WriteLine("删除临时文件:{0}", file); + File.Delete(file); + } + catch (Exception e) + { + XTrace.WriteLine("文件删除失败"); + XTrace.WriteException(e); + } + } + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Icons.cs b/LuYao.Toolkit.Core/Icons.cs new file mode 100644 index 0000000..47fe97b --- /dev/null +++ b/LuYao.Toolkit.Core/Icons.cs @@ -0,0 +1,6401 @@ +namespace LuYao.Toolkit; + +public static class Icons +{ + public const string None = "None"; + public const string Abacus = "Abacus"; + public const string AbjadArabic = "AbjadArabic"; + public const string AbjadHebrew = "AbjadHebrew"; + public const string AbTesting = "AbTesting"; + public const string AbugidaDevanagari = "AbugidaDevanagari"; + public const string AbugidaThai = "AbugidaThai"; + public const string AccessPoint = "AccessPoint"; + public const string AccessPointCheck = "AccessPointCheck"; + public const string AccessPointMinus = "AccessPointMinus"; + public const string AccessPointNetwork = "AccessPointNetwork"; + public const string AccessPointNetworkOff = "AccessPointNetworkOff"; + public const string AccessPointOff = "AccessPointOff"; + public const string AccessPointPlus = "AccessPointPlus"; + public const string AccessPointRemove = "AccessPointRemove"; + public const string Account = "Account"; + public const string AccountAlert = "AccountAlert"; + public const string AccountAlertOutline = "AccountAlertOutline"; + public const string AccountArrowDown = "AccountArrowDown"; + public const string AccountArrowDownOutline = "AccountArrowDownOutline"; + public const string AccountArrowLeft = "AccountArrowLeft"; + public const string AccountArrowLeftOutline = "AccountArrowLeftOutline"; + public const string AccountArrowRight = "AccountArrowRight"; + public const string AccountArrowRightOutline = "AccountArrowRightOutline"; + public const string AccountArrowUp = "AccountArrowUp"; + public const string AccountArrowUpOutline = "AccountArrowUpOutline"; + public const string AccountBox = "AccountBox"; + public const string AccountBoxMultiple = "AccountBoxMultiple"; + public const string AccountBoxMultipleOutline = "AccountBoxMultipleOutline"; + public const string AccountBoxOutline = "AccountBoxOutline"; + public const string AccountCancel = "AccountCancel"; + public const string AccountCancelOutline = "AccountCancelOutline"; + public const string AccountCash = "AccountCash"; + public const string AccountCashOutline = "AccountCashOutline"; + public const string AccountCheck = "AccountCheck"; + public const string AccountCheckOutline = "AccountCheckOutline"; + public const string AccountChild = "AccountChild"; + public const string AccountChildCircle = "AccountChildCircle"; + public const string AccountChildOutline = "AccountChildOutline"; + public const string AccountCircle = "AccountCircle"; + public const string AccountCircleOutline = "AccountCircleOutline"; + public const string AccountClock = "AccountClock"; + public const string AccountClockOutline = "AccountClockOutline"; + public const string AccountCog = "AccountCog"; + public const string AccountCogOutline = "AccountCogOutline"; + public const string AccountConvert = "AccountConvert"; + public const string AccountConvertOutline = "AccountConvertOutline"; + public const string AccountCowboyHat = "AccountCowboyHat"; + public const string AccountCowboyHatOutline = "AccountCowboyHatOutline"; + public const string AccountDetails = "AccountDetails"; + public const string AccountDetailsOutline = "AccountDetailsOutline"; + public const string AccountEdit = "AccountEdit"; + public const string AccountEditOutline = "AccountEditOutline"; + public const string AccountEye = "AccountEye"; + public const string AccountEyeOutline = "AccountEyeOutline"; + public const string AccountFilter = "AccountFilter"; + public const string AccountFilterOutline = "AccountFilterOutline"; + public const string AccountGroup = "AccountGroup"; + public const string AccountGroupOutline = "AccountGroupOutline"; + public const string AccountHardHat = "AccountHardHat"; + public const string AccountHeart = "AccountHeart"; + public const string AccountHeartOutline = "AccountHeartOutline"; + public const string AccountInjury = "AccountInjury"; + public const string AccountInjuryOutline = "AccountInjuryOutline"; + public const string AccountKey = "AccountKey"; + public const string AccountKeyOutline = "AccountKeyOutline"; + public const string AccountLock = "AccountLock"; + public const string AccountLockOutline = "AccountLockOutline"; + public const string AccountMinus = "AccountMinus"; + public const string AccountMinusOutline = "AccountMinusOutline"; + public const string AccountMultiple = "AccountMultiple"; + public const string AccountMultipleCheck = "AccountMultipleCheck"; + public const string AccountMultipleCheckOutline = "AccountMultipleCheckOutline"; + public const string AccountMultipleMinus = "AccountMultipleMinus"; + public const string AccountMultipleMinusOutline = "AccountMultipleMinusOutline"; + public const string AccountMultipleOutline = "AccountMultipleOutline"; + public const string AccountMultiplePlus = "AccountMultiplePlus"; + public const string AccountMultiplePlusOutline = "AccountMultiplePlusOutline"; + public const string AccountMultipleRemove = "AccountMultipleRemove"; + public const string AccountMultipleRemoveOutline = "AccountMultipleRemoveOutline"; + public const string AccountMusic = "AccountMusic"; + public const string AccountMusicOutline = "AccountMusicOutline"; + public const string AccountNetwork = "AccountNetwork"; + public const string AccountNetworkOutline = "AccountNetworkOutline"; + public const string AccountOff = "AccountOff"; + public const string AccountOffOutline = "AccountOffOutline"; + public const string AccountOutline = "AccountOutline"; + public const string AccountPlus = "AccountPlus"; + public const string AccountPlusOutline = "AccountPlusOutline"; + public const string AccountQuestion = "AccountQuestion"; + public const string AccountQuestionOutline = "AccountQuestionOutline"; + public const string AccountReactivate = "AccountReactivate"; + public const string AccountReactivateOutline = "AccountReactivateOutline"; + public const string AccountRemove = "AccountRemove"; + public const string AccountRemoveOutline = "AccountRemoveOutline"; + public const string AccountSearch = "AccountSearch"; + public const string AccountSearchOutline = "AccountSearchOutline"; + public const string AccountSettings = "AccountSettings"; + public const string AccountSettingsOutline = "AccountSettingsOutline"; + public const string AccountStar = "AccountStar"; + public const string AccountStarOutline = "AccountStarOutline"; + public const string AccountSupervisor = "AccountSupervisor"; + public const string AccountSupervisorCircle = "AccountSupervisorCircle"; + public const string AccountSupervisorCircleOutline = "AccountSupervisorCircleOutline"; + public const string AccountSupervisorOutline = "AccountSupervisorOutline"; + public const string AccountSwitch = "AccountSwitch"; + public const string AccountSwitchOutline = "AccountSwitchOutline"; + public const string AccountTie = "AccountTie"; + public const string AccountTieHat = "AccountTieHat"; + public const string AccountTieHatOutline = "AccountTieHatOutline"; + public const string AccountTieOutline = "AccountTieOutline"; + public const string AccountTieVoice = "AccountTieVoice"; + public const string AccountTieVoiceOff = "AccountTieVoiceOff"; + public const string AccountTieVoiceOffOutline = "AccountTieVoiceOffOutline"; + public const string AccountTieVoiceOutline = "AccountTieVoiceOutline"; + public const string AccountVoice = "AccountVoice"; + public const string AccountVoiceOff = "AccountVoiceOff"; + public const string AccountWrench = "AccountWrench"; + public const string AccountWrenchOutline = "AccountWrenchOutline"; + public const string Adjust = "Adjust"; + public const string Airbag = "Airbag"; + public const string Airballoon = "Airballoon"; + public const string AirballoonOutline = "AirballoonOutline"; + public const string AirConditioner = "AirConditioner"; + public const string AirFilter = "AirFilter"; + public const string AirHorn = "AirHorn"; + public const string AirHumidifier = "AirHumidifier"; + public const string AirHumidifierOff = "AirHumidifierOff"; + public const string Airplane = "Airplane"; + public const string AirplaneAlert = "AirplaneAlert"; + public const string AirplaneCheck = "AirplaneCheck"; + public const string AirplaneClock = "AirplaneClock"; + public const string AirplaneCog = "AirplaneCog"; + public const string AirplaneEdit = "AirplaneEdit"; + public const string AirplaneLanding = "AirplaneLanding"; + public const string AirplaneMarker = "AirplaneMarker"; + public const string AirplaneMinus = "AirplaneMinus"; + public const string AirplaneOff = "AirplaneOff"; + public const string AirplanePlus = "AirplanePlus"; + public const string AirplaneRemove = "AirplaneRemove"; + public const string AirplaneSearch = "AirplaneSearch"; + public const string AirplaneSettings = "AirplaneSettings"; + public const string AirplaneTakeoff = "AirplaneTakeoff"; + public const string Airport = "Airport"; + public const string AirPurifier = "AirPurifier"; + public const string Alarm = "Alarm"; + public const string AlarmBell = "AlarmBell"; + public const string AlarmCheck = "AlarmCheck"; + public const string AlarmLight = "AlarmLight"; + public const string AlarmLightOff = "AlarmLightOff"; + public const string AlarmLightOffOutline = "AlarmLightOffOutline"; + public const string AlarmLightOutline = "AlarmLightOutline"; + public const string AlarmMultiple = "AlarmMultiple"; + public const string AlarmNote = "AlarmNote"; + public const string AlarmNoteOff = "AlarmNoteOff"; + public const string AlarmOff = "AlarmOff"; + public const string AlarmPanel = "AlarmPanel"; + public const string AlarmPanelOutline = "AlarmPanelOutline"; + public const string AlarmPlus = "AlarmPlus"; + public const string AlarmSnooze = "AlarmSnooze"; + public const string Album = "Album"; + public const string Alert = "Alert"; + public const string AlertBox = "AlertBox"; + public const string AlertBoxOutline = "AlertBoxOutline"; + public const string AlertCircle = "AlertCircle"; + public const string AlertCircleCheck = "AlertCircleCheck"; + public const string AlertCircleCheckOutline = "AlertCircleCheckOutline"; + public const string AlertCircleOutline = "AlertCircleOutline"; + public const string AlertDecagram = "AlertDecagram"; + public const string AlertDecagramOutline = "AlertDecagramOutline"; + public const string AlertMinus = "AlertMinus"; + public const string AlertMinusOutline = "AlertMinusOutline"; + public const string AlertOctagon = "AlertOctagon"; + public const string AlertOctagonOutline = "AlertOctagonOutline"; + public const string AlertOctagram = "AlertOctagram"; + public const string AlertOctagramOutline = "AlertOctagramOutline"; + public const string AlertOutline = "AlertOutline"; + public const string AlertPlus = "AlertPlus"; + public const string AlertPlusOutline = "AlertPlusOutline"; + public const string AlertRemove = "AlertRemove"; + public const string AlertRemoveOutline = "AlertRemoveOutline"; + public const string AlertRhombus = "AlertRhombus"; + public const string AlertRhombusOutline = "AlertRhombusOutline"; + public const string Alien = "Alien"; + public const string AlienOutline = "AlienOutline"; + public const string AlignHorizontalCenter = "AlignHorizontalCenter"; + public const string AlignHorizontalLeft = "AlignHorizontalLeft"; + public const string AlignHorizontalRight = "AlignHorizontalRight"; + public const string AlignVerticalBottom = "AlignVerticalBottom"; + public const string AlignVerticalCenter = "AlignVerticalCenter"; + public const string AlignVerticalTop = "AlignVerticalTop"; + public const string Allergy = "Allergy"; + public const string AllInclusive = "AllInclusive"; + public const string AllInclusiveBox = "AllInclusiveBox"; + public const string AllInclusiveBoxOutline = "AllInclusiveBoxOutline"; + public const string Alpha = "Alpha"; + public const string AlphaA = "AlphaA"; + public const string AlphaABox = "AlphaABox"; + public const string AlphaABoxOutline = "AlphaABoxOutline"; + public const string AlphaACircle = "AlphaACircle"; + public const string AlphaACircleOutline = "AlphaACircleOutline"; + public const string AlphaB = "AlphaB"; + public const string AlphaBBox = "AlphaBBox"; + public const string AlphaBBoxOutline = "AlphaBBoxOutline"; + public const string AlphaBCircle = "AlphaBCircle"; + public const string AlphaBCircleOutline = "AlphaBCircleOutline"; + public const string AlphabetAurebesh = "AlphabetAurebesh"; + public const string AlphabetCyrillic = "AlphabetCyrillic"; + public const string AlphabetGreek = "AlphabetGreek"; + public const string Alphabetical = "Alphabetical"; + public const string AlphabeticalOff = "AlphabeticalOff"; + public const string AlphabeticalVariant = "AlphabeticalVariant"; + public const string AlphabeticalVariantOff = "AlphabeticalVariantOff"; + public const string AlphabetLatin = "AlphabetLatin"; + public const string AlphabetPiqad = "AlphabetPiqad"; + public const string AlphabetTengwar = "AlphabetTengwar"; + public const string AlphaC = "AlphaC"; + public const string AlphaCBox = "AlphaCBox"; + public const string AlphaCBoxOutline = "AlphaCBoxOutline"; + public const string AlphaCCircle = "AlphaCCircle"; + public const string AlphaCCircleOutline = "AlphaCCircleOutline"; + public const string AlphaD = "AlphaD"; + public const string AlphaDBox = "AlphaDBox"; + public const string AlphaDBoxOutline = "AlphaDBoxOutline"; + public const string AlphaDCircle = "AlphaDCircle"; + public const string AlphaDCircleOutline = "AlphaDCircleOutline"; + public const string AlphaE = "AlphaE"; + public const string AlphaEBox = "AlphaEBox"; + public const string AlphaEBoxOutline = "AlphaEBoxOutline"; + public const string AlphaECircle = "AlphaECircle"; + public const string AlphaECircleOutline = "AlphaECircleOutline"; + public const string AlphaF = "AlphaF"; + public const string AlphaFBox = "AlphaFBox"; + public const string AlphaFBoxOutline = "AlphaFBoxOutline"; + public const string AlphaFCircle = "AlphaFCircle"; + public const string AlphaFCircleOutline = "AlphaFCircleOutline"; + public const string AlphaG = "AlphaG"; + public const string AlphaGBox = "AlphaGBox"; + public const string AlphaGBoxOutline = "AlphaGBoxOutline"; + public const string AlphaGCircle = "AlphaGCircle"; + public const string AlphaGCircleOutline = "AlphaGCircleOutline"; + public const string AlphaH = "AlphaH"; + public const string AlphaHBox = "AlphaHBox"; + public const string AlphaHBoxOutline = "AlphaHBoxOutline"; + public const string AlphaHCircle = "AlphaHCircle"; + public const string AlphaHCircleOutline = "AlphaHCircleOutline"; + public const string AlphaI = "AlphaI"; + public const string AlphaIBox = "AlphaIBox"; + public const string AlphaIBoxOutline = "AlphaIBoxOutline"; + public const string AlphaICircle = "AlphaICircle"; + public const string AlphaICircleOutline = "AlphaICircleOutline"; + public const string AlphaJ = "AlphaJ"; + public const string AlphaJBox = "AlphaJBox"; + public const string AlphaJBoxOutline = "AlphaJBoxOutline"; + public const string AlphaJCircle = "AlphaJCircle"; + public const string AlphaJCircleOutline = "AlphaJCircleOutline"; + public const string AlphaK = "AlphaK"; + public const string AlphaKBox = "AlphaKBox"; + public const string AlphaKBoxOutline = "AlphaKBoxOutline"; + public const string AlphaKCircle = "AlphaKCircle"; + public const string AlphaKCircleOutline = "AlphaKCircleOutline"; + public const string AlphaL = "AlphaL"; + public const string AlphaLBox = "AlphaLBox"; + public const string AlphaLBoxOutline = "AlphaLBoxOutline"; + public const string AlphaLCircle = "AlphaLCircle"; + public const string AlphaLCircleOutline = "AlphaLCircleOutline"; + public const string AlphaM = "AlphaM"; + public const string AlphaMBox = "AlphaMBox"; + public const string AlphaMBoxOutline = "AlphaMBoxOutline"; + public const string AlphaMCircle = "AlphaMCircle"; + public const string AlphaMCircleOutline = "AlphaMCircleOutline"; + public const string AlphaN = "AlphaN"; + public const string AlphaNBox = "AlphaNBox"; + public const string AlphaNBoxOutline = "AlphaNBoxOutline"; + public const string AlphaNCircle = "AlphaNCircle"; + public const string AlphaNCircleOutline = "AlphaNCircleOutline"; + public const string AlphaO = "AlphaO"; + public const string AlphaOBox = "AlphaOBox"; + public const string AlphaOBoxOutline = "AlphaOBoxOutline"; + public const string AlphaOCircle = "AlphaOCircle"; + public const string AlphaOCircleOutline = "AlphaOCircleOutline"; + public const string AlphaP = "AlphaP"; + public const string AlphaPBox = "AlphaPBox"; + public const string AlphaPBoxOutline = "AlphaPBoxOutline"; + public const string AlphaPCircle = "AlphaPCircle"; + public const string AlphaPCircleOutline = "AlphaPCircleOutline"; + public const string AlphaQ = "AlphaQ"; + public const string AlphaQBox = "AlphaQBox"; + public const string AlphaQBoxOutline = "AlphaQBoxOutline"; + public const string AlphaQCircle = "AlphaQCircle"; + public const string AlphaQCircleOutline = "AlphaQCircleOutline"; + public const string AlphaR = "AlphaR"; + public const string AlphaRBox = "AlphaRBox"; + public const string AlphaRBoxOutline = "AlphaRBoxOutline"; + public const string AlphaRCircle = "AlphaRCircle"; + public const string AlphaRCircleOutline = "AlphaRCircleOutline"; + public const string AlphaS = "AlphaS"; + public const string AlphaSBox = "AlphaSBox"; + public const string AlphaSBoxOutline = "AlphaSBoxOutline"; + public const string AlphaSCircle = "AlphaSCircle"; + public const string AlphaSCircleOutline = "AlphaSCircleOutline"; + public const string AlphaT = "AlphaT"; + public const string AlphaTBox = "AlphaTBox"; + public const string AlphaTBoxOutline = "AlphaTBoxOutline"; + public const string AlphaTCircle = "AlphaTCircle"; + public const string AlphaTCircleOutline = "AlphaTCircleOutline"; + public const string AlphaU = "AlphaU"; + public const string AlphaUBox = "AlphaUBox"; + public const string AlphaUBoxOutline = "AlphaUBoxOutline"; + public const string AlphaUCircle = "AlphaUCircle"; + public const string AlphaUCircleOutline = "AlphaUCircleOutline"; + public const string AlphaV = "AlphaV"; + public const string AlphaVBox = "AlphaVBox"; + public const string AlphaVBoxOutline = "AlphaVBoxOutline"; + public const string AlphaVCircle = "AlphaVCircle"; + public const string AlphaVCircleOutline = "AlphaVCircleOutline"; + public const string AlphaW = "AlphaW"; + public const string AlphaWBox = "AlphaWBox"; + public const string AlphaWBoxOutline = "AlphaWBoxOutline"; + public const string AlphaWCircle = "AlphaWCircle"; + public const string AlphaWCircleOutline = "AlphaWCircleOutline"; + public const string AlphaX = "AlphaX"; + public const string AlphaXBox = "AlphaXBox"; + public const string AlphaXBoxOutline = "AlphaXBoxOutline"; + public const string AlphaXCircle = "AlphaXCircle"; + public const string AlphaXCircleOutline = "AlphaXCircleOutline"; + public const string AlphaY = "AlphaY"; + public const string AlphaYBox = "AlphaYBox"; + public const string AlphaYBoxOutline = "AlphaYBoxOutline"; + public const string AlphaYCircle = "AlphaYCircle"; + public const string AlphaYCircleOutline = "AlphaYCircleOutline"; + public const string AlphaZ = "AlphaZ"; + public const string AlphaZBox = "AlphaZBox"; + public const string AlphaZBoxOutline = "AlphaZBoxOutline"; + public const string AlphaZCircle = "AlphaZCircle"; + public const string AlphaZCircleOutline = "AlphaZCircleOutline"; + public const string Altimeter = "Altimeter"; + public const string Ambulance = "Ambulance"; + public const string Ammunition = "Ammunition"; + public const string Ampersand = "Ampersand"; + public const string Amplifier = "Amplifier"; + public const string AmplifierOff = "AmplifierOff"; + public const string Anchor = "Anchor"; + public const string Android = "Android"; + public const string AndroidMessages = "AndroidMessages"; + public const string AndroidStudio = "AndroidStudio"; + public const string AngleAcute = "AngleAcute"; + public const string AngleObtuse = "AngleObtuse"; + public const string AngleRight = "AngleRight"; + public const string Angular = "Angular"; + public const string Angularjs = "Angularjs"; + public const string Animation = "Animation"; + public const string AnimationOutline = "AnimationOutline"; + public const string AnimationPlay = "AnimationPlay"; + public const string AnimationPlayOutline = "AnimationPlayOutline"; + public const string Ansible = "Ansible"; + public const string Antenna = "Antenna"; + public const string Anvil = "Anvil"; + public const string ApacheKafka = "ApacheKafka"; + public const string Api = "Api"; + public const string ApiOff = "ApiOff"; + public const string Apple = "Apple"; + public const string AppleFinder = "AppleFinder"; + public const string AppleIcloud = "AppleIcloud"; + public const string AppleIos = "AppleIos"; + public const string AppleKeyboardCaps = "AppleKeyboardCaps"; + public const string AppleKeyboardCommand = "AppleKeyboardCommand"; + public const string AppleKeyboardControl = "AppleKeyboardControl"; + public const string AppleKeyboardOption = "AppleKeyboardOption"; + public const string AppleKeyboardShift = "AppleKeyboardShift"; + public const string AppleSafari = "AppleSafari"; + public const string Application = "Application"; + public const string ApplicationArray = "ApplicationArray"; + public const string ApplicationArrayOutline = "ApplicationArrayOutline"; + public const string ApplicationBraces = "ApplicationBraces"; + public const string ApplicationBracesOutline = "ApplicationBracesOutline"; + public const string ApplicationBrackets = "ApplicationBrackets"; + public const string ApplicationBracketsOutline = "ApplicationBracketsOutline"; + public const string ApplicationCog = "ApplicationCog"; + public const string ApplicationCogOutline = "ApplicationCogOutline"; + public const string ApplicationEdit = "ApplicationEdit"; + public const string ApplicationEditOutline = "ApplicationEditOutline"; + public const string ApplicationExport = "ApplicationExport"; + public const string ApplicationImport = "ApplicationImport"; + public const string ApplicationOutline = "ApplicationOutline"; + public const string ApplicationParentheses = "ApplicationParentheses"; + public const string ApplicationParenthesesOutline = "ApplicationParenthesesOutline"; + public const string ApplicationSettings = "ApplicationSettings"; + public const string ApplicationSettingsOutline = "ApplicationSettingsOutline"; + public const string ApplicationVariable = "ApplicationVariable"; + public const string ApplicationVariableOutline = "ApplicationVariableOutline"; + public const string ApproximatelyEqual = "ApproximatelyEqual"; + public const string ApproximatelyEqualBox = "ApproximatelyEqualBox"; + public const string Apps = "Apps"; + public const string AppsBox = "AppsBox"; + public const string Arch = "Arch"; + public const string Archive = "Archive"; + public const string ArchiveAlert = "ArchiveAlert"; + public const string ArchiveAlertOutline = "ArchiveAlertOutline"; + public const string ArchiveArrowDown = "ArchiveArrowDown"; + public const string ArchiveArrowDownOutline = "ArchiveArrowDownOutline"; + public const string ArchiveArrowUp = "ArchiveArrowUp"; + public const string ArchiveArrowUpOutline = "ArchiveArrowUpOutline"; + public const string ArchiveCancel = "ArchiveCancel"; + public const string ArchiveCancelOutline = "ArchiveCancelOutline"; + public const string ArchiveCheck = "ArchiveCheck"; + public const string ArchiveCheckOutline = "ArchiveCheckOutline"; + public const string ArchiveClock = "ArchiveClock"; + public const string ArchiveClockOutline = "ArchiveClockOutline"; + public const string ArchiveCog = "ArchiveCog"; + public const string ArchiveCogOutline = "ArchiveCogOutline"; + public const string ArchiveEdit = "ArchiveEdit"; + public const string ArchiveEditOutline = "ArchiveEditOutline"; + public const string ArchiveEye = "ArchiveEye"; + public const string ArchiveEyeOutline = "ArchiveEyeOutline"; + public const string ArchiveLock = "ArchiveLock"; + public const string ArchiveLockOpen = "ArchiveLockOpen"; + public const string ArchiveLockOpenOutline = "ArchiveLockOpenOutline"; + public const string ArchiveLockOutline = "ArchiveLockOutline"; + public const string ArchiveMarker = "ArchiveMarker"; + public const string ArchiveMarkerOutline = "ArchiveMarkerOutline"; + public const string ArchiveMinus = "ArchiveMinus"; + public const string ArchiveMinusOutline = "ArchiveMinusOutline"; + public const string ArchiveMusic = "ArchiveMusic"; + public const string ArchiveMusicOutline = "ArchiveMusicOutline"; + public const string ArchiveOff = "ArchiveOff"; + public const string ArchiveOffOutline = "ArchiveOffOutline"; + public const string ArchiveOutline = "ArchiveOutline"; + public const string ArchivePlus = "ArchivePlus"; + public const string ArchivePlusOutline = "ArchivePlusOutline"; + public const string ArchiveRefresh = "ArchiveRefresh"; + public const string ArchiveRefreshOutline = "ArchiveRefreshOutline"; + public const string ArchiveRemove = "ArchiveRemove"; + public const string ArchiveRemoveOutline = "ArchiveRemoveOutline"; + public const string ArchiveSearch = "ArchiveSearch"; + public const string ArchiveSearchOutline = "ArchiveSearchOutline"; + public const string ArchiveSettings = "ArchiveSettings"; + public const string ArchiveSettingsOutline = "ArchiveSettingsOutline"; + public const string ArchiveStar = "ArchiveStar"; + public const string ArchiveStarOutline = "ArchiveStarOutline"; + public const string ArchiveSync = "ArchiveSync"; + public const string ArchiveSyncOutline = "ArchiveSyncOutline"; + public const string ArmFlex = "ArmFlex"; + public const string ArmFlexOutline = "ArmFlexOutline"; + public const string ArrangeBringForward = "ArrangeBringForward"; + public const string ArrangeBringToFront = "ArrangeBringToFront"; + public const string ArrangeSendBackward = "ArrangeSendBackward"; + public const string ArrangeSendToBack = "ArrangeSendToBack"; + public const string ArrowAll = "ArrowAll"; + public const string ArrowBottomLeft = "ArrowBottomLeft"; + public const string ArrowBottomLeftBoldOutline = "ArrowBottomLeftBoldOutline"; + public const string ArrowBottomLeftThick = "ArrowBottomLeftThick"; + public const string ArrowBottomLeftThinCircleOutline = "ArrowBottomLeftThinCircleOutline"; + public const string ArrowBottomRight = "ArrowBottomRight"; + public const string ArrowBottomRightBoldOutline = "ArrowBottomRightBoldOutline"; + public const string ArrowBottomRightThick = "ArrowBottomRightThick"; + public const string ArrowBottomRightThinCircleOutline = "ArrowBottomRightThinCircleOutline"; + public const string ArrowCollapse = "ArrowCollapse"; + public const string ArrowCollapseAll = "ArrowCollapseAll"; + public const string ArrowCollapseDown = "ArrowCollapseDown"; + public const string ArrowCollapseHorizontal = "ArrowCollapseHorizontal"; + public const string ArrowCollapseLeft = "ArrowCollapseLeft"; + public const string ArrowCollapseRight = "ArrowCollapseRight"; + public const string ArrowCollapseUp = "ArrowCollapseUp"; + public const string ArrowCollapseVertical = "ArrowCollapseVertical"; + public const string ArrowDecision = "ArrowDecision"; + public const string ArrowDecisionAuto = "ArrowDecisionAuto"; + public const string ArrowDecisionAutoOutline = "ArrowDecisionAutoOutline"; + public const string ArrowDecisionOutline = "ArrowDecisionOutline"; + public const string ArrowDown = "ArrowDown"; + public const string ArrowDownBold = "ArrowDownBold"; + public const string ArrowDownBoldBox = "ArrowDownBoldBox"; + public const string ArrowDownBoldBoxOutline = "ArrowDownBoldBoxOutline"; + public const string ArrowDownBoldCircle = "ArrowDownBoldCircle"; + public const string ArrowDownBoldCircleOutline = "ArrowDownBoldCircleOutline"; + public const string ArrowDownBoldHexagonOutline = "ArrowDownBoldHexagonOutline"; + public const string ArrowDownBoldOutline = "ArrowDownBoldOutline"; + public const string ArrowDownBox = "ArrowDownBox"; + public const string ArrowDownCircle = "ArrowDownCircle"; + public const string ArrowDownCircleOutline = "ArrowDownCircleOutline"; + public const string ArrowDownDropCircle = "ArrowDownDropCircle"; + public const string ArrowDownDropCircleOutline = "ArrowDownDropCircleOutline"; + public const string ArrowDownLeft = "ArrowDownLeft"; + public const string ArrowDownLeftBold = "ArrowDownLeftBold"; + public const string ArrowDownRight = "ArrowDownRight"; + public const string ArrowDownRightBold = "ArrowDownRightBold"; + public const string ArrowDownThick = "ArrowDownThick"; + public const string ArrowDownThinCircleOutline = "ArrowDownThinCircleOutline"; + public const string ArrowExpand = "ArrowExpand"; + public const string ArrowExpandAll = "ArrowExpandAll"; + public const string ArrowExpandDown = "ArrowExpandDown"; + public const string ArrowExpandHorizontal = "ArrowExpandHorizontal"; + public const string ArrowExpandLeft = "ArrowExpandLeft"; + public const string ArrowExpandRight = "ArrowExpandRight"; + public const string ArrowExpandUp = "ArrowExpandUp"; + public const string ArrowExpandVertical = "ArrowExpandVertical"; + public const string ArrowHorizontalLock = "ArrowHorizontalLock"; + public const string ArrowLeft = "ArrowLeft"; + public const string ArrowLeftBold = "ArrowLeftBold"; + public const string ArrowLeftBoldBox = "ArrowLeftBoldBox"; + public const string ArrowLeftBoldBoxOutline = "ArrowLeftBoldBoxOutline"; + public const string ArrowLeftBoldCircle = "ArrowLeftBoldCircle"; + public const string ArrowLeftBoldCircleOutline = "ArrowLeftBoldCircleOutline"; + public const string ArrowLeftBoldHexagonOutline = "ArrowLeftBoldHexagonOutline"; + public const string ArrowLeftBoldOutline = "ArrowLeftBoldOutline"; + public const string ArrowLeftBottom = "ArrowLeftBottom"; + public const string ArrowLeftBottomBold = "ArrowLeftBottomBold"; + public const string ArrowLeftBox = "ArrowLeftBox"; + public const string ArrowLeftCircle = "ArrowLeftCircle"; + public const string ArrowLeftCircleOutline = "ArrowLeftCircleOutline"; + public const string ArrowLeftDropCircle = "ArrowLeftDropCircle"; + public const string ArrowLeftDropCircleOutline = "ArrowLeftDropCircleOutline"; + public const string ArrowLeftRight = "ArrowLeftRight"; + public const string ArrowLeftRightBold = "ArrowLeftRightBold"; + public const string ArrowLeftRightBoldOutline = "ArrowLeftRightBoldOutline"; + public const string ArrowLeftThick = "ArrowLeftThick"; + public const string ArrowLeftThinCircleOutline = "ArrowLeftThinCircleOutline"; + public const string ArrowLeftTop = "ArrowLeftTop"; + public const string ArrowLeftTopBold = "ArrowLeftTopBold"; + public const string ArrowProjectile = "ArrowProjectile"; + public const string ArrowProjectileMultiple = "ArrowProjectileMultiple"; + public const string ArrowRight = "ArrowRight"; + public const string ArrowRightBold = "ArrowRightBold"; + public const string ArrowRightBoldBox = "ArrowRightBoldBox"; + public const string ArrowRightBoldBoxOutline = "ArrowRightBoldBoxOutline"; + public const string ArrowRightBoldCircle = "ArrowRightBoldCircle"; + public const string ArrowRightBoldCircleOutline = "ArrowRightBoldCircleOutline"; + public const string ArrowRightBoldHexagonOutline = "ArrowRightBoldHexagonOutline"; + public const string ArrowRightBoldOutline = "ArrowRightBoldOutline"; + public const string ArrowRightBottom = "ArrowRightBottom"; + public const string ArrowRightBottomBold = "ArrowRightBottomBold"; + public const string ArrowRightBox = "ArrowRightBox"; + public const string ArrowRightCircle = "ArrowRightCircle"; + public const string ArrowRightCircleOutline = "ArrowRightCircleOutline"; + public const string ArrowRightDropCircle = "ArrowRightDropCircle"; + public const string ArrowRightDropCircleOutline = "ArrowRightDropCircleOutline"; + public const string ArrowRightThick = "ArrowRightThick"; + public const string ArrowRightThinCircleOutline = "ArrowRightThinCircleOutline"; + public const string ArrowRightTop = "ArrowRightTop"; + public const string ArrowRightTopBold = "ArrowRightTopBold"; + public const string ArrowSplitHorizontal = "ArrowSplitHorizontal"; + public const string ArrowSplitVertical = "ArrowSplitVertical"; + public const string ArrowTopLeft = "ArrowTopLeft"; + public const string ArrowTopLeftBoldOutline = "ArrowTopLeftBoldOutline"; + public const string ArrowTopLeftBottomRight = "ArrowTopLeftBottomRight"; + public const string ArrowTopLeftBottomRightBold = "ArrowTopLeftBottomRightBold"; + public const string ArrowTopLeftThick = "ArrowTopLeftThick"; + public const string ArrowTopLeftThinCircleOutline = "ArrowTopLeftThinCircleOutline"; + public const string ArrowTopRight = "ArrowTopRight"; + public const string ArrowTopRightBoldOutline = "ArrowTopRightBoldOutline"; + public const string ArrowTopRightBottomLeft = "ArrowTopRightBottomLeft"; + public const string ArrowTopRightBottomLeftBold = "ArrowTopRightBottomLeftBold"; + public const string ArrowTopRightThick = "ArrowTopRightThick"; + public const string ArrowTopRightThinCircleOutline = "ArrowTopRightThinCircleOutline"; + public const string ArrowUDownLeft = "ArrowUDownLeft"; + public const string ArrowUDownLeftBold = "ArrowUDownLeftBold"; + public const string ArrowUDownRight = "ArrowUDownRight"; + public const string ArrowUDownRightBold = "ArrowUDownRightBold"; + public const string ArrowULeftBottom = "ArrowULeftBottom"; + public const string ArrowULeftBottomBold = "ArrowULeftBottomBold"; + public const string ArrowULeftTop = "ArrowULeftTop"; + public const string ArrowULeftTopBold = "ArrowULeftTopBold"; + public const string ArrowUp = "ArrowUp"; + public const string ArrowUpBold = "ArrowUpBold"; + public const string ArrowUpBoldBox = "ArrowUpBoldBox"; + public const string ArrowUpBoldBoxOutline = "ArrowUpBoldBoxOutline"; + public const string ArrowUpBoldCircle = "ArrowUpBoldCircle"; + public const string ArrowUpBoldCircleOutline = "ArrowUpBoldCircleOutline"; + public const string ArrowUpBoldHexagonOutline = "ArrowUpBoldHexagonOutline"; + public const string ArrowUpBoldOutline = "ArrowUpBoldOutline"; + public const string ArrowUpBox = "ArrowUpBox"; + public const string ArrowUpCircle = "ArrowUpCircle"; + public const string ArrowUpCircleOutline = "ArrowUpCircleOutline"; + public const string ArrowUpDown = "ArrowUpDown"; + public const string ArrowUpDownBold = "ArrowUpDownBold"; + public const string ArrowUpDownBoldOutline = "ArrowUpDownBoldOutline"; + public const string ArrowUpDropCircle = "ArrowUpDropCircle"; + public const string ArrowUpDropCircleOutline = "ArrowUpDropCircleOutline"; + public const string ArrowUpLeft = "ArrowUpLeft"; + public const string ArrowUpLeftBold = "ArrowUpLeftBold"; + public const string ArrowUpRight = "ArrowUpRight"; + public const string ArrowUpRightBold = "ArrowUpRightBold"; + public const string ArrowUpThick = "ArrowUpThick"; + public const string ArrowUpThinCircleOutline = "ArrowUpThinCircleOutline"; + public const string ArrowURightBottom = "ArrowURightBottom"; + public const string ArrowURightBottomBold = "ArrowURightBottomBold"; + public const string ArrowURightTop = "ArrowURightTop"; + public const string ArrowURightTopBold = "ArrowURightTopBold"; + public const string ArrowUUpLeft = "ArrowUUpLeft"; + public const string ArrowUUpLeftBold = "ArrowUUpLeftBold"; + public const string ArrowUUpRight = "ArrowUUpRight"; + public const string ArrowUUpRightBold = "ArrowUUpRightBold"; + public const string ArrowVerticalLock = "ArrowVerticalLock"; + public const string Artstation = "Artstation"; + public const string AspectRatio = "AspectRatio"; + public const string Assistant = "Assistant"; + public const string Asterisk = "Asterisk"; + public const string At = "At"; + public const string Atlassian = "Atlassian"; + public const string Atm = "Atm"; + public const string Atom = "Atom"; + public const string AtomVariant = "AtomVariant"; + public const string Attachment = "Attachment"; + public const string AudioInputRca = "AudioInputRca"; + public const string AudioInputStereoMinijack = "AudioInputStereoMinijack"; + public const string AudioInputXlr = "AudioInputXlr"; + public const string AudioVideo = "AudioVideo"; + public const string AudioVideoOff = "AudioVideoOff"; + public const string AugmentedReality = "AugmentedReality"; + public const string AutoDownload = "AutoDownload"; + public const string AutoFix = "AutoFix"; + public const string Autorenew = "Autorenew"; + public const string AutoUpload = "AutoUpload"; + public const string AvTimer = "AvTimer"; + public const string Aws = "Aws"; + public const string Axe = "Axe"; + public const string AxeBattle = "AxeBattle"; + public const string Axis = "Axis"; + public const string AxisArrow = "AxisArrow"; + public const string AxisArrowInfo = "AxisArrowInfo"; + public const string AxisArrowLock = "AxisArrowLock"; + public const string AxisLock = "AxisLock"; + public const string AxisXArrow = "AxisXArrow"; + public const string AxisXArrowLock = "AxisXArrowLock"; + public const string AxisXRotateClockwise = "AxisXRotateClockwise"; + public const string AxisXRotateCounterclockwise = "AxisXRotateCounterclockwise"; + public const string AxisXYArrowLock = "AxisXYArrowLock"; + public const string AxisYArrow = "AxisYArrow"; + public const string AxisYArrowLock = "AxisYArrowLock"; + public const string AxisYRotateClockwise = "AxisYRotateClockwise"; + public const string AxisYRotateCounterclockwise = "AxisYRotateCounterclockwise"; + public const string AxisZArrow = "AxisZArrow"; + public const string AxisZArrowLock = "AxisZArrowLock"; + public const string AxisZRotateClockwise = "AxisZRotateClockwise"; + public const string AxisZRotateCounterclockwise = "AxisZRotateCounterclockwise"; + public const string Babel = "Babel"; + public const string Baby = "Baby"; + public const string BabyBottle = "BabyBottle"; + public const string BabyBottleOutline = "BabyBottleOutline"; + public const string BabyBuggy = "BabyBuggy"; + public const string BabyCarriage = "BabyCarriage"; + public const string BabyCarriageOff = "BabyCarriageOff"; + public const string BabyFace = "BabyFace"; + public const string BabyFaceOutline = "BabyFaceOutline"; + public const string Backburger = "Backburger"; + public const string Backspace = "Backspace"; + public const string BackspaceOutline = "BackspaceOutline"; + public const string BackspaceReverse = "BackspaceReverse"; + public const string BackspaceReverseOutline = "BackspaceReverseOutline"; + public const string BackupRestore = "BackupRestore"; + public const string Bacteria = "Bacteria"; + public const string BacteriaOutline = "BacteriaOutline"; + public const string BadgeAccount = "BadgeAccount"; + public const string BadgeAccountAlert = "BadgeAccountAlert"; + public const string BadgeAccountAlertOutline = "BadgeAccountAlertOutline"; + public const string BadgeAccountHorizontal = "BadgeAccountHorizontal"; + public const string BadgeAccountHorizontalOutline = "BadgeAccountHorizontalOutline"; + public const string BadgeAccountOutline = "BadgeAccountOutline"; + public const string Badminton = "Badminton"; + public const string BagCarryOn = "BagCarryOn"; + public const string BagCarryOnCheck = "BagCarryOnCheck"; + public const string BagCarryOnOff = "BagCarryOnOff"; + public const string BagChecked = "BagChecked"; + public const string BagPersonal = "BagPersonal"; + public const string BagPersonalOff = "BagPersonalOff"; + public const string BagPersonalOffOutline = "BagPersonalOffOutline"; + public const string BagPersonalOutline = "BagPersonalOutline"; + public const string BagSuitcase = "BagSuitcase"; + public const string BagSuitcaseOff = "BagSuitcaseOff"; + public const string BagSuitcaseOffOutline = "BagSuitcaseOffOutline"; + public const string BagSuitcaseOutline = "BagSuitcaseOutline"; + public const string Baguette = "Baguette"; + public const string Balcony = "Balcony"; + public const string Balloon = "Balloon"; + public const string Ballot = "Ballot"; + public const string BallotOutline = "BallotOutline"; + public const string BallotRecount = "BallotRecount"; + public const string BallotRecountOutline = "BallotRecountOutline"; + public const string Bandage = "Bandage"; + public const string Bank = "Bank"; + public const string BankCheck = "BankCheck"; + public const string BankMinus = "BankMinus"; + public const string BankOff = "BankOff"; + public const string BankOffOutline = "BankOffOutline"; + public const string BankOutline = "BankOutline"; + public const string BankPlus = "BankPlus"; + public const string BankRemove = "BankRemove"; + public const string BankTransfer = "BankTransfer"; + public const string BankTransferIn = "BankTransferIn"; + public const string BankTransferOut = "BankTransferOut"; + public const string Barcode = "Barcode"; + public const string BarcodeOff = "BarcodeOff"; + public const string BarcodeScan = "BarcodeScan"; + public const string Barley = "Barley"; + public const string BarleyOff = "BarleyOff"; + public const string Barn = "Barn"; + public const string Barrel = "Barrel"; + public const string Baseball = "Baseball"; + public const string BaseballBat = "BaseballBat"; + public const string BaseballDiamond = "BaseballDiamond"; + public const string BaseballDiamondOutline = "BaseballDiamondOutline"; + public const string Bash = "Bash"; + public const string Basket = "Basket"; + public const string Basketball = "Basketball"; + public const string BasketballHoop = "BasketballHoop"; + public const string BasketballHoopOutline = "BasketballHoopOutline"; + public const string BasketCheck = "BasketCheck"; + public const string BasketCheckOutline = "BasketCheckOutline"; + public const string BasketFill = "BasketFill"; + public const string BasketMinus = "BasketMinus"; + public const string BasketMinusOutline = "BasketMinusOutline"; + public const string BasketOff = "BasketOff"; + public const string BasketOffOutline = "BasketOffOutline"; + public const string BasketOutline = "BasketOutline"; + public const string BasketPlus = "BasketPlus"; + public const string BasketPlusOutline = "BasketPlusOutline"; + public const string BasketRemove = "BasketRemove"; + public const string BasketRemoveOutline = "BasketRemoveOutline"; + public const string BasketUnfill = "BasketUnfill"; + public const string Bat = "Bat"; + public const string Bathtub = "Bathtub"; + public const string BathtubOutline = "BathtubOutline"; + public const string Battery = "Battery"; + public const string Battery10 = "Battery10"; + public const string Battery10Bluetooth = "Battery10Bluetooth"; + public const string Battery20 = "Battery20"; + public const string Battery20Bluetooth = "Battery20Bluetooth"; + public const string Battery30 = "Battery30"; + public const string Battery30Bluetooth = "Battery30Bluetooth"; + public const string Battery40 = "Battery40"; + public const string Battery40Bluetooth = "Battery40Bluetooth"; + public const string Battery50 = "Battery50"; + public const string Battery50Bluetooth = "Battery50Bluetooth"; + public const string Battery60 = "Battery60"; + public const string Battery60Bluetooth = "Battery60Bluetooth"; + public const string Battery70 = "Battery70"; + public const string Battery70Bluetooth = "Battery70Bluetooth"; + public const string Battery80 = "Battery80"; + public const string Battery80Bluetooth = "Battery80Bluetooth"; + public const string Battery90 = "Battery90"; + public const string Battery90Bluetooth = "Battery90Bluetooth"; + public const string BatteryAlert = "BatteryAlert"; + public const string BatteryAlertBluetooth = "BatteryAlertBluetooth"; + public const string BatteryAlertVariant = "BatteryAlertVariant"; + public const string BatteryAlertVariantOutline = "BatteryAlertVariantOutline"; + public const string BatteryArrowDown = "BatteryArrowDown"; + public const string BatteryArrowDownOutline = "BatteryArrowDownOutline"; + public const string BatteryArrowUp = "BatteryArrowUp"; + public const string BatteryArrowUpOutline = "BatteryArrowUpOutline"; + public const string BatteryBluetooth = "BatteryBluetooth"; + public const string BatteryBluetoothVariant = "BatteryBluetoothVariant"; + public const string BatteryCharging = "BatteryCharging"; + public const string BatteryCharging10 = "BatteryCharging10"; + public const string BatteryCharging100 = "BatteryCharging100"; + public const string BatteryCharging20 = "BatteryCharging20"; + public const string BatteryCharging30 = "BatteryCharging30"; + public const string BatteryCharging40 = "BatteryCharging40"; + public const string BatteryCharging50 = "BatteryCharging50"; + public const string BatteryCharging60 = "BatteryCharging60"; + public const string BatteryCharging70 = "BatteryCharging70"; + public const string BatteryCharging80 = "BatteryCharging80"; + public const string BatteryCharging90 = "BatteryCharging90"; + public const string BatteryChargingHigh = "BatteryChargingHigh"; + public const string BatteryChargingLow = "BatteryChargingLow"; + public const string BatteryChargingMedium = "BatteryChargingMedium"; + public const string BatteryChargingOutline = "BatteryChargingOutline"; + public const string BatteryChargingWireless = "BatteryChargingWireless"; + public const string BatteryChargingWireless10 = "BatteryChargingWireless10"; + public const string BatteryChargingWireless20 = "BatteryChargingWireless20"; + public const string BatteryChargingWireless30 = "BatteryChargingWireless30"; + public const string BatteryChargingWireless40 = "BatteryChargingWireless40"; + public const string BatteryChargingWireless50 = "BatteryChargingWireless50"; + public const string BatteryChargingWireless60 = "BatteryChargingWireless60"; + public const string BatteryChargingWireless70 = "BatteryChargingWireless70"; + public const string BatteryChargingWireless80 = "BatteryChargingWireless80"; + public const string BatteryChargingWireless90 = "BatteryChargingWireless90"; + public const string BatteryChargingWirelessAlert = "BatteryChargingWirelessAlert"; + public const string BatteryChargingWirelessOutline = "BatteryChargingWirelessOutline"; + public const string BatteryCheck = "BatteryCheck"; + public const string BatteryCheckOutline = "BatteryCheckOutline"; + public const string BatteryHeart = "BatteryHeart"; + public const string BatteryHeartOutline = "BatteryHeartOutline"; + public const string BatteryHeartVariant = "BatteryHeartVariant"; + public const string BatteryHigh = "BatteryHigh"; + public const string BatteryLock = "BatteryLock"; + public const string BatteryLockOpen = "BatteryLockOpen"; + public const string BatteryLow = "BatteryLow"; + public const string BatteryMedium = "BatteryMedium"; + public const string BatteryMinus = "BatteryMinus"; + public const string BatteryMinusOutline = "BatteryMinusOutline"; + public const string BatteryMinusVariant = "BatteryMinusVariant"; + public const string BatteryNegative = "BatteryNegative"; + public const string BatteryOff = "BatteryOff"; + public const string BatteryOffOutline = "BatteryOffOutline"; + public const string BatteryOutline = "BatteryOutline"; + public const string BatteryPlus = "BatteryPlus"; + public const string BatteryPlusOutline = "BatteryPlusOutline"; + public const string BatteryPlusVariant = "BatteryPlusVariant"; + public const string BatteryPositive = "BatteryPositive"; + public const string BatteryRemove = "BatteryRemove"; + public const string BatteryRemoveOutline = "BatteryRemoveOutline"; + public const string BatterySync = "BatterySync"; + public const string BatterySyncOutline = "BatterySyncOutline"; + public const string BatteryUnknown = "BatteryUnknown"; + public const string BatteryUnknownBluetooth = "BatteryUnknownBluetooth"; + public const string Beach = "Beach"; + public const string Beaker = "Beaker"; + public const string BeakerAlert = "BeakerAlert"; + public const string BeakerAlertOutline = "BeakerAlertOutline"; + public const string BeakerCheck = "BeakerCheck"; + public const string BeakerCheckOutline = "BeakerCheckOutline"; + public const string BeakerMinus = "BeakerMinus"; + public const string BeakerMinusOutline = "BeakerMinusOutline"; + public const string BeakerOutline = "BeakerOutline"; + public const string BeakerPlus = "BeakerPlus"; + public const string BeakerPlusOutline = "BeakerPlusOutline"; + public const string BeakerQuestion = "BeakerQuestion"; + public const string BeakerQuestionOutline = "BeakerQuestionOutline"; + public const string BeakerRemove = "BeakerRemove"; + public const string BeakerRemoveOutline = "BeakerRemoveOutline"; + public const string Bed = "Bed"; + public const string BedDouble = "BedDouble"; + public const string BedDoubleOutline = "BedDoubleOutline"; + public const string BedEmpty = "BedEmpty"; + public const string BedKing = "BedKing"; + public const string BedKingOutline = "BedKingOutline"; + public const string BedOutline = "BedOutline"; + public const string BedQueen = "BedQueen"; + public const string BedQueenOutline = "BedQueenOutline"; + public const string BedSingle = "BedSingle"; + public const string BedSingleOutline = "BedSingleOutline"; + public const string Bee = "Bee"; + public const string BeeFlower = "BeeFlower"; + public const string BeehiveOffOutline = "BeehiveOffOutline"; + public const string BeehiveOutline = "BeehiveOutline"; + public const string Beekeeper = "Beekeeper"; + public const string Beer = "Beer"; + public const string BeerOutline = "BeerOutline"; + public const string Bell = "Bell"; + public const string BellAlert = "BellAlert"; + public const string BellAlertOutline = "BellAlertOutline"; + public const string BellBadge = "BellBadge"; + public const string BellBadgeOutline = "BellBadgeOutline"; + public const string BellCancel = "BellCancel"; + public const string BellCancelOutline = "BellCancelOutline"; + public const string BellCheck = "BellCheck"; + public const string BellCheckOutline = "BellCheckOutline"; + public const string BellCircle = "BellCircle"; + public const string BellCircleOutline = "BellCircleOutline"; + public const string BellMinus = "BellMinus"; + public const string BellMinusOutline = "BellMinusOutline"; + public const string BellOff = "BellOff"; + public const string BellOffOutline = "BellOffOutline"; + public const string BellOutline = "BellOutline"; + public const string BellPlus = "BellPlus"; + public const string BellPlusOutline = "BellPlusOutline"; + public const string BellRemove = "BellRemove"; + public const string BellRemoveOutline = "BellRemoveOutline"; + public const string BellRing = "BellRing"; + public const string BellRingOutline = "BellRingOutline"; + public const string BellSleep = "BellSleep"; + public const string BellSleepOutline = "BellSleepOutline"; + public const string Beta = "Beta"; + public const string Betamax = "Betamax"; + public const string Biathlon = "Biathlon"; + public const string Bicycle = "Bicycle"; + public const string BicycleBasket = "BicycleBasket"; + public const string BicycleCargo = "BicycleCargo"; + public const string BicycleElectric = "BicycleElectric"; + public const string BicyclePennyFarthing = "BicyclePennyFarthing"; + public const string Bike = "Bike"; + public const string BikeFast = "BikeFast"; + public const string Billboard = "Billboard"; + public const string Billiards = "Billiards"; + public const string BilliardsRack = "BilliardsRack"; + public const string Binoculars = "Binoculars"; + public const string Bio = "Bio"; + public const string Biohazard = "Biohazard"; + public const string Bird = "Bird"; + public const string Bitbucket = "Bitbucket"; + public const string Bitcoin = "Bitcoin"; + public const string BlackMesa = "BlackMesa"; + public const string Blender = "Blender"; + public const string BlenderOutline = "BlenderOutline"; + public const string BlenderSoftware = "BlenderSoftware"; + public const string Blinds = "Blinds"; + public const string BlindsOpen = "BlindsOpen"; + public const string BlockHelper = "BlockHelper"; + public const string BloodBag = "BloodBag"; + public const string Bluetooth = "Bluetooth"; + public const string BluetoothAudio = "BluetoothAudio"; + public const string BluetoothConnect = "BluetoothConnect"; + public const string BluetoothOff = "BluetoothOff"; + public const string BluetoothSettings = "BluetoothSettings"; + public const string BluetoothTransfer = "BluetoothTransfer"; + public const string Blur = "Blur"; + public const string BlurLinear = "BlurLinear"; + public const string BlurOff = "BlurOff"; + public const string BlurRadial = "BlurRadial"; + public const string Bolt = "Bolt"; + public const string Bomb = "Bomb"; + public const string BombOff = "BombOff"; + public const string Bone = "Bone"; + public const string Book = "Book"; + public const string BookAccount = "BookAccount"; + public const string BookAccountOutline = "BookAccountOutline"; + public const string BookAlert = "BookAlert"; + public const string BookAlertOutline = "BookAlertOutline"; + public const string BookAlphabet = "BookAlphabet"; + public const string BookArrowDown = "BookArrowDown"; + public const string BookArrowDownOutline = "BookArrowDownOutline"; + public const string BookArrowLeft = "BookArrowLeft"; + public const string BookArrowLeftOutline = "BookArrowLeftOutline"; + public const string BookArrowRight = "BookArrowRight"; + public const string BookArrowRightOutline = "BookArrowRightOutline"; + public const string BookArrowUp = "BookArrowUp"; + public const string BookArrowUpOutline = "BookArrowUpOutline"; + public const string BookCancel = "BookCancel"; + public const string BookCancelOutline = "BookCancelOutline"; + public const string BookCheck = "BookCheck"; + public const string BookCheckOutline = "BookCheckOutline"; + public const string BookClock = "BookClock"; + public const string BookClockOutline = "BookClockOutline"; + public const string BookCog = "BookCog"; + public const string BookCogOutline = "BookCogOutline"; + public const string BookCross = "BookCross"; + public const string BookEdit = "BookEdit"; + public const string BookEditOutline = "BookEditOutline"; + public const string BookEducation = "BookEducation"; + public const string BookEducationOutline = "BookEducationOutline"; + public const string BookInformationVariant = "BookInformationVariant"; + public const string BookLock = "BookLock"; + public const string BookLockOpen = "BookLockOpen"; + public const string BookLockOpenOutline = "BookLockOpenOutline"; + public const string BookLockOutline = "BookLockOutline"; + public const string Bookmark = "Bookmark"; + public const string BookmarkCheck = "BookmarkCheck"; + public const string BookmarkCheckOutline = "BookmarkCheckOutline"; + public const string BookMarker = "BookMarker"; + public const string BookMarkerOutline = "BookMarkerOutline"; + public const string BookmarkMinus = "BookmarkMinus"; + public const string BookmarkMinusOutline = "BookmarkMinusOutline"; + public const string BookmarkMultiple = "BookmarkMultiple"; + public const string BookmarkMultipleOutline = "BookmarkMultipleOutline"; + public const string BookmarkMusic = "BookmarkMusic"; + public const string BookmarkMusicOutline = "BookmarkMusicOutline"; + public const string BookmarkOff = "BookmarkOff"; + public const string BookmarkOffOutline = "BookmarkOffOutline"; + public const string BookmarkOutline = "BookmarkOutline"; + public const string BookmarkPlus = "BookmarkPlus"; + public const string BookmarkPlusOutline = "BookmarkPlusOutline"; + public const string BookmarkRemove = "BookmarkRemove"; + public const string BookmarkRemoveOutline = "BookmarkRemoveOutline"; + public const string BookMinus = "BookMinus"; + public const string BookMinusMultiple = "BookMinusMultiple"; + public const string BookMinusMultipleOutline = "BookMinusMultipleOutline"; + public const string BookMinusOutline = "BookMinusOutline"; + public const string BookMultiple = "BookMultiple"; + public const string BookMultipleOutline = "BookMultipleOutline"; + public const string BookMusic = "BookMusic"; + public const string BookMusicOutline = "BookMusicOutline"; + public const string BookOff = "BookOff"; + public const string BookOffOutline = "BookOffOutline"; + public const string BookOpen = "BookOpen"; + public const string BookOpenBlankVariant = "BookOpenBlankVariant"; + public const string BookOpenOutline = "BookOpenOutline"; + public const string BookOpenPageVariant = "BookOpenPageVariant"; + public const string BookOpenPageVariantOutline = "BookOpenPageVariantOutline"; + public const string BookOpenVariant = "BookOpenVariant"; + public const string BookOutline = "BookOutline"; + public const string BookPlay = "BookPlay"; + public const string BookPlayOutline = "BookPlayOutline"; + public const string BookPlus = "BookPlus"; + public const string BookPlusMultiple = "BookPlusMultiple"; + public const string BookPlusMultipleOutline = "BookPlusMultipleOutline"; + public const string BookPlusOutline = "BookPlusOutline"; + public const string BookRefresh = "BookRefresh"; + public const string BookRefreshOutline = "BookRefreshOutline"; + public const string BookRemove = "BookRemove"; + public const string BookRemoveMultiple = "BookRemoveMultiple"; + public const string BookRemoveMultipleOutline = "BookRemoveMultipleOutline"; + public const string BookRemoveOutline = "BookRemoveOutline"; + public const string BookSearch = "BookSearch"; + public const string BookSearchOutline = "BookSearchOutline"; + public const string BookSettings = "BookSettings"; + public const string BookSettingsOutline = "BookSettingsOutline"; + public const string Bookshelf = "Bookshelf"; + public const string BookSync = "BookSync"; + public const string BookSyncOutline = "BookSyncOutline"; + public const string BookVariant = "BookVariant"; + public const string BookVariantMultiple = "BookVariantMultiple"; + public const string Boombox = "Boombox"; + public const string Boomerang = "Boomerang"; + public const string BoomGate = "BoomGate"; + public const string BoomGateAlert = "BoomGateAlert"; + public const string BoomGateAlertOutline = "BoomGateAlertOutline"; + public const string BoomGateArrowDown = "BoomGateArrowDown"; + public const string BoomGateArrowDownOutline = "BoomGateArrowDownOutline"; + public const string BoomGateArrowUp = "BoomGateArrowUp"; + public const string BoomGateArrowUpOutline = "BoomGateArrowUpOutline"; + public const string BoomGateOutline = "BoomGateOutline"; + public const string BoomGateUp = "BoomGateUp"; + public const string BoomGateUpOutline = "BoomGateUpOutline"; + public const string Bootstrap = "Bootstrap"; + public const string BorderAll = "BorderAll"; + public const string BorderAllVariant = "BorderAllVariant"; + public const string BorderBottom = "BorderBottom"; + public const string BorderBottomVariant = "BorderBottomVariant"; + public const string BorderColor = "BorderColor"; + public const string BorderHorizontal = "BorderHorizontal"; + public const string BorderInside = "BorderInside"; + public const string BorderLeft = "BorderLeft"; + public const string BorderLeftVariant = "BorderLeftVariant"; + public const string BorderNone = "BorderNone"; + public const string BorderNoneVariant = "BorderNoneVariant"; + public const string BorderOutside = "BorderOutside"; + public const string BorderRight = "BorderRight"; + public const string BorderRightVariant = "BorderRightVariant"; + public const string BorderStyle = "BorderStyle"; + public const string BorderTop = "BorderTop"; + public const string BorderTopVariant = "BorderTopVariant"; + public const string BorderVertical = "BorderVertical"; + public const string BottleSoda = "BottleSoda"; + public const string BottleSodaClassic = "BottleSodaClassic"; + public const string BottleSodaClassicOutline = "BottleSodaClassicOutline"; + public const string BottleSodaOutline = "BottleSodaOutline"; + public const string BottleTonic = "BottleTonic"; + public const string BottleTonicOutline = "BottleTonicOutline"; + public const string BottleTonicPlus = "BottleTonicPlus"; + public const string BottleTonicPlusOutline = "BottleTonicPlusOutline"; + public const string BottleTonicSkull = "BottleTonicSkull"; + public const string BottleTonicSkullOutline = "BottleTonicSkullOutline"; + public const string BottleWine = "BottleWine"; + public const string BottleWineOutline = "BottleWineOutline"; + public const string BowArrow = "BowArrow"; + public const string Bowl = "Bowl"; + public const string Bowling = "Bowling"; + public const string BowlMix = "BowlMix"; + public const string BowlMixOutline = "BowlMixOutline"; + public const string BowlOutline = "BowlOutline"; + public const string BowTie = "BowTie"; + public const string Box = "Box"; + public const string BoxCutter = "BoxCutter"; + public const string BoxCutterOff = "BoxCutterOff"; + public const string BoxingGlove = "BoxingGlove"; + public const string BoxShadow = "BoxShadow"; + public const string Braille = "Braille"; + public const string Brain = "Brain"; + public const string BreadSlice = "BreadSlice"; + public const string BreadSliceOutline = "BreadSliceOutline"; + public const string Bridge = "Bridge"; + public const string Briefcase = "Briefcase"; + public const string BriefcaseAccount = "BriefcaseAccount"; + public const string BriefcaseAccountOutline = "BriefcaseAccountOutline"; + public const string BriefcaseCheck = "BriefcaseCheck"; + public const string BriefcaseCheckOutline = "BriefcaseCheckOutline"; + public const string BriefcaseClock = "BriefcaseClock"; + public const string BriefcaseClockOutline = "BriefcaseClockOutline"; + public const string BriefcaseDownload = "BriefcaseDownload"; + public const string BriefcaseDownloadOutline = "BriefcaseDownloadOutline"; + public const string BriefcaseEdit = "BriefcaseEdit"; + public const string BriefcaseEditOutline = "BriefcaseEditOutline"; + public const string BriefcaseEye = "BriefcaseEye"; + public const string BriefcaseEyeOutline = "BriefcaseEyeOutline"; + public const string BriefcaseMinus = "BriefcaseMinus"; + public const string BriefcaseMinusOutline = "BriefcaseMinusOutline"; + public const string BriefcaseOff = "BriefcaseOff"; + public const string BriefcaseOffOutline = "BriefcaseOffOutline"; + public const string BriefcaseOutline = "BriefcaseOutline"; + public const string BriefcasePlus = "BriefcasePlus"; + public const string BriefcasePlusOutline = "BriefcasePlusOutline"; + public const string BriefcaseRemove = "BriefcaseRemove"; + public const string BriefcaseRemoveOutline = "BriefcaseRemoveOutline"; + public const string BriefcaseSearch = "BriefcaseSearch"; + public const string BriefcaseSearchOutline = "BriefcaseSearchOutline"; + public const string BriefcaseUpload = "BriefcaseUpload"; + public const string BriefcaseUploadOutline = "BriefcaseUploadOutline"; + public const string BriefcaseVariant = "BriefcaseVariant"; + public const string BriefcaseVariantOff = "BriefcaseVariantOff"; + public const string BriefcaseVariantOffOutline = "BriefcaseVariantOffOutline"; + public const string BriefcaseVariantOutline = "BriefcaseVariantOutline"; + public const string Brightness1 = "Brightness1"; + public const string Brightness2 = "Brightness2"; + public const string Brightness3 = "Brightness3"; + public const string Brightness4 = "Brightness4"; + public const string Brightness5 = "Brightness5"; + public const string Brightness6 = "Brightness6"; + public const string Brightness7 = "Brightness7"; + public const string BrightnessAuto = "BrightnessAuto"; + public const string BrightnessPercent = "BrightnessPercent"; + public const string Broadcast = "Broadcast"; + public const string BroadcastOff = "BroadcastOff"; + public const string Broom = "Broom"; + public const string Brush = "Brush"; + public const string BrushOff = "BrushOff"; + public const string BrushVariant = "BrushVariant"; + public const string Bucket = "Bucket"; + public const string BucketOutline = "BucketOutline"; + public const string Buffet = "Buffet"; + public const string Bug = "Bug"; + public const string BugCheck = "BugCheck"; + public const string BugCheckOutline = "BugCheckOutline"; + public const string Bugle = "Bugle"; + public const string BugOutline = "BugOutline"; + public const string Bulldozer = "Bulldozer"; + public const string Bullet = "Bullet"; + public const string BulletinBoard = "BulletinBoard"; + public const string Bullhorn = "Bullhorn"; + public const string BullhornOutline = "BullhornOutline"; + public const string Bullseye = "Bullseye"; + public const string BullseyeArrow = "BullseyeArrow"; + public const string Bulma = "Bulma"; + public const string BunkBed = "BunkBed"; + public const string BunkBedOutline = "BunkBedOutline"; + public const string Bus = "Bus"; + public const string BusAlert = "BusAlert"; + public const string BusArticulatedEnd = "BusArticulatedEnd"; + public const string BusArticulatedFront = "BusArticulatedFront"; + public const string BusClock = "BusClock"; + public const string BusDoubleDecker = "BusDoubleDecker"; + public const string BusMarker = "BusMarker"; + public const string BusMultiple = "BusMultiple"; + public const string BusSchool = "BusSchool"; + public const string BusSide = "BusSide"; + public const string BusStop = "BusStop"; + public const string BusStopCovered = "BusStopCovered"; + public const string BusStopUncovered = "BusStopUncovered"; + public const string Butterfly = "Butterfly"; + public const string ButterflyOutline = "ButterflyOutline"; + public const string CabinAFrame = "CabinAFrame"; + public const string CableData = "CableData"; + public const string Cached = "Cached"; + public const string Cactus = "Cactus"; + public const string Cake = "Cake"; + public const string CakeLayered = "CakeLayered"; + public const string CakeVariant = "CakeVariant"; + public const string CakeVariantOutline = "CakeVariantOutline"; + public const string Calculator = "Calculator"; + public const string CalculatorVariant = "CalculatorVariant"; + public const string CalculatorVariantOutline = "CalculatorVariantOutline"; + public const string Calendar = "Calendar"; + public const string CalendarAccount = "CalendarAccount"; + public const string CalendarAccountOutline = "CalendarAccountOutline"; + public const string CalendarAlert = "CalendarAlert"; + public const string CalendarArrowLeft = "CalendarArrowLeft"; + public const string CalendarArrowRight = "CalendarArrowRight"; + public const string CalendarBlank = "CalendarBlank"; + public const string CalendarBlankMultiple = "CalendarBlankMultiple"; + public const string CalendarBlankOutline = "CalendarBlankOutline"; + public const string CalendarCheck = "CalendarCheck"; + public const string CalendarCheckOutline = "CalendarCheckOutline"; + public const string CalendarClock = "CalendarClock"; + public const string CalendarClockOutline = "CalendarClockOutline"; + public const string CalendarCollapseHorizontal = "CalendarCollapseHorizontal"; + public const string CalendarCursor = "CalendarCursor"; + public const string CalendarEdit = "CalendarEdit"; + public const string CalendarEnd = "CalendarEnd"; + public const string CalendarExpandHorizontal = "CalendarExpandHorizontal"; + public const string CalendarExport = "CalendarExport"; + public const string CalendarHeart = "CalendarHeart"; + public const string CalendarImport = "CalendarImport"; + public const string CalendarLock = "CalendarLock"; + public const string CalendarLockOutline = "CalendarLockOutline"; + public const string CalendarMinus = "CalendarMinus"; + public const string CalendarMonth = "CalendarMonth"; + public const string CalendarMonthOutline = "CalendarMonthOutline"; + public const string CalendarMultiple = "CalendarMultiple"; + public const string CalendarMultipleCheck = "CalendarMultipleCheck"; + public const string CalendarMultiselect = "CalendarMultiselect"; + public const string CalendarOutline = "CalendarOutline"; + public const string CalendarPlus = "CalendarPlus"; + public const string CalendarQuestion = "CalendarQuestion"; + public const string CalendarRange = "CalendarRange"; + public const string CalendarRangeOutline = "CalendarRangeOutline"; + public const string CalendarRefresh = "CalendarRefresh"; + public const string CalendarRefreshOutline = "CalendarRefreshOutline"; + public const string CalendarRemove = "CalendarRemove"; + public const string CalendarRemoveOutline = "CalendarRemoveOutline"; + public const string CalendarSearch = "CalendarSearch"; + public const string CalendarStar = "CalendarStar"; + public const string CalendarStart = "CalendarStart"; + public const string CalendarSync = "CalendarSync"; + public const string CalendarSyncOutline = "CalendarSyncOutline"; + public const string CalendarText = "CalendarText"; + public const string CalendarTextOutline = "CalendarTextOutline"; + public const string CalendarToday = "CalendarToday"; + public const string CalendarWeek = "CalendarWeek"; + public const string CalendarWeekBegin = "CalendarWeekBegin"; + public const string CalendarWeekend = "CalendarWeekend"; + public const string CalendarWeekendOutline = "CalendarWeekendOutline"; + public const string CallMade = "CallMade"; + public const string CallMerge = "CallMerge"; + public const string CallMissed = "CallMissed"; + public const string CallReceived = "CallReceived"; + public const string CallSplit = "CallSplit"; + public const string Camcorder = "Camcorder"; + public const string CamcorderOff = "CamcorderOff"; + public const string Camera = "Camera"; + public const string CameraAccount = "CameraAccount"; + public const string CameraBurst = "CameraBurst"; + public const string CameraControl = "CameraControl"; + public const string CameraDocument = "CameraDocument"; + public const string CameraDocumentOff = "CameraDocumentOff"; + public const string CameraEnhance = "CameraEnhance"; + public const string CameraEnhanceOutline = "CameraEnhanceOutline"; + public const string CameraFlip = "CameraFlip"; + public const string CameraFlipOutline = "CameraFlipOutline"; + public const string CameraFront = "CameraFront"; + public const string CameraFrontVariant = "CameraFrontVariant"; + public const string CameraGopro = "CameraGopro"; + public const string CameraImage = "CameraImage"; + public const string CameraIris = "CameraIris"; + public const string CameraMeteringCenter = "CameraMeteringCenter"; + public const string CameraMeteringMatrix = "CameraMeteringMatrix"; + public const string CameraMeteringPartial = "CameraMeteringPartial"; + public const string CameraMeteringSpot = "CameraMeteringSpot"; + public const string CameraOff = "CameraOff"; + public const string CameraOutline = "CameraOutline"; + public const string CameraPartyMode = "CameraPartyMode"; + public const string CameraPlus = "CameraPlus"; + public const string CameraPlusOutline = "CameraPlusOutline"; + public const string CameraRear = "CameraRear"; + public const string CameraRearVariant = "CameraRearVariant"; + public const string CameraRetake = "CameraRetake"; + public const string CameraRetakeOutline = "CameraRetakeOutline"; + public const string CameraSwitch = "CameraSwitch"; + public const string CameraSwitchOutline = "CameraSwitchOutline"; + public const string CameraTimer = "CameraTimer"; + public const string CameraWireless = "CameraWireless"; + public const string CameraWirelessOutline = "CameraWirelessOutline"; + public const string Campfire = "Campfire"; + public const string Cancel = "Cancel"; + public const string Candelabra = "Candelabra"; + public const string CandelabraFire = "CandelabraFire"; + public const string Candle = "Candle"; + public const string Candycane = "Candycane"; + public const string Cannabis = "Cannabis"; + public const string CannabisOff = "CannabisOff"; + public const string CapsLock = "CapsLock"; + public const string Car = "Car"; + public const string Car2Plus = "Car2Plus"; + public const string Car3Plus = "Car3Plus"; + public const string Carabiner = "Carabiner"; + public const string CarArrowLeft = "CarArrowLeft"; + public const string CarArrowRight = "CarArrowRight"; + public const string Caravan = "Caravan"; + public const string CarBack = "CarBack"; + public const string CarBattery = "CarBattery"; + public const string CarBrakeAbs = "CarBrakeAbs"; + public const string CarBrakeAlert = "CarBrakeAlert"; + public const string CarBrakeHold = "CarBrakeHold"; + public const string CarBrakeParking = "CarBrakeParking"; + public const string CarBrakeRetarder = "CarBrakeRetarder"; + public const string CarChildSeat = "CarChildSeat"; + public const string CarClutch = "CarClutch"; + public const string CarCog = "CarCog"; + public const string CarConnected = "CarConnected"; + public const string CarConvertible = "CarConvertible"; + public const string CarCoolantLevel = "CarCoolantLevel"; + public const string CarCruiseControl = "CarCruiseControl"; + public const string Card = "Card"; + public const string CardAccountDetails = "CardAccountDetails"; + public const string CardAccountDetailsOutline = "CardAccountDetailsOutline"; + public const string CardAccountDetailsStar = "CardAccountDetailsStar"; + public const string CardAccountDetailsStarOutline = "CardAccountDetailsStarOutline"; + public const string CardAccountMail = "CardAccountMail"; + public const string CardAccountMailOutline = "CardAccountMailOutline"; + public const string CardAccountPhone = "CardAccountPhone"; + public const string CardAccountPhoneOutline = "CardAccountPhoneOutline"; + public const string CardBulleted = "CardBulleted"; + public const string CardBulletedOff = "CardBulletedOff"; + public const string CardBulletedOffOutline = "CardBulletedOffOutline"; + public const string CardBulletedOutline = "CardBulletedOutline"; + public const string CardBulletedSettings = "CardBulletedSettings"; + public const string CardBulletedSettingsOutline = "CardBulletedSettingsOutline"; + public const string CarDefrostFront = "CarDefrostFront"; + public const string CarDefrostRear = "CarDefrostRear"; + public const string CardMinus = "CardMinus"; + public const string CardMinusOutline = "CardMinusOutline"; + public const string CardMultiple = "CardMultiple"; + public const string CardMultipleOutline = "CardMultipleOutline"; + public const string CardOff = "CardOff"; + public const string CardOffOutline = "CardOffOutline"; + public const string CarDoor = "CarDoor"; + public const string CarDoorLock = "CarDoorLock"; + public const string CardOutline = "CardOutline"; + public const string CardPlus = "CardPlus"; + public const string CardPlusOutline = "CardPlusOutline"; + public const string CardRemove = "CardRemove"; + public const string CardRemoveOutline = "CardRemoveOutline"; + public const string Cards = "Cards"; + public const string CardsClub = "CardsClub"; + public const string CardsClubOutline = "CardsClubOutline"; + public const string CardsDiamond = "CardsDiamond"; + public const string CardsDiamondOutline = "CardsDiamondOutline"; + public const string CardSearch = "CardSearch"; + public const string CardSearchOutline = "CardSearchOutline"; + public const string CardsHeart = "CardsHeart"; + public const string CardsHeartOutline = "CardsHeartOutline"; + public const string CardsOutline = "CardsOutline"; + public const string CardsPlaying = "CardsPlaying"; + public const string CardsPlayingClub = "CardsPlayingClub"; + public const string CardsPlayingClubMultiple = "CardsPlayingClubMultiple"; + public const string CardsPlayingClubMultipleOutline = "CardsPlayingClubMultipleOutline"; + public const string CardsPlayingClubOutline = "CardsPlayingClubOutline"; + public const string CardsPlayingDiamond = "CardsPlayingDiamond"; + public const string CardsPlayingDiamondMultiple = "CardsPlayingDiamondMultiple"; + public const string CardsPlayingDiamondMultipleOutline = "CardsPlayingDiamondMultipleOutline"; + public const string CardsPlayingDiamondOutline = "CardsPlayingDiamondOutline"; + public const string CardsPlayingHeart = "CardsPlayingHeart"; + public const string CardsPlayingHeartMultiple = "CardsPlayingHeartMultiple"; + public const string CardsPlayingHeartMultipleOutline = "CardsPlayingHeartMultipleOutline"; + public const string CardsPlayingHeartOutline = "CardsPlayingHeartOutline"; + public const string CardsPlayingOutline = "CardsPlayingOutline"; + public const string CardsPlayingSpade = "CardsPlayingSpade"; + public const string CardsPlayingSpadeMultiple = "CardsPlayingSpadeMultiple"; + public const string CardsPlayingSpadeMultipleOutline = "CardsPlayingSpadeMultipleOutline"; + public const string CardsPlayingSpadeOutline = "CardsPlayingSpadeOutline"; + public const string CardsSpade = "CardsSpade"; + public const string CardsSpadeOutline = "CardsSpadeOutline"; + public const string CardsVariant = "CardsVariant"; + public const string CardText = "CardText"; + public const string CardTextOutline = "CardTextOutline"; + public const string CarElectric = "CarElectric"; + public const string CarElectricOutline = "CarElectricOutline"; + public const string CarEmergency = "CarEmergency"; + public const string CarEsp = "CarEsp"; + public const string CarEstate = "CarEstate"; + public const string CarHatchback = "CarHatchback"; + public const string CarInfo = "CarInfo"; + public const string CarKey = "CarKey"; + public const string CarLiftedPickup = "CarLiftedPickup"; + public const string CarLightDimmed = "CarLightDimmed"; + public const string CarLightFog = "CarLightFog"; + public const string CarLightHigh = "CarLightHigh"; + public const string CarLimousine = "CarLimousine"; + public const string CarMultiple = "CarMultiple"; + public const string CarOff = "CarOff"; + public const string CarOutline = "CarOutline"; + public const string CarParkingLights = "CarParkingLights"; + public const string CarPickup = "CarPickup"; + public const string Carrot = "Carrot"; + public const string CarSeat = "CarSeat"; + public const string CarSeatCooler = "CarSeatCooler"; + public const string CarSeatHeater = "CarSeatHeater"; + public const string CarSelect = "CarSelect"; + public const string CarSettings = "CarSettings"; + public const string CarShiftPattern = "CarShiftPattern"; + public const string CarSide = "CarSide"; + public const string CarSports = "CarSports"; + public const string Cart = "Cart"; + public const string CartArrowDown = "CartArrowDown"; + public const string CartArrowRight = "CartArrowRight"; + public const string CartArrowUp = "CartArrowUp"; + public const string CartCheck = "CartCheck"; + public const string CartHeart = "CartHeart"; + public const string CarTireAlert = "CarTireAlert"; + public const string CartMinus = "CartMinus"; + public const string CartOff = "CartOff"; + public const string CartOutline = "CartOutline"; + public const string CartPlus = "CartPlus"; + public const string CarTractionControl = "CarTractionControl"; + public const string CartRemove = "CartRemove"; + public const string CarTurbocharger = "CarTurbocharger"; + public const string CartVariant = "CartVariant"; + public const string CarWash = "CarWash"; + public const string CarWindshield = "CarWindshield"; + public const string CarWindshieldOutline = "CarWindshieldOutline"; + public const string CarWireless = "CarWireless"; + public const string CarWrench = "CarWrench"; + public const string CaseSensitiveAlt = "CaseSensitiveAlt"; + public const string Cash = "Cash"; + public const string Cash100 = "Cash100"; + public const string CashCheck = "CashCheck"; + public const string CashFast = "CashFast"; + public const string CashLock = "CashLock"; + public const string CashLockOpen = "CashLockOpen"; + public const string CashMarker = "CashMarker"; + public const string CashMinus = "CashMinus"; + public const string CashMultiple = "CashMultiple"; + public const string CashPlus = "CashPlus"; + public const string CashRefund = "CashRefund"; + public const string CashRegister = "CashRegister"; + public const string CashRemove = "CashRemove"; + public const string Cassette = "Cassette"; + public const string Cast = "Cast"; + public const string CastAudio = "CastAudio"; + public const string CastAudioVariant = "CastAudioVariant"; + public const string CastConnected = "CastConnected"; + public const string CastEducation = "CastEducation"; + public const string Castle = "Castle"; + public const string CastOff = "CastOff"; + public const string CastVariant = "CastVariant"; + public const string Cat = "Cat"; + public const string Cctv = "Cctv"; + public const string CctvOff = "CctvOff"; + public const string CeilingFan = "CeilingFan"; + public const string CeilingFanLight = "CeilingFanLight"; + public const string CeilingLight = "CeilingLight"; + public const string CeilingLightMultiple = "CeilingLightMultiple"; + public const string CeilingLightMultipleOutline = "CeilingLightMultipleOutline"; + public const string CeilingLightOutline = "CeilingLightOutline"; + public const string Cellphone = "Cellphone"; + public const string CellphoneArrowDown = "CellphoneArrowDown"; + public const string CellphoneBasic = "CellphoneBasic"; + public const string CellphoneCharging = "CellphoneCharging"; + public const string CellphoneCheck = "CellphoneCheck"; + public const string CellphoneCog = "CellphoneCog"; + public const string CellphoneDock = "CellphoneDock"; + public const string CellphoneInformation = "CellphoneInformation"; + public const string CellphoneKey = "CellphoneKey"; + public const string CellphoneLink = "CellphoneLink"; + public const string CellphoneLinkOff = "CellphoneLinkOff"; + public const string CellphoneLock = "CellphoneLock"; + public const string CellphoneMarker = "CellphoneMarker"; + public const string CellphoneMessage = "CellphoneMessage"; + public const string CellphoneMessageOff = "CellphoneMessageOff"; + public const string CellphoneNfc = "CellphoneNfc"; + public const string CellphoneNfcOff = "CellphoneNfcOff"; + public const string CellphoneOff = "CellphoneOff"; + public const string CellphonePlay = "CellphonePlay"; + public const string CellphoneRemove = "CellphoneRemove"; + public const string CellphoneScreenshot = "CellphoneScreenshot"; + public const string CellphoneSettings = "CellphoneSettings"; + public const string CellphoneSound = "CellphoneSound"; + public const string CellphoneText = "CellphoneText"; + public const string CellphoneWireless = "CellphoneWireless"; + public const string Centos = "Centos"; + public const string Certificate = "Certificate"; + public const string CertificateOutline = "CertificateOutline"; + public const string ChairRolling = "ChairRolling"; + public const string ChairSchool = "ChairSchool"; + public const string Chandelier = "Chandelier"; + public const string Charity = "Charity"; + public const string ChartArc = "ChartArc"; + public const string ChartAreaspline = "ChartAreaspline"; + public const string ChartAreasplineVariant = "ChartAreasplineVariant"; + public const string ChartBar = "ChartBar"; + public const string ChartBarStacked = "ChartBarStacked"; + public const string ChartBellCurve = "ChartBellCurve"; + public const string ChartBellCurveCumulative = "ChartBellCurveCumulative"; + public const string ChartBox = "ChartBox"; + public const string ChartBoxOutline = "ChartBoxOutline"; + public const string ChartBoxPlusOutline = "ChartBoxPlusOutline"; + public const string ChartBubble = "ChartBubble"; + public const string ChartDonut = "ChartDonut"; + public const string ChartDonutVariant = "ChartDonutVariant"; + public const string ChartGantt = "ChartGantt"; + public const string ChartHistogram = "ChartHistogram"; + public const string ChartLine = "ChartLine"; + public const string ChartLineStacked = "ChartLineStacked"; + public const string ChartLineVariant = "ChartLineVariant"; + public const string ChartMultiline = "ChartMultiline"; + public const string ChartMultiple = "ChartMultiple"; + public const string ChartPie = "ChartPie"; + public const string ChartPpf = "ChartPpf"; + public const string ChartSankey = "ChartSankey"; + public const string ChartSankeyVariant = "ChartSankeyVariant"; + public const string ChartScatterPlot = "ChartScatterPlot"; + public const string ChartScatterPlotHexbin = "ChartScatterPlotHexbin"; + public const string ChartTimeline = "ChartTimeline"; + public const string ChartTimelineVariant = "ChartTimelineVariant"; + public const string ChartTimelineVariantShimmer = "ChartTimelineVariantShimmer"; + public const string ChartTree = "ChartTree"; + public const string Chat = "Chat"; + public const string ChatAlert = "ChatAlert"; + public const string ChatAlertOutline = "ChatAlertOutline"; + public const string ChatMinus = "ChatMinus"; + public const string ChatMinusOutline = "ChatMinusOutline"; + public const string ChatOutline = "ChatOutline"; + public const string ChatPlus = "ChatPlus"; + public const string ChatPlusOutline = "ChatPlusOutline"; + public const string ChatProcessing = "ChatProcessing"; + public const string ChatProcessingOutline = "ChatProcessingOutline"; + public const string ChatQuestion = "ChatQuestion"; + public const string ChatQuestionOutline = "ChatQuestionOutline"; + public const string ChatRemove = "ChatRemove"; + public const string ChatRemoveOutline = "ChatRemoveOutline"; + public const string ChatSleep = "ChatSleep"; + public const string ChatSleepOutline = "ChatSleepOutline"; + public const string Check = "Check"; + public const string CheckAll = "CheckAll"; + public const string CheckBold = "CheckBold"; + public const string Checkbook = "Checkbook"; + public const string CheckboxBlank = "CheckboxBlank"; + public const string CheckboxBlankBadge = "CheckboxBlankBadge"; + public const string CheckboxBlankBadgeOutline = "CheckboxBlankBadgeOutline"; + public const string CheckboxBlankCircle = "CheckboxBlankCircle"; + public const string CheckboxBlankCircleOutline = "CheckboxBlankCircleOutline"; + public const string CheckboxBlankOff = "CheckboxBlankOff"; + public const string CheckboxBlankOffOutline = "CheckboxBlankOffOutline"; + public const string CheckboxBlankOutline = "CheckboxBlankOutline"; + public const string CheckboxIntermediate = "CheckboxIntermediate"; + public const string CheckboxMarked = "CheckboxMarked"; + public const string CheckboxMarkedCircle = "CheckboxMarkedCircle"; + public const string CheckboxMarkedCircleOutline = "CheckboxMarkedCircleOutline"; + public const string CheckboxMarkedOutline = "CheckboxMarkedOutline"; + public const string CheckboxMultipleBlank = "CheckboxMultipleBlank"; + public const string CheckboxMultipleBlankCircle = "CheckboxMultipleBlankCircle"; + public const string CheckboxMultipleBlankCircleOutline = "CheckboxMultipleBlankCircleOutline"; + public const string CheckboxMultipleBlankOutline = "CheckboxMultipleBlankOutline"; + public const string CheckboxMultipleMarked = "CheckboxMultipleMarked"; + public const string CheckboxMultipleMarkedCircle = "CheckboxMultipleMarkedCircle"; + public const string CheckboxMultipleMarkedCircleOutline = "CheckboxMultipleMarkedCircleOutline"; + public const string CheckboxMultipleMarkedOutline = "CheckboxMultipleMarkedOutline"; + public const string CheckboxMultipleOutline = "CheckboxMultipleOutline"; + public const string CheckboxOutline = "CheckboxOutline"; + public const string CheckCircle = "CheckCircle"; + public const string CheckCircleOutline = "CheckCircleOutline"; + public const string CheckDecagram = "CheckDecagram"; + public const string CheckDecagramOutline = "CheckDecagramOutline"; + public const string Checkerboard = "Checkerboard"; + public const string CheckerboardMinus = "CheckerboardMinus"; + public const string CheckerboardPlus = "CheckerboardPlus"; + public const string CheckerboardRemove = "CheckerboardRemove"; + public const string CheckNetwork = "CheckNetwork"; + public const string CheckNetworkOutline = "CheckNetworkOutline"; + public const string CheckOutline = "CheckOutline"; + public const string CheckUnderline = "CheckUnderline"; + public const string CheckUnderlineCircle = "CheckUnderlineCircle"; + public const string CheckUnderlineCircleOutline = "CheckUnderlineCircleOutline"; + public const string Cheese = "Cheese"; + public const string CheeseOff = "CheeseOff"; + public const string ChefHat = "ChefHat"; + public const string ChemicalWeapon = "ChemicalWeapon"; + public const string ChessBishop = "ChessBishop"; + public const string ChessKing = "ChessKing"; + public const string ChessKnight = "ChessKnight"; + public const string ChessPawn = "ChessPawn"; + public const string ChessQueen = "ChessQueen"; + public const string ChessRook = "ChessRook"; + public const string ChevronDoubleDown = "ChevronDoubleDown"; + public const string ChevronDoubleLeft = "ChevronDoubleLeft"; + public const string ChevronDoubleRight = "ChevronDoubleRight"; + public const string ChevronDoubleUp = "ChevronDoubleUp"; + public const string ChevronDown = "ChevronDown"; + public const string ChevronDownBox = "ChevronDownBox"; + public const string ChevronDownBoxOutline = "ChevronDownBoxOutline"; + public const string ChevronDownCircle = "ChevronDownCircle"; + public const string ChevronDownCircleOutline = "ChevronDownCircleOutline"; + public const string ChevronLeft = "ChevronLeft"; + public const string ChevronLeftBox = "ChevronLeftBox"; + public const string ChevronLeftBoxOutline = "ChevronLeftBoxOutline"; + public const string ChevronLeftCircle = "ChevronLeftCircle"; + public const string ChevronLeftCircleOutline = "ChevronLeftCircleOutline"; + public const string ChevronRight = "ChevronRight"; + public const string ChevronRightBox = "ChevronRightBox"; + public const string ChevronRightBoxOutline = "ChevronRightBoxOutline"; + public const string ChevronRightCircle = "ChevronRightCircle"; + public const string ChevronRightCircleOutline = "ChevronRightCircleOutline"; + public const string ChevronTripleDown = "ChevronTripleDown"; + public const string ChevronTripleLeft = "ChevronTripleLeft"; + public const string ChevronTripleRight = "ChevronTripleRight"; + public const string ChevronTripleUp = "ChevronTripleUp"; + public const string ChevronUp = "ChevronUp"; + public const string ChevronUpBox = "ChevronUpBox"; + public const string ChevronUpBoxOutline = "ChevronUpBoxOutline"; + public const string ChevronUpCircle = "ChevronUpCircle"; + public const string ChevronUpCircleOutline = "ChevronUpCircleOutline"; + public const string ChiliAlert = "ChiliAlert"; + public const string ChiliAlertOutline = "ChiliAlertOutline"; + public const string ChiliHot = "ChiliHot"; + public const string ChiliHotOutline = "ChiliHotOutline"; + public const string ChiliMedium = "ChiliMedium"; + public const string ChiliMediumOutline = "ChiliMediumOutline"; + public const string ChiliMild = "ChiliMild"; + public const string ChiliMildOutline = "ChiliMildOutline"; + public const string ChiliOff = "ChiliOff"; + public const string ChiliOffOutline = "ChiliOffOutline"; + public const string Chip = "Chip"; + public const string Church = "Church"; + public const string Cigar = "Cigar"; + public const string CigarOff = "CigarOff"; + public const string Circle = "Circle"; + public const string CircleBox = "CircleBox"; + public const string CircleBoxOutline = "CircleBoxOutline"; + public const string CircleDouble = "CircleDouble"; + public const string CircleEditOutline = "CircleEditOutline"; + public const string CircleExpand = "CircleExpand"; + public const string CircleHalf = "CircleHalf"; + public const string CircleHalfFull = "CircleHalfFull"; + public const string CircleMedium = "CircleMedium"; + public const string CircleMultiple = "CircleMultiple"; + public const string CircleMultipleOutline = "CircleMultipleOutline"; + public const string CircleOffOutline = "CircleOffOutline"; + public const string CircleOpacity = "CircleOpacity"; + public const string CircleOutline = "CircleOutline"; + public const string CircleSlice1 = "CircleSlice1"; + public const string CircleSlice2 = "CircleSlice2"; + public const string CircleSlice3 = "CircleSlice3"; + public const string CircleSlice4 = "CircleSlice4"; + public const string CircleSlice5 = "CircleSlice5"; + public const string CircleSlice6 = "CircleSlice6"; + public const string CircleSlice7 = "CircleSlice7"; + public const string CircleSlice8 = "CircleSlice8"; + public const string CircleSmall = "CircleSmall"; + public const string CircularSaw = "CircularSaw"; + public const string City = "City"; + public const string CityVariant = "CityVariant"; + public const string CityVariantOutline = "CityVariantOutline"; + public const string Clipboard = "Clipboard"; + public const string ClipboardAccount = "ClipboardAccount"; + public const string ClipboardAccountOutline = "ClipboardAccountOutline"; + public const string ClipboardAlert = "ClipboardAlert"; + public const string ClipboardAlertOutline = "ClipboardAlertOutline"; + public const string ClipboardArrowDown = "ClipboardArrowDown"; + public const string ClipboardArrowDownOutline = "ClipboardArrowDownOutline"; + public const string ClipboardArrowLeft = "ClipboardArrowLeft"; + public const string ClipboardArrowLeftOutline = "ClipboardArrowLeftOutline"; + public const string ClipboardArrowRight = "ClipboardArrowRight"; + public const string ClipboardArrowRightOutline = "ClipboardArrowRightOutline"; + public const string ClipboardArrowUp = "ClipboardArrowUp"; + public const string ClipboardArrowUpOutline = "ClipboardArrowUpOutline"; + public const string ClipboardCheck = "ClipboardCheck"; + public const string ClipboardCheckMultiple = "ClipboardCheckMultiple"; + public const string ClipboardCheckMultipleOutline = "ClipboardCheckMultipleOutline"; + public const string ClipboardCheckOutline = "ClipboardCheckOutline"; + public const string ClipboardClock = "ClipboardClock"; + public const string ClipboardClockOutline = "ClipboardClockOutline"; + public const string ClipboardEdit = "ClipboardEdit"; + public const string ClipboardEditOutline = "ClipboardEditOutline"; + public const string ClipboardFile = "ClipboardFile"; + public const string ClipboardFileOutline = "ClipboardFileOutline"; + public const string ClipboardFlow = "ClipboardFlow"; + public const string ClipboardFlowOutline = "ClipboardFlowOutline"; + public const string ClipboardList = "ClipboardList"; + public const string ClipboardListOutline = "ClipboardListOutline"; + public const string ClipboardMinus = "ClipboardMinus"; + public const string ClipboardMinusOutline = "ClipboardMinusOutline"; + public const string ClipboardMultiple = "ClipboardMultiple"; + public const string ClipboardMultipleOutline = "ClipboardMultipleOutline"; + public const string ClipboardOff = "ClipboardOff"; + public const string ClipboardOffOutline = "ClipboardOffOutline"; + public const string ClipboardOutline = "ClipboardOutline"; + public const string ClipboardPlay = "ClipboardPlay"; + public const string ClipboardPlayMultiple = "ClipboardPlayMultiple"; + public const string ClipboardPlayMultipleOutline = "ClipboardPlayMultipleOutline"; + public const string ClipboardPlayOutline = "ClipboardPlayOutline"; + public const string ClipboardPlus = "ClipboardPlus"; + public const string ClipboardPlusOutline = "ClipboardPlusOutline"; + public const string ClipboardPulse = "ClipboardPulse"; + public const string ClipboardPulseOutline = "ClipboardPulseOutline"; + public const string ClipboardRemove = "ClipboardRemove"; + public const string ClipboardRemoveOutline = "ClipboardRemoveOutline"; + public const string ClipboardSearch = "ClipboardSearch"; + public const string ClipboardSearchOutline = "ClipboardSearchOutline"; + public const string ClipboardText = "ClipboardText"; + public const string ClipboardTextClock = "ClipboardTextClock"; + public const string ClipboardTextClockOutline = "ClipboardTextClockOutline"; + public const string ClipboardTextMultiple = "ClipboardTextMultiple"; + public const string ClipboardTextMultipleOutline = "ClipboardTextMultipleOutline"; + public const string ClipboardTextOff = "ClipboardTextOff"; + public const string ClipboardTextOffOutline = "ClipboardTextOffOutline"; + public const string ClipboardTextOutline = "ClipboardTextOutline"; + public const string ClipboardTextPlay = "ClipboardTextPlay"; + public const string ClipboardTextPlayOutline = "ClipboardTextPlayOutline"; + public const string ClipboardTextSearch = "ClipboardTextSearch"; + public const string ClipboardTextSearchOutline = "ClipboardTextSearchOutline"; + public const string Clippy = "Clippy"; + public const string Clock = "Clock"; + public const string ClockAlert = "ClockAlert"; + public const string ClockAlertOutline = "ClockAlertOutline"; + public const string ClockCheck = "ClockCheck"; + public const string ClockCheckOutline = "ClockCheckOutline"; + public const string ClockDigital = "ClockDigital"; + public const string ClockEnd = "ClockEnd"; + public const string ClockFast = "ClockFast"; + public const string ClockIn = "ClockIn"; + public const string ClockMinus = "ClockMinus"; + public const string ClockMinusOutline = "ClockMinusOutline"; + public const string ClockOut = "ClockOut"; + public const string ClockOutline = "ClockOutline"; + public const string ClockPlus = "ClockPlus"; + public const string ClockPlusOutline = "ClockPlusOutline"; + public const string ClockRemove = "ClockRemove"; + public const string ClockRemoveOutline = "ClockRemoveOutline"; + public const string ClockStart = "ClockStart"; + public const string ClockTimeEight = "ClockTimeEight"; + public const string ClockTimeEightOutline = "ClockTimeEightOutline"; + public const string ClockTimeEleven = "ClockTimeEleven"; + public const string ClockTimeElevenOutline = "ClockTimeElevenOutline"; + public const string ClockTimeFive = "ClockTimeFive"; + public const string ClockTimeFiveOutline = "ClockTimeFiveOutline"; + public const string ClockTimeFour = "ClockTimeFour"; + public const string ClockTimeFourOutline = "ClockTimeFourOutline"; + public const string ClockTimeNine = "ClockTimeNine"; + public const string ClockTimeNineOutline = "ClockTimeNineOutline"; + public const string ClockTimeOne = "ClockTimeOne"; + public const string ClockTimeOneOutline = "ClockTimeOneOutline"; + public const string ClockTimeSeven = "ClockTimeSeven"; + public const string ClockTimeSevenOutline = "ClockTimeSevenOutline"; + public const string ClockTimeSix = "ClockTimeSix"; + public const string ClockTimeSixOutline = "ClockTimeSixOutline"; + public const string ClockTimeTen = "ClockTimeTen"; + public const string ClockTimeTenOutline = "ClockTimeTenOutline"; + public const string ClockTimeThree = "ClockTimeThree"; + public const string ClockTimeThreeOutline = "ClockTimeThreeOutline"; + public const string ClockTimeTwelve = "ClockTimeTwelve"; + public const string ClockTimeTwelveOutline = "ClockTimeTwelveOutline"; + public const string ClockTimeTwo = "ClockTimeTwo"; + public const string ClockTimeTwoOutline = "ClockTimeTwoOutline"; + public const string Close = "Close"; + public const string CloseBox = "CloseBox"; + public const string CloseBoxMultiple = "CloseBoxMultiple"; + public const string CloseBoxMultipleOutline = "CloseBoxMultipleOutline"; + public const string CloseBoxOutline = "CloseBoxOutline"; + public const string CloseCircle = "CloseCircle"; + public const string CloseCircleMultiple = "CloseCircleMultiple"; + public const string CloseCircleMultipleOutline = "CloseCircleMultipleOutline"; + public const string CloseCircleOutline = "CloseCircleOutline"; + public const string ClosedCaption = "ClosedCaption"; + public const string ClosedCaptionOutline = "ClosedCaptionOutline"; + public const string CloseNetwork = "CloseNetwork"; + public const string CloseNetworkOutline = "CloseNetworkOutline"; + public const string CloseOctagon = "CloseOctagon"; + public const string CloseOctagonOutline = "CloseOctagonOutline"; + public const string CloseOutline = "CloseOutline"; + public const string CloseThick = "CloseThick"; + public const string Cloud = "Cloud"; + public const string CloudAlert = "CloudAlert"; + public const string CloudBraces = "CloudBraces"; + public const string CloudCheck = "CloudCheck"; + public const string CloudCheckOutline = "CloudCheckOutline"; + public const string CloudCircle = "CloudCircle"; + public const string CloudDownload = "CloudDownload"; + public const string CloudDownloadOutline = "CloudDownloadOutline"; + public const string CloudLock = "CloudLock"; + public const string CloudLockOutline = "CloudLockOutline"; + public const string CloudOffOutline = "CloudOffOutline"; + public const string CloudOutline = "CloudOutline"; + public const string CloudPrint = "CloudPrint"; + public const string CloudPrintOutline = "CloudPrintOutline"; + public const string CloudQuestion = "CloudQuestion"; + public const string CloudRefresh = "CloudRefresh"; + public const string CloudSearch = "CloudSearch"; + public const string CloudSearchOutline = "CloudSearchOutline"; + public const string CloudSync = "CloudSync"; + public const string CloudSyncOutline = "CloudSyncOutline"; + public const string CloudTags = "CloudTags"; + public const string CloudUpload = "CloudUpload"; + public const string CloudUploadOutline = "CloudUploadOutline"; + public const string Clover = "Clover"; + public const string CoachLamp = "CoachLamp"; + public const string CoatRack = "CoatRack"; + public const string CodeArray = "CodeArray"; + public const string CodeBraces = "CodeBraces"; + public const string CodeBracesBox = "CodeBracesBox"; + public const string CodeBrackets = "CodeBrackets"; + public const string CodeEqual = "CodeEqual"; + public const string CodeGreaterThan = "CodeGreaterThan"; + public const string CodeGreaterThanOrEqual = "CodeGreaterThanOrEqual"; + public const string CodeJson = "CodeJson"; + public const string CodeLessThan = "CodeLessThan"; + public const string CodeLessThanOrEqual = "CodeLessThanOrEqual"; + public const string CodeNotEqual = "CodeNotEqual"; + public const string CodeNotEqualVariant = "CodeNotEqualVariant"; + public const string CodeParentheses = "CodeParentheses"; + public const string CodeParenthesesBox = "CodeParenthesesBox"; + public const string Codepen = "Codepen"; + public const string CodeString = "CodeString"; + public const string CodeTags = "CodeTags"; + public const string CodeTagsCheck = "CodeTagsCheck"; + public const string Coffee = "Coffee"; + public const string CoffeeMaker = "CoffeeMaker"; + public const string CoffeeMakerOutline = "CoffeeMakerOutline"; + public const string CoffeeOff = "CoffeeOff"; + public const string CoffeeOffOutline = "CoffeeOffOutline"; + public const string CoffeeOutline = "CoffeeOutline"; + public const string CoffeeToGo = "CoffeeToGo"; + public const string CoffeeToGoOutline = "CoffeeToGoOutline"; + public const string Coffin = "Coffin"; + public const string Cog = "Cog"; + public const string CogBox = "CogBox"; + public const string CogClockwise = "CogClockwise"; + public const string CogCounterclockwise = "CogCounterclockwise"; + public const string CogOff = "CogOff"; + public const string CogOffOutline = "CogOffOutline"; + public const string CogOutline = "CogOutline"; + public const string CogRefresh = "CogRefresh"; + public const string CogRefreshOutline = "CogRefreshOutline"; + public const string Cogs = "Cogs"; + public const string CogSync = "CogSync"; + public const string CogSyncOutline = "CogSyncOutline"; + public const string CogTransfer = "CogTransfer"; + public const string CogTransferOutline = "CogTransferOutline"; + public const string Collage = "Collage"; + public const string CollapseAll = "CollapseAll"; + public const string CollapseAllOutline = "CollapseAllOutline"; + public const string ColorHelper = "ColorHelper"; + public const string Comma = "Comma"; + public const string CommaBox = "CommaBox"; + public const string CommaBoxOutline = "CommaBoxOutline"; + public const string CommaCircle = "CommaCircle"; + public const string CommaCircleOutline = "CommaCircleOutline"; + public const string Comment = "Comment"; + public const string CommentAccount = "CommentAccount"; + public const string CommentAccountOutline = "CommentAccountOutline"; + public const string CommentAlert = "CommentAlert"; + public const string CommentAlertOutline = "CommentAlertOutline"; + public const string CommentArrowLeft = "CommentArrowLeft"; + public const string CommentArrowLeftOutline = "CommentArrowLeftOutline"; + public const string CommentArrowRight = "CommentArrowRight"; + public const string CommentArrowRightOutline = "CommentArrowRightOutline"; + public const string CommentBookmark = "CommentBookmark"; + public const string CommentBookmarkOutline = "CommentBookmarkOutline"; + public const string CommentCheck = "CommentCheck"; + public const string CommentCheckOutline = "CommentCheckOutline"; + public const string CommentEdit = "CommentEdit"; + public const string CommentEditOutline = "CommentEditOutline"; + public const string CommentEye = "CommentEye"; + public const string CommentEyeOutline = "CommentEyeOutline"; + public const string CommentFlash = "CommentFlash"; + public const string CommentFlashOutline = "CommentFlashOutline"; + public const string CommentMinus = "CommentMinus"; + public const string CommentMinusOutline = "CommentMinusOutline"; + public const string CommentMultiple = "CommentMultiple"; + public const string CommentMultipleOutline = "CommentMultipleOutline"; + public const string CommentOff = "CommentOff"; + public const string CommentOffOutline = "CommentOffOutline"; + public const string CommentOutline = "CommentOutline"; + public const string CommentPlus = "CommentPlus"; + public const string CommentPlusOutline = "CommentPlusOutline"; + public const string CommentProcessing = "CommentProcessing"; + public const string CommentProcessingOutline = "CommentProcessingOutline"; + public const string CommentQuestion = "CommentQuestion"; + public const string CommentQuestionOutline = "CommentQuestionOutline"; + public const string CommentQuote = "CommentQuote"; + public const string CommentQuoteOutline = "CommentQuoteOutline"; + public const string CommentRemove = "CommentRemove"; + public const string CommentRemoveOutline = "CommentRemoveOutline"; + public const string CommentSearch = "CommentSearch"; + public const string CommentSearchOutline = "CommentSearchOutline"; + public const string CommentText = "CommentText"; + public const string CommentTextMultiple = "CommentTextMultiple"; + public const string CommentTextMultipleOutline = "CommentTextMultipleOutline"; + public const string CommentTextOutline = "CommentTextOutline"; + public const string Compare = "Compare"; + public const string CompareHorizontal = "CompareHorizontal"; + public const string CompareRemove = "CompareRemove"; + public const string CompareVertical = "CompareVertical"; + public const string Compass = "Compass"; + public const string CompassOff = "CompassOff"; + public const string CompassOffOutline = "CompassOffOutline"; + public const string CompassOutline = "CompassOutline"; + public const string CompassRose = "CompassRose"; + public const string Connection = "Connection"; + public const string Console = "Console"; + public const string ConsoleLine = "ConsoleLine"; + public const string ConsoleNetwork = "ConsoleNetwork"; + public const string ConsoleNetworkOutline = "ConsoleNetworkOutline"; + public const string Consolidate = "Consolidate"; + public const string ContactlessPayment = "ContactlessPayment"; + public const string ContactlessPaymentCircle = "ContactlessPaymentCircle"; + public const string ContactlessPaymentCircleOutline = "ContactlessPaymentCircleOutline"; + public const string Contacts = "Contacts"; + public const string ContactsOutline = "ContactsOutline"; + public const string Contain = "Contain"; + public const string ContainEnd = "ContainEnd"; + public const string ContainStart = "ContainStart"; + public const string ContentCopy = "ContentCopy"; + public const string ContentCut = "ContentCut"; + public const string ContentDuplicate = "ContentDuplicate"; + public const string ContentPaste = "ContentPaste"; + public const string ContentSave = "ContentSave"; + public const string ContentSaveAlert = "ContentSaveAlert"; + public const string ContentSaveAlertOutline = "ContentSaveAlertOutline"; + public const string ContentSaveAll = "ContentSaveAll"; + public const string ContentSaveAllOutline = "ContentSaveAllOutline"; + public const string ContentSaveCheck = "ContentSaveCheck"; + public const string ContentSaveCheckOutline = "ContentSaveCheckOutline"; + public const string ContentSaveCog = "ContentSaveCog"; + public const string ContentSaveCogOutline = "ContentSaveCogOutline"; + public const string ContentSaveEdit = "ContentSaveEdit"; + public const string ContentSaveEditOutline = "ContentSaveEditOutline"; + public const string ContentSaveMove = "ContentSaveMove"; + public const string ContentSaveMoveOutline = "ContentSaveMoveOutline"; + public const string ContentSaveOff = "ContentSaveOff"; + public const string ContentSaveOffOutline = "ContentSaveOffOutline"; + public const string ContentSaveOutline = "ContentSaveOutline"; + public const string ContentSaveSettings = "ContentSaveSettings"; + public const string ContentSaveSettingsOutline = "ContentSaveSettingsOutline"; + public const string Contrast = "Contrast"; + public const string ContrastBox = "ContrastBox"; + public const string ContrastCircle = "ContrastCircle"; + public const string ControllerClassic = "ControllerClassic"; + public const string ControllerClassicOutline = "ControllerClassicOutline"; + public const string Cookie = "Cookie"; + public const string CookieAlert = "CookieAlert"; + public const string CookieAlertOutline = "CookieAlertOutline"; + public const string CookieCheck = "CookieCheck"; + public const string CookieCheckOutline = "CookieCheckOutline"; + public const string CookieClock = "CookieClock"; + public const string CookieClockOutline = "CookieClockOutline"; + public const string CookieCog = "CookieCog"; + public const string CookieCogOutline = "CookieCogOutline"; + public const string CookieEdit = "CookieEdit"; + public const string CookieEditOutline = "CookieEditOutline"; + public const string CookieLock = "CookieLock"; + public const string CookieLockOutline = "CookieLockOutline"; + public const string CookieMinus = "CookieMinus"; + public const string CookieMinusOutline = "CookieMinusOutline"; + public const string CookieOff = "CookieOff"; + public const string CookieOffOutline = "CookieOffOutline"; + public const string CookieOutline = "CookieOutline"; + public const string CookiePlus = "CookiePlus"; + public const string CookiePlusOutline = "CookiePlusOutline"; + public const string CookieRefresh = "CookieRefresh"; + public const string CookieRefreshOutline = "CookieRefreshOutline"; + public const string CookieRemove = "CookieRemove"; + public const string CookieRemoveOutline = "CookieRemoveOutline"; + public const string CookieSettings = "CookieSettings"; + public const string CookieSettingsOutline = "CookieSettingsOutline"; + public const string CoolantTemperature = "CoolantTemperature"; + public const string Copyright = "Copyright"; + public const string Cordova = "Cordova"; + public const string Corn = "Corn"; + public const string CornOff = "CornOff"; + public const string CosineWave = "CosineWave"; + public const string Counter = "Counter"; + public const string Countertop = "Countertop"; + public const string CountertopOutline = "CountertopOutline"; + public const string Cow = "Cow"; + public const string Cpu32Bit = "Cpu32Bit"; + public const string Cpu64Bit = "Cpu64Bit"; + public const string Crane = "Crane"; + public const string Creation = "Creation"; + public const string CreativeCommons = "CreativeCommons"; + public const string CreditCard = "CreditCard"; + public const string CreditCardCheck = "CreditCardCheck"; + public const string CreditCardCheckOutline = "CreditCardCheckOutline"; + public const string CreditCardClock = "CreditCardClock"; + public const string CreditCardClockOutline = "CreditCardClockOutline"; + public const string CreditCardEdit = "CreditCardEdit"; + public const string CreditCardEditOutline = "CreditCardEditOutline"; + public const string CreditCardLock = "CreditCardLock"; + public const string CreditCardLockOutline = "CreditCardLockOutline"; + public const string CreditCardMarker = "CreditCardMarker"; + public const string CreditCardMarkerOutline = "CreditCardMarkerOutline"; + public const string CreditCardMinus = "CreditCardMinus"; + public const string CreditCardMinusOutline = "CreditCardMinusOutline"; + public const string CreditCardMultiple = "CreditCardMultiple"; + public const string CreditCardMultipleOutline = "CreditCardMultipleOutline"; + public const string CreditCardOff = "CreditCardOff"; + public const string CreditCardOffOutline = "CreditCardOffOutline"; + public const string CreditCardOutline = "CreditCardOutline"; + public const string CreditCardPlus = "CreditCardPlus"; + public const string CreditCardPlusOutline = "CreditCardPlusOutline"; + public const string CreditCardRefresh = "CreditCardRefresh"; + public const string CreditCardRefreshOutline = "CreditCardRefreshOutline"; + public const string CreditCardRefund = "CreditCardRefund"; + public const string CreditCardRefundOutline = "CreditCardRefundOutline"; + public const string CreditCardRemove = "CreditCardRemove"; + public const string CreditCardRemoveOutline = "CreditCardRemoveOutline"; + public const string CreditCardScan = "CreditCardScan"; + public const string CreditCardScanOutline = "CreditCardScanOutline"; + public const string CreditCardSearch = "CreditCardSearch"; + public const string CreditCardSearchOutline = "CreditCardSearchOutline"; + public const string CreditCardSettings = "CreditCardSettings"; + public const string CreditCardSettingsOutline = "CreditCardSettingsOutline"; + public const string CreditCardSync = "CreditCardSync"; + public const string CreditCardSyncOutline = "CreditCardSyncOutline"; + public const string CreditCardWireless = "CreditCardWireless"; + public const string CreditCardWirelessOff = "CreditCardWirelessOff"; + public const string CreditCardWirelessOffOutline = "CreditCardWirelessOffOutline"; + public const string CreditCardWirelessOutline = "CreditCardWirelessOutline"; + public const string Cricket = "Cricket"; + public const string Crop = "Crop"; + public const string CropFree = "CropFree"; + public const string CropLandscape = "CropLandscape"; + public const string CropPortrait = "CropPortrait"; + public const string CropRotate = "CropRotate"; + public const string CropSquare = "CropSquare"; + public const string Cross = "Cross"; + public const string CrossBolnisi = "CrossBolnisi"; + public const string CrossCeltic = "CrossCeltic"; + public const string Crosshairs = "Crosshairs"; + public const string CrosshairsGps = "CrosshairsGps"; + public const string CrosshairsOff = "CrosshairsOff"; + public const string CrosshairsQuestion = "CrosshairsQuestion"; + public const string CrossOutline = "CrossOutline"; + public const string Crown = "Crown"; + public const string CrownCircle = "CrownCircle"; + public const string CrownCircleOutline = "CrownCircleOutline"; + public const string CrownOutline = "CrownOutline"; + public const string Cryengine = "Cryengine"; + public const string CrystalBall = "CrystalBall"; + public const string Cube = "Cube"; + public const string CubeOff = "CubeOff"; + public const string CubeOffOutline = "CubeOffOutline"; + public const string CubeOutline = "CubeOutline"; + public const string CubeScan = "CubeScan"; + public const string CubeSend = "CubeSend"; + public const string CubeUnfolded = "CubeUnfolded"; + public const string Cup = "Cup"; + public const string Cupboard = "Cupboard"; + public const string CupboardOutline = "CupboardOutline"; + public const string Cupcake = "Cupcake"; + public const string CupOff = "CupOff"; + public const string CupOffOutline = "CupOffOutline"; + public const string CupOutline = "CupOutline"; + public const string CupWater = "CupWater"; + public const string Curling = "Curling"; + public const string CurrencyBdt = "CurrencyBdt"; + public const string CurrencyBrl = "CurrencyBrl"; + public const string CurrencyBtc = "CurrencyBtc"; + public const string CurrencyCny = "CurrencyCny"; + public const string CurrencyEth = "CurrencyEth"; + public const string CurrencyEur = "CurrencyEur"; + public const string CurrencyEurOff = "CurrencyEurOff"; + public const string CurrencyGbp = "CurrencyGbp"; + public const string CurrencyIls = "CurrencyIls"; + public const string CurrencyInr = "CurrencyInr"; + public const string CurrencyJpy = "CurrencyJpy"; + public const string CurrencyKrw = "CurrencyKrw"; + public const string CurrencyKzt = "CurrencyKzt"; + public const string CurrencyMnt = "CurrencyMnt"; + public const string CurrencyNgn = "CurrencyNgn"; + public const string CurrencyPhp = "CurrencyPhp"; + public const string CurrencyRial = "CurrencyRial"; + public const string CurrencyRub = "CurrencyRub"; + public const string CurrencySign = "CurrencySign"; + public const string CurrencyTry = "CurrencyTry"; + public const string CurrencyTwd = "CurrencyTwd"; + public const string CurrencyUsd = "CurrencyUsd"; + public const string CurrencyUsdOff = "CurrencyUsdOff"; + public const string CurrentAc = "CurrentAc"; + public const string CurrentDc = "CurrentDc"; + public const string CursorDefault = "CursorDefault"; + public const string CursorDefaultClick = "CursorDefaultClick"; + public const string CursorDefaultClickOutline = "CursorDefaultClickOutline"; + public const string CursorDefaultGesture = "CursorDefaultGesture"; + public const string CursorDefaultGestureOutline = "CursorDefaultGestureOutline"; + public const string CursorDefaultOutline = "CursorDefaultOutline"; + public const string CursorMove = "CursorMove"; + public const string CursorPointer = "CursorPointer"; + public const string CursorText = "CursorText"; + public const string Curtains = "Curtains"; + public const string CurtainsClosed = "CurtainsClosed"; + public const string DanceBallroom = "DanceBallroom"; + public const string DancePole = "DancePole"; + public const string Database = "Database"; + public const string DatabaseAlert = "DatabaseAlert"; + public const string DatabaseAlertOutline = "DatabaseAlertOutline"; + public const string DatabaseArrowDown = "DatabaseArrowDown"; + public const string DatabaseArrowDownOutline = "DatabaseArrowDownOutline"; + public const string DatabaseArrowLeft = "DatabaseArrowLeft"; + public const string DatabaseArrowLeftOutline = "DatabaseArrowLeftOutline"; + public const string DatabaseArrowRight = "DatabaseArrowRight"; + public const string DatabaseArrowRightOutline = "DatabaseArrowRightOutline"; + public const string DatabaseArrowUp = "DatabaseArrowUp"; + public const string DatabaseArrowUpOutline = "DatabaseArrowUpOutline"; + public const string DatabaseCheck = "DatabaseCheck"; + public const string DatabaseCheckOutline = "DatabaseCheckOutline"; + public const string DatabaseClock = "DatabaseClock"; + public const string DatabaseClockOutline = "DatabaseClockOutline"; + public const string DatabaseCog = "DatabaseCog"; + public const string DatabaseCogOutline = "DatabaseCogOutline"; + public const string DatabaseEdit = "DatabaseEdit"; + public const string DatabaseEditOutline = "DatabaseEditOutline"; + public const string DatabaseExport = "DatabaseExport"; + public const string DatabaseExportOutline = "DatabaseExportOutline"; + public const string DatabaseImport = "DatabaseImport"; + public const string DatabaseImportOutline = "DatabaseImportOutline"; + public const string DatabaseLock = "DatabaseLock"; + public const string DatabaseLockOutline = "DatabaseLockOutline"; + public const string DatabaseMarker = "DatabaseMarker"; + public const string DatabaseMarkerOutline = "DatabaseMarkerOutline"; + public const string DatabaseMinus = "DatabaseMinus"; + public const string DatabaseMinusOutline = "DatabaseMinusOutline"; + public const string DatabaseOff = "DatabaseOff"; + public const string DatabaseOffOutline = "DatabaseOffOutline"; + public const string DatabaseOutline = "DatabaseOutline"; + public const string DatabasePlus = "DatabasePlus"; + public const string DatabasePlusOutline = "DatabasePlusOutline"; + public const string DatabaseRefresh = "DatabaseRefresh"; + public const string DatabaseRefreshOutline = "DatabaseRefreshOutline"; + public const string DatabaseRemove = "DatabaseRemove"; + public const string DatabaseRemoveOutline = "DatabaseRemoveOutline"; + public const string DatabaseSearch = "DatabaseSearch"; + public const string DatabaseSearchOutline = "DatabaseSearchOutline"; + public const string DatabaseSettings = "DatabaseSettings"; + public const string DatabaseSettingsOutline = "DatabaseSettingsOutline"; + public const string DatabaseSync = "DatabaseSync"; + public const string DatabaseSyncOutline = "DatabaseSyncOutline"; + public const string DataMatrix = "DataMatrix"; + public const string DataMatrixEdit = "DataMatrixEdit"; + public const string DataMatrixMinus = "DataMatrixMinus"; + public const string DataMatrixPlus = "DataMatrixPlus"; + public const string DataMatrixRemove = "DataMatrixRemove"; + public const string DataMatrixScan = "DataMatrixScan"; + public const string DeathlyHallows = "DeathlyHallows"; + public const string DeathStar = "DeathStar"; + public const string DeathStarVariant = "DeathStarVariant"; + public const string Debian = "Debian"; + public const string DebugStepInto = "DebugStepInto"; + public const string DebugStepOut = "DebugStepOut"; + public const string DebugStepOver = "DebugStepOver"; + public const string Decagram = "Decagram"; + public const string DecagramOutline = "DecagramOutline"; + public const string Decimal = "Decimal"; + public const string DecimalComma = "DecimalComma"; + public const string DecimalCommaDecrease = "DecimalCommaDecrease"; + public const string DecimalCommaIncrease = "DecimalCommaIncrease"; + public const string DecimalDecrease = "DecimalDecrease"; + public const string DecimalIncrease = "DecimalIncrease"; + public const string Delete = "Delete"; + public const string DeleteAlert = "DeleteAlert"; + public const string DeleteAlertOutline = "DeleteAlertOutline"; + public const string DeleteCircle = "DeleteCircle"; + public const string DeleteCircleOutline = "DeleteCircleOutline"; + public const string DeleteClock = "DeleteClock"; + public const string DeleteClockOutline = "DeleteClockOutline"; + public const string DeleteEmpty = "DeleteEmpty"; + public const string DeleteEmptyOutline = "DeleteEmptyOutline"; + public const string DeleteForever = "DeleteForever"; + public const string DeleteForeverOutline = "DeleteForeverOutline"; + public const string DeleteOff = "DeleteOff"; + public const string DeleteOffOutline = "DeleteOffOutline"; + public const string DeleteOutline = "DeleteOutline"; + public const string DeleteRestore = "DeleteRestore"; + public const string DeleteSweep = "DeleteSweep"; + public const string DeleteSweepOutline = "DeleteSweepOutline"; + public const string DeleteVariant = "DeleteVariant"; + public const string Delta = "Delta"; + public const string Desk = "Desk"; + public const string DeskLamp = "DeskLamp"; + public const string Deskphone = "Deskphone"; + public const string DesktopClassic = "DesktopClassic"; + public const string DesktopMac = "DesktopMac"; + public const string DesktopMacDashboard = "DesktopMacDashboard"; + public const string DesktopTower = "DesktopTower"; + public const string DesktopTowerMonitor = "DesktopTowerMonitor"; + public const string Details = "Details"; + public const string DeveloperBoard = "DeveloperBoard"; + public const string Deviantart = "Deviantart"; + public const string Devices = "Devices"; + public const string DevTo = "DevTo"; + public const string Dharmachakra = "Dharmachakra"; + public const string Diabetes = "Diabetes"; + public const string Dialpad = "Dialpad"; + public const string Diameter = "Diameter"; + public const string DiameterOutline = "DiameterOutline"; + public const string DiameterVariant = "DiameterVariant"; + public const string Diamond = "Diamond"; + public const string DiamondOutline = "DiamondOutline"; + public const string DiamondStone = "DiamondStone"; + public const string Dice1 = "Dice1"; + public const string Dice1Outline = "Dice1Outline"; + public const string Dice2 = "Dice2"; + public const string Dice2Outline = "Dice2Outline"; + public const string Dice3 = "Dice3"; + public const string Dice3Outline = "Dice3Outline"; + public const string Dice4 = "Dice4"; + public const string Dice4Outline = "Dice4Outline"; + public const string Dice5 = "Dice5"; + public const string Dice5Outline = "Dice5Outline"; + public const string Dice6 = "Dice6"; + public const string Dice6Outline = "Dice6Outline"; + public const string DiceD10 = "DiceD10"; + public const string DiceD10Outline = "DiceD10Outline"; + public const string DiceD12 = "DiceD12"; + public const string DiceD12Outline = "DiceD12Outline"; + public const string DiceD20 = "DiceD20"; + public const string DiceD20Outline = "DiceD20Outline"; + public const string DiceD4 = "DiceD4"; + public const string DiceD4Outline = "DiceD4Outline"; + public const string DiceD6 = "DiceD6"; + public const string DiceD6Outline = "DiceD6Outline"; + public const string DiceD8 = "DiceD8"; + public const string DiceD8Outline = "DiceD8Outline"; + public const string DiceMultiple = "DiceMultiple"; + public const string DiceMultipleOutline = "DiceMultipleOutline"; + public const string DigitalOcean = "DigitalOcean"; + public const string DipSwitch = "DipSwitch"; + public const string Directions = "Directions"; + public const string DirectionsFork = "DirectionsFork"; + public const string Disc = "Disc"; + public const string DiscAlert = "DiscAlert"; + public const string Discord = "Discord"; + public const string DiscPlayer = "DiscPlayer"; + public const string Dishwasher = "Dishwasher"; + public const string DishwasherAlert = "DishwasherAlert"; + public const string DishwasherOff = "DishwasherOff"; + public const string Disqus = "Disqus"; + public const string DistributeHorizontalCenter = "DistributeHorizontalCenter"; + public const string DistributeHorizontalLeft = "DistributeHorizontalLeft"; + public const string DistributeHorizontalRight = "DistributeHorizontalRight"; + public const string DistributeVerticalBottom = "DistributeVerticalBottom"; + public const string DistributeVerticalCenter = "DistributeVerticalCenter"; + public const string DistributeVerticalTop = "DistributeVerticalTop"; + public const string Diversify = "Diversify"; + public const string DivingFlippers = "DivingFlippers"; + public const string DivingHelmet = "DivingHelmet"; + public const string DivingScuba = "DivingScuba"; + public const string DivingScubaFlag = "DivingScubaFlag"; + public const string DivingScubaTank = "DivingScubaTank"; + public const string DivingScubaTankMultiple = "DivingScubaTankMultiple"; + public const string DivingSnorkel = "DivingSnorkel"; + public const string Division = "Division"; + public const string DivisionBox = "DivisionBox"; + public const string Dlna = "Dlna"; + public const string Dna = "Dna"; + public const string Dns = "Dns"; + public const string DnsOutline = "DnsOutline"; + public const string DockBottom = "DockBottom"; + public const string Docker = "Docker"; + public const string DockLeft = "DockLeft"; + public const string DockRight = "DockRight"; + public const string DockTop = "DockTop"; + public const string DockWindow = "DockWindow"; + public const string Doctor = "Doctor"; + public const string Dog = "Dog"; + public const string DogService = "DogService"; + public const string DogSide = "DogSide"; + public const string DogSideOff = "DogSideOff"; + public const string Dolby = "Dolby"; + public const string Dolly = "Dolly"; + public const string Dolphin = "Dolphin"; + public const string Domain = "Domain"; + public const string DomainOff = "DomainOff"; + public const string DomainPlus = "DomainPlus"; + public const string DomainRemove = "DomainRemove"; + public const string DomeLight = "DomeLight"; + public const string DominoMask = "DominoMask"; + public const string Donkey = "Donkey"; + public const string Door = "Door"; + public const string Doorbell = "Doorbell"; + public const string DoorbellVideo = "DoorbellVideo"; + public const string DoorClosed = "DoorClosed"; + public const string DoorClosedLock = "DoorClosedLock"; + public const string DoorOpen = "DoorOpen"; + public const string DoorSliding = "DoorSliding"; + public const string DoorSlidingLock = "DoorSlidingLock"; + public const string DoorSlidingOpen = "DoorSlidingOpen"; + public const string DotNet = "DotNet"; + public const string DotsGrid = "DotsGrid"; + public const string DotsHexagon = "DotsHexagon"; + public const string DotsHorizontal = "DotsHorizontal"; + public const string DotsHorizontalCircle = "DotsHorizontalCircle"; + public const string DotsHorizontalCircleOutline = "DotsHorizontalCircleOutline"; + public const string DotsSquare = "DotsSquare"; + public const string DotsTriangle = "DotsTriangle"; + public const string DotsVertical = "DotsVertical"; + public const string DotsVerticalCircle = "DotsVerticalCircle"; + public const string DotsVerticalCircleOutline = "DotsVerticalCircleOutline"; + public const string Download = "Download"; + public const string DownloadBox = "DownloadBox"; + public const string DownloadBoxOutline = "DownloadBoxOutline"; + public const string DownloadCircle = "DownloadCircle"; + public const string DownloadCircleOutline = "DownloadCircleOutline"; + public const string DownloadLock = "DownloadLock"; + public const string DownloadLockOutline = "DownloadLockOutline"; + public const string DownloadMultiple = "DownloadMultiple"; + public const string DownloadNetwork = "DownloadNetwork"; + public const string DownloadNetworkOutline = "DownloadNetworkOutline"; + public const string DownloadOff = "DownloadOff"; + public const string DownloadOffOutline = "DownloadOffOutline"; + public const string DownloadOutline = "DownloadOutline"; + public const string Drag = "Drag"; + public const string DragHorizontal = "DragHorizontal"; + public const string DragHorizontalVariant = "DragHorizontalVariant"; + public const string DragVariant = "DragVariant"; + public const string DragVertical = "DragVertical"; + public const string DragVerticalVariant = "DragVerticalVariant"; + public const string DramaMasks = "DramaMasks"; + public const string Draw = "Draw"; + public const string Drawing = "Drawing"; + public const string DrawingBox = "DrawingBox"; + public const string Dresser = "Dresser"; + public const string DresserOutline = "DresserOutline"; + public const string Drone = "Drone"; + public const string Dropbox = "Dropbox"; + public const string Drupal = "Drupal"; + public const string Duck = "Duck"; + public const string Dumbbell = "Dumbbell"; + public const string DumpTruck = "DumpTruck"; + public const string Earbuds = "Earbuds"; + public const string EarbudsOff = "EarbudsOff"; + public const string EarbudsOffOutline = "EarbudsOffOutline"; + public const string EarbudsOutline = "EarbudsOutline"; + public const string EarHearing = "EarHearing"; + public const string EarHearingOff = "EarHearingOff"; + public const string Earth = "Earth"; + public const string EarthArrowRight = "EarthArrowRight"; + public const string EarthBox = "EarthBox"; + public const string EarthBoxMinus = "EarthBoxMinus"; + public const string EarthBoxOff = "EarthBoxOff"; + public const string EarthBoxPlus = "EarthBoxPlus"; + public const string EarthBoxRemove = "EarthBoxRemove"; + public const string EarthMinus = "EarthMinus"; + public const string EarthOff = "EarthOff"; + public const string EarthPlus = "EarthPlus"; + public const string EarthRemove = "EarthRemove"; + public const string Egg = "Egg"; + public const string EggEaster = "EggEaster"; + public const string EggFried = "EggFried"; + public const string EggOff = "EggOff"; + public const string EggOffOutline = "EggOffOutline"; + public const string EggOutline = "EggOutline"; + public const string EiffelTower = "EiffelTower"; + public const string EightTrack = "EightTrack"; + public const string Eject = "Eject"; + public const string EjectOutline = "EjectOutline"; + public const string ElectricSwitch = "ElectricSwitch"; + public const string ElectricSwitchClosed = "ElectricSwitchClosed"; + public const string ElectronFramework = "ElectronFramework"; + public const string Elephant = "Elephant"; + public const string ElevationDecline = "ElevationDecline"; + public const string ElevationRise = "ElevationRise"; + public const string Elevator = "Elevator"; + public const string ElevatorDown = "ElevatorDown"; + public const string ElevatorPassenger = "ElevatorPassenger"; + public const string ElevatorUp = "ElevatorUp"; + public const string Ellipse = "Ellipse"; + public const string EllipseOutline = "EllipseOutline"; + public const string Email = "Email"; + public const string EmailAlert = "EmailAlert"; + public const string EmailAlertOutline = "EmailAlertOutline"; + public const string EmailBox = "EmailBox"; + public const string EmailCheck = "EmailCheck"; + public const string EmailCheckOutline = "EmailCheckOutline"; + public const string EmailEdit = "EmailEdit"; + public const string EmailEditOutline = "EmailEditOutline"; + public const string EmailFast = "EmailFast"; + public const string EmailFastOutline = "EmailFastOutline"; + public const string EmailLock = "EmailLock"; + public const string EmailMarkAsUnread = "EmailMarkAsUnread"; + public const string EmailMinus = "EmailMinus"; + public const string EmailMinusOutline = "EmailMinusOutline"; + public const string EmailMultiple = "EmailMultiple"; + public const string EmailMultipleOutline = "EmailMultipleOutline"; + public const string EmailNewsletter = "EmailNewsletter"; + public const string EmailOff = "EmailOff"; + public const string EmailOffOutline = "EmailOffOutline"; + public const string EmailOpen = "EmailOpen"; + public const string EmailOpenMultiple = "EmailOpenMultiple"; + public const string EmailOpenMultipleOutline = "EmailOpenMultipleOutline"; + public const string EmailOpenOutline = "EmailOpenOutline"; + public const string EmailOutline = "EmailOutline"; + public const string EmailPlus = "EmailPlus"; + public const string EmailPlusOutline = "EmailPlusOutline"; + public const string EmailReceive = "EmailReceive"; + public const string EmailReceiveOutline = "EmailReceiveOutline"; + public const string EmailRemove = "EmailRemove"; + public const string EmailRemoveOutline = "EmailRemoveOutline"; + public const string EmailSearch = "EmailSearch"; + public const string EmailSearchOutline = "EmailSearchOutline"; + public const string EmailSend = "EmailSend"; + public const string EmailSendOutline = "EmailSendOutline"; + public const string EmailSync = "EmailSync"; + public const string EmailSyncOutline = "EmailSyncOutline"; + public const string EmailVariant = "EmailVariant"; + public const string Ember = "Ember"; + public const string Emby = "Emby"; + public const string Emoticon = "Emoticon"; + public const string EmoticonAngry = "EmoticonAngry"; + public const string EmoticonAngryOutline = "EmoticonAngryOutline"; + public const string EmoticonConfused = "EmoticonConfused"; + public const string EmoticonConfusedOutline = "EmoticonConfusedOutline"; + public const string EmoticonCool = "EmoticonCool"; + public const string EmoticonCoolOutline = "EmoticonCoolOutline"; + public const string EmoticonCry = "EmoticonCry"; + public const string EmoticonCryOutline = "EmoticonCryOutline"; + public const string EmoticonDead = "EmoticonDead"; + public const string EmoticonDeadOutline = "EmoticonDeadOutline"; + public const string EmoticonDevil = "EmoticonDevil"; + public const string EmoticonDevilOutline = "EmoticonDevilOutline"; + public const string EmoticonExcited = "EmoticonExcited"; + public const string EmoticonExcitedOutline = "EmoticonExcitedOutline"; + public const string EmoticonFrown = "EmoticonFrown"; + public const string EmoticonFrownOutline = "EmoticonFrownOutline"; + public const string EmoticonHappy = "EmoticonHappy"; + public const string EmoticonHappyOutline = "EmoticonHappyOutline"; + public const string EmoticonKiss = "EmoticonKiss"; + public const string EmoticonKissOutline = "EmoticonKissOutline"; + public const string EmoticonLol = "EmoticonLol"; + public const string EmoticonLolOutline = "EmoticonLolOutline"; + public const string EmoticonNeutral = "EmoticonNeutral"; + public const string EmoticonNeutralOutline = "EmoticonNeutralOutline"; + public const string EmoticonOutline = "EmoticonOutline"; + public const string EmoticonPoop = "EmoticonPoop"; + public const string EmoticonPoopOutline = "EmoticonPoopOutline"; + public const string EmoticonSad = "EmoticonSad"; + public const string EmoticonSadOutline = "EmoticonSadOutline"; + public const string EmoticonSick = "EmoticonSick"; + public const string EmoticonSickOutline = "EmoticonSickOutline"; + public const string EmoticonTongue = "EmoticonTongue"; + public const string EmoticonTongueOutline = "EmoticonTongueOutline"; + public const string EmoticonWink = "EmoticonWink"; + public const string EmoticonWinkOutline = "EmoticonWinkOutline"; + public const string Engine = "Engine"; + public const string EngineOff = "EngineOff"; + public const string EngineOffOutline = "EngineOffOutline"; + public const string EngineOutline = "EngineOutline"; + public const string Epsilon = "Epsilon"; + public const string Equal = "Equal"; + public const string EqualBox = "EqualBox"; + public const string Equalizer = "Equalizer"; + public const string EqualizerOutline = "EqualizerOutline"; + public const string Eraser = "Eraser"; + public const string EraserVariant = "EraserVariant"; + public const string Escalator = "Escalator"; + public const string EscalatorBox = "EscalatorBox"; + public const string EscalatorDown = "EscalatorDown"; + public const string EscalatorUp = "EscalatorUp"; + public const string Eslint = "Eslint"; + public const string Et = "Et"; + public const string Ethereum = "Ethereum"; + public const string Ethernet = "Ethernet"; + public const string EthernetCable = "EthernetCable"; + public const string EthernetCableOff = "EthernetCableOff"; + public const string Evernote = "Evernote"; + public const string EvPlugCcs1 = "EvPlugCcs1"; + public const string EvPlugCcs2 = "EvPlugCcs2"; + public const string EvPlugChademo = "EvPlugChademo"; + public const string EvPlugTesla = "EvPlugTesla"; + public const string EvPlugType1 = "EvPlugType1"; + public const string EvPlugType2 = "EvPlugType2"; + public const string EvStation = "EvStation"; + public const string Excavator = "Excavator"; + public const string Exclamation = "Exclamation"; + public const string ExclamationThick = "ExclamationThick"; + public const string ExitRun = "ExitRun"; + public const string ExitToApp = "ExitToApp"; + public const string ExpandAll = "ExpandAll"; + public const string ExpandAllOutline = "ExpandAllOutline"; + public const string ExpansionCard = "ExpansionCard"; + public const string ExpansionCardVariant = "ExpansionCardVariant"; + public const string Exponent = "Exponent"; + public const string ExponentBox = "ExponentBox"; + public const string Export = "Export"; + public const string ExportVariant = "ExportVariant"; + public const string Eye = "Eye"; + public const string EyeCheck = "EyeCheck"; + public const string EyeCheckOutline = "EyeCheckOutline"; + public const string EyeCircle = "EyeCircle"; + public const string EyeCircleOutline = "EyeCircleOutline"; + public const string Eyedropper = "Eyedropper"; + public const string EyedropperMinus = "EyedropperMinus"; + public const string EyedropperOff = "EyedropperOff"; + public const string EyedropperPlus = "EyedropperPlus"; + public const string EyedropperRemove = "EyedropperRemove"; + public const string EyedropperVariant = "EyedropperVariant"; + public const string EyeMinus = "EyeMinus"; + public const string EyeMinusOutline = "EyeMinusOutline"; + public const string EyeOff = "EyeOff"; + public const string EyeOffOutline = "EyeOffOutline"; + public const string EyeOutline = "EyeOutline"; + public const string EyePlus = "EyePlus"; + public const string EyePlusOutline = "EyePlusOutline"; + public const string EyeRemove = "EyeRemove"; + public const string EyeRemoveOutline = "EyeRemoveOutline"; + public const string EyeSettings = "EyeSettings"; + public const string EyeSettingsOutline = "EyeSettingsOutline"; + public const string FaceAgent = "FaceAgent"; + public const string Facebook = "Facebook"; + public const string FacebookGaming = "FacebookGaming"; + public const string FacebookMessenger = "FacebookMessenger"; + public const string FacebookWorkplace = "FacebookWorkplace"; + public const string FaceMan = "FaceMan"; + public const string FaceManOutline = "FaceManOutline"; + public const string FaceManProfile = "FaceManProfile"; + public const string FaceManShimmer = "FaceManShimmer"; + public const string FaceManShimmerOutline = "FaceManShimmerOutline"; + public const string FaceMask = "FaceMask"; + public const string FaceMaskOutline = "FaceMaskOutline"; + public const string FaceRecognition = "FaceRecognition"; + public const string FaceWoman = "FaceWoman"; + public const string FaceWomanOutline = "FaceWomanOutline"; + public const string FaceWomanProfile = "FaceWomanProfile"; + public const string FaceWomanShimmer = "FaceWomanShimmer"; + public const string FaceWomanShimmerOutline = "FaceWomanShimmerOutline"; + public const string Factory = "Factory"; + public const string FamilyTree = "FamilyTree"; + public const string Fan = "Fan"; + public const string FanAlert = "FanAlert"; + public const string FanAuto = "FanAuto"; + public const string FanChevronDown = "FanChevronDown"; + public const string FanChevronUp = "FanChevronUp"; + public const string FanMinus = "FanMinus"; + public const string FanOff = "FanOff"; + public const string FanPlus = "FanPlus"; + public const string FanRemove = "FanRemove"; + public const string FanSpeed1 = "FanSpeed1"; + public const string FanSpeed2 = "FanSpeed2"; + public const string FanSpeed3 = "FanSpeed3"; + public const string FastForward = "FastForward"; + public const string FastForward10 = "FastForward10"; + public const string FastForward30 = "FastForward30"; + public const string FastForward5 = "FastForward5"; + public const string FastForward60 = "FastForward60"; + public const string FastForwardOutline = "FastForwardOutline"; + public const string Fax = "Fax"; + public const string Feather = "Feather"; + public const string FeatureSearch = "FeatureSearch"; + public const string FeatureSearchOutline = "FeatureSearchOutline"; + public const string Fedora = "Fedora"; + public const string Fence = "Fence"; + public const string FenceElectric = "FenceElectric"; + public const string Fencing = "Fencing"; + public const string FerrisWheel = "FerrisWheel"; + public const string Ferry = "Ferry"; + public const string File = "File"; + public const string FileAccount = "FileAccount"; + public const string FileAccountOutline = "FileAccountOutline"; + public const string FileAlert = "FileAlert"; + public const string FileAlertOutline = "FileAlertOutline"; + public const string FileCabinet = "FileCabinet"; + public const string FileCad = "FileCad"; + public const string FileCadBox = "FileCadBox"; + public const string FileCancel = "FileCancel"; + public const string FileCancelOutline = "FileCancelOutline"; + public const string FileCertificate = "FileCertificate"; + public const string FileCertificateOutline = "FileCertificateOutline"; + public const string FileChart = "FileChart"; + public const string FileChartOutline = "FileChartOutline"; + public const string FileCheck = "FileCheck"; + public const string FileCheckOutline = "FileCheckOutline"; + public const string FileClock = "FileClock"; + public const string FileClockOutline = "FileClockOutline"; + public const string FileCloud = "FileCloud"; + public const string FileCloudOutline = "FileCloudOutline"; + public const string FileCode = "FileCode"; + public const string FileCodeOutline = "FileCodeOutline"; + public const string FileCog = "FileCog"; + public const string FileCogOutline = "FileCogOutline"; + public const string FileCompare = "FileCompare"; + public const string FileDelimited = "FileDelimited"; + public const string FileDelimitedOutline = "FileDelimitedOutline"; + public const string FileDocument = "FileDocument"; + public const string FileDocumentEdit = "FileDocumentEdit"; + public const string FileDocumentEditOutline = "FileDocumentEditOutline"; + public const string FileDocumentMultiple = "FileDocumentMultiple"; + public const string FileDocumentMultipleOutline = "FileDocumentMultipleOutline"; + public const string FileDocumentOutline = "FileDocumentOutline"; + public const string FileDownload = "FileDownload"; + public const string FileDownloadOutline = "FileDownloadOutline"; + public const string FileEdit = "FileEdit"; + public const string FileEditOutline = "FileEditOutline"; + public const string FileExcel = "FileExcel"; + public const string FileExcelBox = "FileExcelBox"; + public const string FileExcelBoxOutline = "FileExcelBoxOutline"; + public const string FileExcelOutline = "FileExcelOutline"; + public const string FileExport = "FileExport"; + public const string FileExportOutline = "FileExportOutline"; + public const string FileEye = "FileEye"; + public const string FileEyeOutline = "FileEyeOutline"; + public const string FileFind = "FileFind"; + public const string FileFindOutline = "FileFindOutline"; + public const string FileGifBox = "FileGifBox"; + public const string FileHidden = "FileHidden"; + public const string FileImage = "FileImage"; + public const string FileImageMarker = "FileImageMarker"; + public const string FileImageMarkerOutline = "FileImageMarkerOutline"; + public const string FileImageOutline = "FileImageOutline"; + public const string FileImport = "FileImport"; + public const string FileImportOutline = "FileImportOutline"; + public const string FileJpgBox = "FileJpgBox"; + public const string FileKey = "FileKey"; + public const string FileKeyOutline = "FileKeyOutline"; + public const string FileLink = "FileLink"; + public const string FileLinkOutline = "FileLinkOutline"; + public const string FileLock = "FileLock"; + public const string FileLockOutline = "FileLockOutline"; + public const string FileMarker = "FileMarker"; + public const string FileMarkerOutline = "FileMarkerOutline"; + public const string FileMove = "FileMove"; + public const string FileMoveOutline = "FileMoveOutline"; + public const string FileMultiple = "FileMultiple"; + public const string FileMultipleOutline = "FileMultipleOutline"; + public const string FileMusic = "FileMusic"; + public const string FileMusicOutline = "FileMusicOutline"; + public const string FileOutline = "FileOutline"; + public const string FilePdfBox = "FilePdfBox"; + public const string FilePercent = "FilePercent"; + public const string FilePercentOutline = "FilePercentOutline"; + public const string FilePhone = "FilePhone"; + public const string FilePhoneOutline = "FilePhoneOutline"; + public const string FilePlus = "FilePlus"; + public const string FilePlusOutline = "FilePlusOutline"; + public const string FilePngBox = "FilePngBox"; + public const string FilePowerpoint = "FilePowerpoint"; + public const string FilePowerpointBox = "FilePowerpointBox"; + public const string FilePowerpointBoxOutline = "FilePowerpointBoxOutline"; + public const string FilePowerpointOutline = "FilePowerpointOutline"; + public const string FilePresentationBox = "FilePresentationBox"; + public const string FileQuestion = "FileQuestion"; + public const string FileQuestionOutline = "FileQuestionOutline"; + public const string FileRefresh = "FileRefresh"; + public const string FileRefreshOutline = "FileRefreshOutline"; + public const string FileRemove = "FileRemove"; + public const string FileRemoveOutline = "FileRemoveOutline"; + public const string FileReplace = "FileReplace"; + public const string FileReplaceOutline = "FileReplaceOutline"; + public const string FileRestore = "FileRestore"; + public const string FileRestoreOutline = "FileRestoreOutline"; + public const string FileSearch = "FileSearch"; + public const string FileSearchOutline = "FileSearchOutline"; + public const string FileSend = "FileSend"; + public const string FileSendOutline = "FileSendOutline"; + public const string FileSettings = "FileSettings"; + public const string FileSettingsOutline = "FileSettingsOutline"; + public const string FileStar = "FileStar"; + public const string FileStarOutline = "FileStarOutline"; + public const string FileSwap = "FileSwap"; + public const string FileSwapOutline = "FileSwapOutline"; + public const string FileSync = "FileSync"; + public const string FileSyncOutline = "FileSyncOutline"; + public const string FileTable = "FileTable"; + public const string FileTableBox = "FileTableBox"; + public const string FileTableBoxMultiple = "FileTableBoxMultiple"; + public const string FileTableBoxMultipleOutline = "FileTableBoxMultipleOutline"; + public const string FileTableBoxOutline = "FileTableBoxOutline"; + public const string FileTableOutline = "FileTableOutline"; + public const string FileTree = "FileTree"; + public const string FileTreeOutline = "FileTreeOutline"; + public const string FileUndo = "FileUndo"; + public const string FileUndoOutline = "FileUndoOutline"; + public const string FileUpload = "FileUpload"; + public const string FileUploadOutline = "FileUploadOutline"; + public const string FileVideo = "FileVideo"; + public const string FileVideoOutline = "FileVideoOutline"; + public const string FileWord = "FileWord"; + public const string FileWordBox = "FileWordBox"; + public const string FileWordBoxOutline = "FileWordBoxOutline"; + public const string FileWordOutline = "FileWordOutline"; + public const string Film = "Film"; + public const string Filmstrip = "Filmstrip"; + public const string FilmstripBox = "FilmstripBox"; + public const string FilmstripBoxMultiple = "FilmstripBoxMultiple"; + public const string FilmstripOff = "FilmstripOff"; + public const string Filter = "Filter"; + public const string FilterCheck = "FilterCheck"; + public const string FilterCheckOutline = "FilterCheckOutline"; + public const string FilterMenu = "FilterMenu"; + public const string FilterMenuOutline = "FilterMenuOutline"; + public const string FilterMinus = "FilterMinus"; + public const string FilterMinusOutline = "FilterMinusOutline"; + public const string FilterOff = "FilterOff"; + public const string FilterOffOutline = "FilterOffOutline"; + public const string FilterOutline = "FilterOutline"; + public const string FilterPlus = "FilterPlus"; + public const string FilterPlusOutline = "FilterPlusOutline"; + public const string FilterRemove = "FilterRemove"; + public const string FilterRemoveOutline = "FilterRemoveOutline"; + public const string FilterVariant = "FilterVariant"; + public const string FilterVariantMinus = "FilterVariantMinus"; + public const string FilterVariantPlus = "FilterVariantPlus"; + public const string FilterVariantRemove = "FilterVariantRemove"; + public const string Finance = "Finance"; + public const string FindReplace = "FindReplace"; + public const string Fingerprint = "Fingerprint"; + public const string FingerprintOff = "FingerprintOff"; + public const string Fire = "Fire"; + public const string FireAlert = "FireAlert"; + public const string Firebase = "Firebase"; + public const string FireCircle = "FireCircle"; + public const string FireExtinguisher = "FireExtinguisher"; + public const string Firefox = "Firefox"; + public const string FireHydrant = "FireHydrant"; + public const string FireHydrantAlert = "FireHydrantAlert"; + public const string FireHydrantOff = "FireHydrantOff"; + public const string FireOff = "FireOff"; + public const string Fireplace = "Fireplace"; + public const string FireplaceOff = "FireplaceOff"; + public const string FireTruck = "FireTruck"; + public const string Firewire = "Firewire"; + public const string Firework = "Firework"; + public const string FireworkOff = "FireworkOff"; + public const string Fish = "Fish"; + public const string Fishbowl = "Fishbowl"; + public const string FishbowlOutline = "FishbowlOutline"; + public const string FishOff = "FishOff"; + public const string FitToPage = "FitToPage"; + public const string FitToPageOutline = "FitToPageOutline"; + public const string FitToScreen = "FitToScreen"; + public const string FitToScreenOutline = "FitToScreenOutline"; + public const string Flag = "Flag"; + public const string FlagCheckered = "FlagCheckered"; + public const string FlagMinus = "FlagMinus"; + public const string FlagMinusOutline = "FlagMinusOutline"; + public const string FlagOff = "FlagOff"; + public const string FlagOffOutline = "FlagOffOutline"; + public const string FlagOutline = "FlagOutline"; + public const string FlagPlus = "FlagPlus"; + public const string FlagPlusOutline = "FlagPlusOutline"; + public const string FlagRemove = "FlagRemove"; + public const string FlagRemoveOutline = "FlagRemoveOutline"; + public const string FlagTriangle = "FlagTriangle"; + public const string FlagVariant = "FlagVariant"; + public const string FlagVariantOutline = "FlagVariantOutline"; + public const string Flare = "Flare"; + public const string Flash = "Flash"; + public const string FlashAlert = "FlashAlert"; + public const string FlashAlertOutline = "FlashAlertOutline"; + public const string FlashAuto = "FlashAuto"; + public const string Flashlight = "Flashlight"; + public const string FlashlightOff = "FlashlightOff"; + public const string FlashOff = "FlashOff"; + public const string FlashOutline = "FlashOutline"; + public const string FlashRedEye = "FlashRedEye"; + public const string Flask = "Flask"; + public const string FlaskEmpty = "FlaskEmpty"; + public const string FlaskEmptyMinus = "FlaskEmptyMinus"; + public const string FlaskEmptyMinusOutline = "FlaskEmptyMinusOutline"; + public const string FlaskEmptyOff = "FlaskEmptyOff"; + public const string FlaskEmptyOffOutline = "FlaskEmptyOffOutline"; + public const string FlaskEmptyOutline = "FlaskEmptyOutline"; + public const string FlaskEmptyPlus = "FlaskEmptyPlus"; + public const string FlaskEmptyPlusOutline = "FlaskEmptyPlusOutline"; + public const string FlaskEmptyRemove = "FlaskEmptyRemove"; + public const string FlaskEmptyRemoveOutline = "FlaskEmptyRemoveOutline"; + public const string FlaskMinus = "FlaskMinus"; + public const string FlaskMinusOutline = "FlaskMinusOutline"; + public const string FlaskOff = "FlaskOff"; + public const string FlaskOffOutline = "FlaskOffOutline"; + public const string FlaskOutline = "FlaskOutline"; + public const string FlaskPlus = "FlaskPlus"; + public const string FlaskPlusOutline = "FlaskPlusOutline"; + public const string FlaskRemove = "FlaskRemove"; + public const string FlaskRemoveOutline = "FlaskRemoveOutline"; + public const string FlaskRoundBottom = "FlaskRoundBottom"; + public const string FlaskRoundBottomEmpty = "FlaskRoundBottomEmpty"; + public const string FlaskRoundBottomEmptyOutline = "FlaskRoundBottomEmptyOutline"; + public const string FlaskRoundBottomOutline = "FlaskRoundBottomOutline"; + public const string FleurDeLis = "FleurDeLis"; + public const string FlipHorizontal = "FlipHorizontal"; + public const string FlipToBack = "FlipToBack"; + public const string FlipToFront = "FlipToFront"; + public const string FlipVertical = "FlipVertical"; + public const string FloorLamp = "FloorLamp"; + public const string FloorLampDual = "FloorLampDual"; + public const string FloorLampDualOutline = "FloorLampDualOutline"; + public const string FloorLampOutline = "FloorLampOutline"; + public const string FloorLampTorchiere = "FloorLampTorchiere"; + public const string FloorLampTorchiereOutline = "FloorLampTorchiereOutline"; + public const string FloorLampTorchiereVariant = "FloorLampTorchiereVariant"; + public const string FloorLampTorchiereVariantOutline = "FloorLampTorchiereVariantOutline"; + public const string FloorPlan = "FloorPlan"; + public const string Floppy = "Floppy"; + public const string FloppyVariant = "FloppyVariant"; + public const string Flower = "Flower"; + public const string FlowerOutline = "FlowerOutline"; + public const string FlowerPollen = "FlowerPollen"; + public const string FlowerPollenOutline = "FlowerPollenOutline"; + public const string FlowerPoppy = "FlowerPoppy"; + public const string FlowerTulip = "FlowerTulip"; + public const string FlowerTulipOutline = "FlowerTulipOutline"; + public const string FocusAuto = "FocusAuto"; + public const string FocusField = "FocusField"; + public const string FocusFieldHorizontal = "FocusFieldHorizontal"; + public const string FocusFieldVertical = "FocusFieldVertical"; + public const string Folder = "Folder"; + public const string FolderAccount = "FolderAccount"; + public const string FolderAccountOutline = "FolderAccountOutline"; + public const string FolderAlert = "FolderAlert"; + public const string FolderAlertOutline = "FolderAlertOutline"; + public const string FolderClock = "FolderClock"; + public const string FolderClockOutline = "FolderClockOutline"; + public const string FolderCog = "FolderCog"; + public const string FolderCogOutline = "FolderCogOutline"; + public const string FolderDownload = "FolderDownload"; + public const string FolderDownloadOutline = "FolderDownloadOutline"; + public const string FolderEdit = "FolderEdit"; + public const string FolderEditOutline = "FolderEditOutline"; + public const string FolderEye = "FolderEye"; + public const string FolderEyeOutline = "FolderEyeOutline"; + public const string FolderGoogleDrive = "FolderGoogleDrive"; + public const string FolderHeart = "FolderHeart"; + public const string FolderHeartOutline = "FolderHeartOutline"; + public const string FolderHidden = "FolderHidden"; + public const string FolderHome = "FolderHome"; + public const string FolderHomeOutline = "FolderHomeOutline"; + public const string FolderImage = "FolderImage"; + public const string FolderInformation = "FolderInformation"; + public const string FolderInformationOutline = "FolderInformationOutline"; + public const string FolderKey = "FolderKey"; + public const string FolderKeyNetwork = "FolderKeyNetwork"; + public const string FolderKeyNetworkOutline = "FolderKeyNetworkOutline"; + public const string FolderKeyOutline = "FolderKeyOutline"; + public const string FolderLock = "FolderLock"; + public const string FolderLockOpen = "FolderLockOpen"; + public const string FolderMarker = "FolderMarker"; + public const string FolderMarkerOutline = "FolderMarkerOutline"; + public const string FolderMove = "FolderMove"; + public const string FolderMoveOutline = "FolderMoveOutline"; + public const string FolderMultiple = "FolderMultiple"; + public const string FolderMultipleImage = "FolderMultipleImage"; + public const string FolderMultipleOutline = "FolderMultipleOutline"; + public const string FolderMultiplePlus = "FolderMultiplePlus"; + public const string FolderMultiplePlusOutline = "FolderMultiplePlusOutline"; + public const string FolderMusic = "FolderMusic"; + public const string FolderMusicOutline = "FolderMusicOutline"; + public const string FolderNetwork = "FolderNetwork"; + public const string FolderNetworkOutline = "FolderNetworkOutline"; + public const string FolderOpen = "FolderOpen"; + public const string FolderOpenOutline = "FolderOpenOutline"; + public const string FolderOutline = "FolderOutline"; + public const string FolderPlus = "FolderPlus"; + public const string FolderPlusOutline = "FolderPlusOutline"; + public const string FolderPound = "FolderPound"; + public const string FolderPoundOutline = "FolderPoundOutline"; + public const string FolderRefresh = "FolderRefresh"; + public const string FolderRefreshOutline = "FolderRefreshOutline"; + public const string FolderRemove = "FolderRemove"; + public const string FolderRemoveOutline = "FolderRemoveOutline"; + public const string FolderSearch = "FolderSearch"; + public const string FolderSearchOutline = "FolderSearchOutline"; + public const string FolderSettings = "FolderSettings"; + public const string FolderSettingsOutline = "FolderSettingsOutline"; + public const string FolderStar = "FolderStar"; + public const string FolderStarMultiple = "FolderStarMultiple"; + public const string FolderStarMultipleOutline = "FolderStarMultipleOutline"; + public const string FolderStarOutline = "FolderStarOutline"; + public const string FolderSwap = "FolderSwap"; + public const string FolderSwapOutline = "FolderSwapOutline"; + public const string FolderSync = "FolderSync"; + public const string FolderSyncOutline = "FolderSyncOutline"; + public const string FolderTable = "FolderTable"; + public const string FolderTableOutline = "FolderTableOutline"; + public const string FolderText = "FolderText"; + public const string FolderTextOutline = "FolderTextOutline"; + public const string FolderUpload = "FolderUpload"; + public const string FolderUploadOutline = "FolderUploadOutline"; + public const string FolderZip = "FolderZip"; + public const string FolderZipOutline = "FolderZipOutline"; + public const string FontAwesome = "FontAwesome"; + public const string Food = "Food"; + public const string FoodApple = "FoodApple"; + public const string FoodAppleOutline = "FoodAppleOutline"; + public const string FoodCroissant = "FoodCroissant"; + public const string FoodDrumstick = "FoodDrumstick"; + public const string FoodDrumstickOff = "FoodDrumstickOff"; + public const string FoodDrumstickOffOutline = "FoodDrumstickOffOutline"; + public const string FoodDrumstickOutline = "FoodDrumstickOutline"; + public const string FoodForkDrink = "FoodForkDrink"; + public const string FoodHalal = "FoodHalal"; + public const string FoodHotDog = "FoodHotDog"; + public const string FoodKosher = "FoodKosher"; + public const string FoodOff = "FoodOff"; + public const string FoodSteak = "FoodSteak"; + public const string FoodSteakOff = "FoodSteakOff"; + public const string FoodTakeoutBox = "FoodTakeoutBox"; + public const string FoodTakeoutBoxOutline = "FoodTakeoutBoxOutline"; + public const string FoodTurkey = "FoodTurkey"; + public const string FoodVariant = "FoodVariant"; + public const string FoodVariantOff = "FoodVariantOff"; + public const string Football = "Football"; + public const string FootballAustralian = "FootballAustralian"; + public const string FootballHelmet = "FootballHelmet"; + public const string FootPrint = "FootPrint"; + public const string Forest = "Forest"; + public const string Forklift = "Forklift"; + public const string FormatAlignBottom = "FormatAlignBottom"; + public const string FormatAlignCenter = "FormatAlignCenter"; + public const string FormatAlignJustify = "FormatAlignJustify"; + public const string FormatAlignLeft = "FormatAlignLeft"; + public const string FormatAlignMiddle = "FormatAlignMiddle"; + public const string FormatAlignRight = "FormatAlignRight"; + public const string FormatAlignTop = "FormatAlignTop"; + public const string FormatAnnotationMinus = "FormatAnnotationMinus"; + public const string FormatAnnotationPlus = "FormatAnnotationPlus"; + public const string FormatBold = "FormatBold"; + public const string FormatClear = "FormatClear"; + public const string FormatColorFill = "FormatColorFill"; + public const string FormatColorHighlight = "FormatColorHighlight"; + public const string FormatColorMarkerCancel = "FormatColorMarkerCancel"; + public const string FormatColorText = "FormatColorText"; + public const string FormatColumns = "FormatColumns"; + public const string FormatFloatCenter = "FormatFloatCenter"; + public const string FormatFloatLeft = "FormatFloatLeft"; + public const string FormatFloatNone = "FormatFloatNone"; + public const string FormatFloatRight = "FormatFloatRight"; + public const string FormatFont = "FormatFont"; + public const string FormatFontSizeDecrease = "FormatFontSizeDecrease"; + public const string FormatFontSizeIncrease = "FormatFontSizeIncrease"; + public const string FormatHeader1 = "FormatHeader1"; + public const string FormatHeader2 = "FormatHeader2"; + public const string FormatHeader3 = "FormatHeader3"; + public const string FormatHeader4 = "FormatHeader4"; + public const string FormatHeader5 = "FormatHeader5"; + public const string FormatHeader6 = "FormatHeader6"; + public const string FormatHeaderDecrease = "FormatHeaderDecrease"; + public const string FormatHeaderEqual = "FormatHeaderEqual"; + public const string FormatHeaderIncrease = "FormatHeaderIncrease"; + public const string FormatHeaderPound = "FormatHeaderPound"; + public const string FormatHorizontalAlignCenter = "FormatHorizontalAlignCenter"; + public const string FormatHorizontalAlignLeft = "FormatHorizontalAlignLeft"; + public const string FormatHorizontalAlignRight = "FormatHorizontalAlignRight"; + public const string FormatIndentDecrease = "FormatIndentDecrease"; + public const string FormatIndentIncrease = "FormatIndentIncrease"; + public const string FormatItalic = "FormatItalic"; + public const string FormatLetterCase = "FormatLetterCase"; + public const string FormatLetterCaseLower = "FormatLetterCaseLower"; + public const string FormatLetterCaseUpper = "FormatLetterCaseUpper"; + public const string FormatLetterEndsWith = "FormatLetterEndsWith"; + public const string FormatLetterMatches = "FormatLetterMatches"; + public const string FormatLetterStartsWith = "FormatLetterStartsWith"; + public const string FormatLineSpacing = "FormatLineSpacing"; + public const string FormatLineStyle = "FormatLineStyle"; + public const string FormatLineWeight = "FormatLineWeight"; + public const string FormatListBulleted = "FormatListBulleted"; + public const string FormatListBulletedSquare = "FormatListBulletedSquare"; + public const string FormatListBulletedTriangle = "FormatListBulletedTriangle"; + public const string FormatListBulletedType = "FormatListBulletedType"; + public const string FormatListCheckbox = "FormatListCheckbox"; + public const string FormatListChecks = "FormatListChecks"; + public const string FormatListGroup = "FormatListGroup"; + public const string FormatListNumbered = "FormatListNumbered"; + public const string FormatListNumberedRtl = "FormatListNumberedRtl"; + public const string FormatListText = "FormatListText"; + public const string FormatOverline = "FormatOverline"; + public const string FormatPageBreak = "FormatPageBreak"; + public const string FormatPaint = "FormatPaint"; + public const string FormatParagraph = "FormatParagraph"; + public const string FormatPilcrow = "FormatPilcrow"; + public const string FormatQuoteClose = "FormatQuoteClose"; + public const string FormatQuoteCloseOutline = "FormatQuoteCloseOutline"; + public const string FormatQuoteOpen = "FormatQuoteOpen"; + public const string FormatQuoteOpenOutline = "FormatQuoteOpenOutline"; + public const string FormatRotate90 = "FormatRotate90"; + public const string FormatSection = "FormatSection"; + public const string FormatSize = "FormatSize"; + public const string FormatStrikethrough = "FormatStrikethrough"; + public const string FormatStrikethroughVariant = "FormatStrikethroughVariant"; + public const string FormatSubscript = "FormatSubscript"; + public const string FormatSuperscript = "FormatSuperscript"; + public const string FormatText = "FormatText"; + public const string FormatTextbox = "FormatTextbox"; + public const string FormatTextdirectionLToR = "FormatTextdirectionLToR"; + public const string FormatTextdirectionRToL = "FormatTextdirectionRToL"; + public const string FormatTextRotationAngleDown = "FormatTextRotationAngleDown"; + public const string FormatTextRotationAngleUp = "FormatTextRotationAngleUp"; + public const string FormatTextRotationDown = "FormatTextRotationDown"; + public const string FormatTextRotationDownVertical = "FormatTextRotationDownVertical"; + public const string FormatTextRotationNone = "FormatTextRotationNone"; + public const string FormatTextRotationUp = "FormatTextRotationUp"; + public const string FormatTextRotationVertical = "FormatTextRotationVertical"; + public const string FormatTextVariant = "FormatTextVariant"; + public const string FormatTextVariantOutline = "FormatTextVariantOutline"; + public const string FormatTextWrappingClip = "FormatTextWrappingClip"; + public const string FormatTextWrappingOverflow = "FormatTextWrappingOverflow"; + public const string FormatTextWrappingWrap = "FormatTextWrappingWrap"; + public const string FormatTitle = "FormatTitle"; + public const string FormatUnderline = "FormatUnderline"; + public const string FormatUnderlineWavy = "FormatUnderlineWavy"; + public const string FormatVerticalAlignBottom = "FormatVerticalAlignBottom"; + public const string FormatVerticalAlignCenter = "FormatVerticalAlignCenter"; + public const string FormatVerticalAlignTop = "FormatVerticalAlignTop"; + public const string FormatWrapInline = "FormatWrapInline"; + public const string FormatWrapSquare = "FormatWrapSquare"; + public const string FormatWrapTight = "FormatWrapTight"; + public const string FormatWrapTopBottom = "FormatWrapTopBottom"; + public const string FormDropdown = "FormDropdown"; + public const string FormSelect = "FormSelect"; + public const string FormTextarea = "FormTextarea"; + public const string FormTextbox = "FormTextbox"; + public const string FormTextboxLock = "FormTextboxLock"; + public const string FormTextboxPassword = "FormTextboxPassword"; + public const string Forum = "Forum"; + public const string ForumOutline = "ForumOutline"; + public const string Forward = "Forward"; + public const string Forwardburger = "Forwardburger"; + public const string Fountain = "Fountain"; + public const string FountainPen = "FountainPen"; + public const string FountainPenTip = "FountainPenTip"; + public const string Freebsd = "Freebsd"; + public const string FrequentlyAskedQuestions = "FrequentlyAskedQuestions"; + public const string Fridge = "Fridge"; + public const string FridgeAlert = "FridgeAlert"; + public const string FridgeAlertOutline = "FridgeAlertOutline"; + public const string FridgeBottom = "FridgeBottom"; + public const string FridgeIndustrial = "FridgeIndustrial"; + public const string FridgeIndustrialAlert = "FridgeIndustrialAlert"; + public const string FridgeIndustrialAlertOutline = "FridgeIndustrialAlertOutline"; + public const string FridgeIndustrialOff = "FridgeIndustrialOff"; + public const string FridgeIndustrialOffOutline = "FridgeIndustrialOffOutline"; + public const string FridgeIndustrialOutline = "FridgeIndustrialOutline"; + public const string FridgeOff = "FridgeOff"; + public const string FridgeOffOutline = "FridgeOffOutline"; + public const string FridgeOutline = "FridgeOutline"; + public const string FridgeTop = "FridgeTop"; + public const string FridgeVariant = "FridgeVariant"; + public const string FridgeVariantAlert = "FridgeVariantAlert"; + public const string FridgeVariantAlertOutline = "FridgeVariantAlertOutline"; + public const string FridgeVariantOff = "FridgeVariantOff"; + public const string FridgeVariantOffOutline = "FridgeVariantOffOutline"; + public const string FridgeVariantOutline = "FridgeVariantOutline"; + public const string FruitCherries = "FruitCherries"; + public const string FruitCherriesOff = "FruitCherriesOff"; + public const string FruitCitrus = "FruitCitrus"; + public const string FruitCitrusOff = "FruitCitrusOff"; + public const string FruitGrapes = "FruitGrapes"; + public const string FruitGrapesOutline = "FruitGrapesOutline"; + public const string FruitPineapple = "FruitPineapple"; + public const string FruitWatermelon = "FruitWatermelon"; + public const string Fuel = "Fuel"; + public const string FuelCell = "FuelCell"; + public const string Fullscreen = "Fullscreen"; + public const string FullscreenExit = "FullscreenExit"; + public const string Function = "Function"; + public const string FunctionVariant = "FunctionVariant"; + public const string FuriganaHorizontal = "FuriganaHorizontal"; + public const string FuriganaVertical = "FuriganaVertical"; + public const string Fuse = "Fuse"; + public const string FuseAlert = "FuseAlert"; + public const string FuseBlade = "FuseBlade"; + public const string FuseOff = "FuseOff"; + public const string Gamepad = "Gamepad"; + public const string GamepadCircle = "GamepadCircle"; + public const string GamepadCircleDown = "GamepadCircleDown"; + public const string GamepadCircleLeft = "GamepadCircleLeft"; + public const string GamepadCircleOutline = "GamepadCircleOutline"; + public const string GamepadCircleRight = "GamepadCircleRight"; + public const string GamepadCircleUp = "GamepadCircleUp"; + public const string GamepadDown = "GamepadDown"; + public const string GamepadLeft = "GamepadLeft"; + public const string GamepadRight = "GamepadRight"; + public const string GamepadRound = "GamepadRound"; + public const string GamepadRoundDown = "GamepadRoundDown"; + public const string GamepadRoundLeft = "GamepadRoundLeft"; + public const string GamepadRoundOutline = "GamepadRoundOutline"; + public const string GamepadRoundRight = "GamepadRoundRight"; + public const string GamepadRoundUp = "GamepadRoundUp"; + public const string GamepadSquare = "GamepadSquare"; + public const string GamepadSquareOutline = "GamepadSquareOutline"; + public const string GamepadUp = "GamepadUp"; + public const string GamepadVariant = "GamepadVariant"; + public const string GamepadVariantOutline = "GamepadVariantOutline"; + public const string Gamma = "Gamma"; + public const string GantryCrane = "GantryCrane"; + public const string Garage = "Garage"; + public const string GarageAlert = "GarageAlert"; + public const string GarageAlertVariant = "GarageAlertVariant"; + public const string GarageLock = "GarageLock"; + public const string GarageOpen = "GarageOpen"; + public const string GarageOpenVariant = "GarageOpenVariant"; + public const string GarageVariant = "GarageVariant"; + public const string GarageVariantLock = "GarageVariantLock"; + public const string GasCylinder = "GasCylinder"; + public const string GasStation = "GasStation"; + public const string GasStationOff = "GasStationOff"; + public const string GasStationOffOutline = "GasStationOffOutline"; + public const string GasStationOutline = "GasStationOutline"; + public const string Gate = "Gate"; + public const string GateAlert = "GateAlert"; + public const string GateAnd = "GateAnd"; + public const string GateArrowLeft = "GateArrowLeft"; + public const string GateArrowRight = "GateArrowRight"; + public const string GateNand = "GateNand"; + public const string GateNor = "GateNor"; + public const string GateNot = "GateNot"; + public const string GateOpen = "GateOpen"; + public const string GateOr = "GateOr"; + public const string GateXnor = "GateXnor"; + public const string GateXor = "GateXor"; + public const string Gatsby = "Gatsby"; + public const string Gauge = "Gauge"; + public const string GaugeEmpty = "GaugeEmpty"; + public const string GaugeFull = "GaugeFull"; + public const string GaugeLow = "GaugeLow"; + public const string Gavel = "Gavel"; + public const string GenderFemale = "GenderFemale"; + public const string GenderMale = "GenderMale"; + public const string GenderMaleFemale = "GenderMaleFemale"; + public const string GenderMaleFemaleVariant = "GenderMaleFemaleVariant"; + public const string GenderNonBinary = "GenderNonBinary"; + public const string GenderTransgender = "GenderTransgender"; + public const string Gentoo = "Gentoo"; + public const string Gesture = "Gesture"; + public const string GestureDoubleTap = "GestureDoubleTap"; + public const string GesturePinch = "GesturePinch"; + public const string GestureSpread = "GestureSpread"; + public const string GestureSwipe = "GestureSwipe"; + public const string GestureSwipeDown = "GestureSwipeDown"; + public const string GestureSwipeHorizontal = "GestureSwipeHorizontal"; + public const string GestureSwipeLeft = "GestureSwipeLeft"; + public const string GestureSwipeRight = "GestureSwipeRight"; + public const string GestureSwipeUp = "GestureSwipeUp"; + public const string GestureSwipeVertical = "GestureSwipeVertical"; + public const string GestureTap = "GestureTap"; + public const string GestureTapBox = "GestureTapBox"; + public const string GestureTapButton = "GestureTapButton"; + public const string GestureTapHold = "GestureTapHold"; + public const string GestureTwoDoubleTap = "GestureTwoDoubleTap"; + public const string GestureTwoTap = "GestureTwoTap"; + public const string Ghost = "Ghost"; + public const string GhostOff = "GhostOff"; + public const string GhostOffOutline = "GhostOffOutline"; + public const string GhostOutline = "GhostOutline"; + public const string Gift = "Gift"; + public const string GiftOff = "GiftOff"; + public const string GiftOffOutline = "GiftOffOutline"; + public const string GiftOpen = "GiftOpen"; + public const string GiftOpenOutline = "GiftOpenOutline"; + public const string GiftOutline = "GiftOutline"; + public const string Git = "Git"; + public const string Github = "Github"; + public const string Gitlab = "Gitlab"; + public const string GlassCocktail = "GlassCocktail"; + public const string GlassCocktailOff = "GlassCocktailOff"; + public const string Glasses = "Glasses"; + public const string GlassFlute = "GlassFlute"; + public const string GlassFragile = "GlassFragile"; + public const string GlassMug = "GlassMug"; + public const string GlassMugOff = "GlassMugOff"; + public const string GlassMugVariant = "GlassMugVariant"; + public const string GlassMugVariantOff = "GlassMugVariantOff"; + public const string GlassPintOutline = "GlassPintOutline"; + public const string GlassStange = "GlassStange"; + public const string GlassTulip = "GlassTulip"; + public const string GlassWine = "GlassWine"; + public const string GlobeLight = "GlobeLight"; + public const string GlobeModel = "GlobeModel"; + public const string Gmail = "Gmail"; + public const string Gnome = "Gnome"; + public const string Gog = "Gog"; + public const string GoKart = "GoKart"; + public const string GoKartTrack = "GoKartTrack"; + public const string Gold = "Gold"; + public const string Golf = "Golf"; + public const string GolfCart = "GolfCart"; + public const string GolfTee = "GolfTee"; + public const string Gondola = "Gondola"; + public const string Goodreads = "Goodreads"; + public const string Google = "Google"; + public const string GoogleAds = "GoogleAds"; + public const string GoogleAnalytics = "GoogleAnalytics"; + public const string GoogleAssistant = "GoogleAssistant"; + public const string GoogleCardboard = "GoogleCardboard"; + public const string GoogleChrome = "GoogleChrome"; + public const string GoogleCircles = "GoogleCircles"; + public const string GoogleCirclesCommunities = "GoogleCirclesCommunities"; + public const string GoogleCirclesExtended = "GoogleCirclesExtended"; + public const string GoogleCirclesGroup = "GoogleCirclesGroup"; + public const string GoogleClassroom = "GoogleClassroom"; + public const string GoogleCloud = "GoogleCloud"; + public const string GoogleController = "GoogleController"; + public const string GoogleControllerOff = "GoogleControllerOff"; + public const string GoogleDownasaur = "GoogleDownasaur"; + public const string GoogleDrive = "GoogleDrive"; + public const string GoogleEarth = "GoogleEarth"; + public const string GoogleFit = "GoogleFit"; + public const string GoogleGlass = "GoogleGlass"; + public const string GoogleHangouts = "GoogleHangouts"; + public const string GoogleHome = "GoogleHome"; + public const string GoogleKeep = "GoogleKeep"; + public const string GoogleLens = "GoogleLens"; + public const string GoogleMaps = "GoogleMaps"; + public const string GoogleMyBusiness = "GoogleMyBusiness"; + public const string GoogleNearby = "GoogleNearby"; + public const string GooglePlay = "GooglePlay"; + public const string GooglePlus = "GooglePlus"; + public const string GooglePodcast = "GooglePodcast"; + public const string GoogleSpreadsheet = "GoogleSpreadsheet"; + public const string GoogleStreetView = "GoogleStreetView"; + public const string GoogleTranslate = "GoogleTranslate"; + public const string GradientHorizontal = "GradientHorizontal"; + public const string GradientVertical = "GradientVertical"; + public const string Grain = "Grain"; + public const string Graph = "Graph"; + public const string GraphOutline = "GraphOutline"; + public const string Graphql = "Graphql"; + public const string Grass = "Grass"; + public const string GraveStone = "GraveStone"; + public const string GreasePencil = "GreasePencil"; + public const string GreaterThan = "GreaterThan"; + public const string GreaterThanOrEqual = "GreaterThanOrEqual"; + public const string Greenhouse = "Greenhouse"; + public const string Grid = "Grid"; + public const string GridLarge = "GridLarge"; + public const string GridOff = "GridOff"; + public const string Grill = "Grill"; + public const string GrillOutline = "GrillOutline"; + public const string Group = "Group"; + public const string GuitarAcoustic = "GuitarAcoustic"; + public const string GuitarElectric = "GuitarElectric"; + public const string GuitarPick = "GuitarPick"; + public const string GuitarPickOutline = "GuitarPickOutline"; + public const string GuyFawkesMask = "GuyFawkesMask"; + public const string Hail = "Hail"; + public const string HairDryer = "HairDryer"; + public const string HairDryerOutline = "HairDryerOutline"; + public const string Halloween = "Halloween"; + public const string Hamburger = "Hamburger"; + public const string HamburgerCheck = "HamburgerCheck"; + public const string HamburgerMinus = "HamburgerMinus"; + public const string HamburgerOff = "HamburgerOff"; + public const string HamburgerPlus = "HamburgerPlus"; + public const string HamburgerRemove = "HamburgerRemove"; + public const string Hammer = "Hammer"; + public const string HammerScrewdriver = "HammerScrewdriver"; + public const string HammerSickle = "HammerSickle"; + public const string HammerWrench = "HammerWrench"; + public const string HandBackLeft = "HandBackLeft"; + public const string HandBackLeftOff = "HandBackLeftOff"; + public const string HandBackLeftOffOutline = "HandBackLeftOffOutline"; + public const string HandBackLeftOutline = "HandBackLeftOutline"; + public const string HandBackRight = "HandBackRight"; + public const string HandBackRightOff = "HandBackRightOff"; + public const string HandBackRightOffOutline = "HandBackRightOffOutline"; + public const string HandBackRightOutline = "HandBackRightOutline"; + public const string Handball = "Handball"; + public const string HandCoin = "HandCoin"; + public const string HandCoinOutline = "HandCoinOutline"; + public const string Handcuffs = "Handcuffs"; + public const string HandExtended = "HandExtended"; + public const string HandExtendedOutline = "HandExtendedOutline"; + public const string HandFrontLeft = "HandFrontLeft"; + public const string HandFrontLeftOutline = "HandFrontLeftOutline"; + public const string HandFrontRight = "HandFrontRight"; + public const string HandFrontRightOutline = "HandFrontRightOutline"; + public const string HandHeart = "HandHeart"; + public const string HandHeartOutline = "HandHeartOutline"; + public const string HandOkay = "HandOkay"; + public const string HandPeace = "HandPeace"; + public const string HandPeaceVariant = "HandPeaceVariant"; + public const string HandPointingDown = "HandPointingDown"; + public const string HandPointingLeft = "HandPointingLeft"; + public const string HandPointingRight = "HandPointingRight"; + public const string HandPointingUp = "HandPointingUp"; + public const string HandSaw = "HandSaw"; + public const string Handshake = "Handshake"; + public const string HandshakeOutline = "HandshakeOutline"; + public const string HandsPray = "HandsPray"; + public const string HandWash = "HandWash"; + public const string HandWashOutline = "HandWashOutline"; + public const string HandWater = "HandWater"; + public const string HandWave = "HandWave"; + public const string HandWaveOutline = "HandWaveOutline"; + public const string Hanger = "Hanger"; + public const string Harddisk = "Harddisk"; + public const string HarddiskPlus = "HarddiskPlus"; + public const string HarddiskRemove = "HarddiskRemove"; + public const string HardHat = "HardHat"; + public const string HatFedora = "HatFedora"; + public const string HazardLights = "HazardLights"; + public const string Hdr = "Hdr"; + public const string HdrOff = "HdrOff"; + public const string Head = "Head"; + public const string HeadAlert = "HeadAlert"; + public const string HeadAlertOutline = "HeadAlertOutline"; + public const string HeadCheck = "HeadCheck"; + public const string HeadCheckOutline = "HeadCheckOutline"; + public const string HeadCog = "HeadCog"; + public const string HeadCogOutline = "HeadCogOutline"; + public const string HeadDotsHorizontal = "HeadDotsHorizontal"; + public const string HeadDotsHorizontalOutline = "HeadDotsHorizontalOutline"; + public const string HeadFlash = "HeadFlash"; + public const string HeadFlashOutline = "HeadFlashOutline"; + public const string HeadHeart = "HeadHeart"; + public const string HeadHeartOutline = "HeadHeartOutline"; + public const string HeadLightbulb = "HeadLightbulb"; + public const string HeadLightbulbOutline = "HeadLightbulbOutline"; + public const string HeadMinus = "HeadMinus"; + public const string HeadMinusOutline = "HeadMinusOutline"; + public const string HeadOutline = "HeadOutline"; + public const string Headphones = "Headphones"; + public const string HeadphonesBluetooth = "HeadphonesBluetooth"; + public const string HeadphonesBox = "HeadphonesBox"; + public const string HeadphonesOff = "HeadphonesOff"; + public const string HeadphonesSettings = "HeadphonesSettings"; + public const string HeadPlus = "HeadPlus"; + public const string HeadPlusOutline = "HeadPlusOutline"; + public const string HeadQuestion = "HeadQuestion"; + public const string HeadQuestionOutline = "HeadQuestionOutline"; + public const string HeadRemove = "HeadRemove"; + public const string HeadRemoveOutline = "HeadRemoveOutline"; + public const string Headset = "Headset"; + public const string HeadsetDock = "HeadsetDock"; + public const string HeadsetOff = "HeadsetOff"; + public const string HeadSnowflake = "HeadSnowflake"; + public const string HeadSnowflakeOutline = "HeadSnowflakeOutline"; + public const string HeadSync = "HeadSync"; + public const string HeadSyncOutline = "HeadSyncOutline"; + public const string Heart = "Heart"; + public const string HeartBox = "HeartBox"; + public const string HeartBoxOutline = "HeartBoxOutline"; + public const string HeartBroken = "HeartBroken"; + public const string HeartBrokenOutline = "HeartBrokenOutline"; + public const string HeartCircle = "HeartCircle"; + public const string HeartCircleOutline = "HeartCircleOutline"; + public const string HeartCog = "HeartCog"; + public const string HeartCogOutline = "HeartCogOutline"; + public const string HeartFlash = "HeartFlash"; + public const string HeartHalf = "HeartHalf"; + public const string HeartHalfFull = "HeartHalfFull"; + public const string HeartHalfOutline = "HeartHalfOutline"; + public const string HeartMinus = "HeartMinus"; + public const string HeartMinusOutline = "HeartMinusOutline"; + public const string HeartMultiple = "HeartMultiple"; + public const string HeartMultipleOutline = "HeartMultipleOutline"; + public const string HeartOff = "HeartOff"; + public const string HeartOffOutline = "HeartOffOutline"; + public const string HeartOutline = "HeartOutline"; + public const string HeartPlus = "HeartPlus"; + public const string HeartPlusOutline = "HeartPlusOutline"; + public const string HeartPulse = "HeartPulse"; + public const string HeartRemove = "HeartRemove"; + public const string HeartRemoveOutline = "HeartRemoveOutline"; + public const string HeartSettings = "HeartSettings"; + public const string HeartSettingsOutline = "HeartSettingsOutline"; + public const string Helicopter = "Helicopter"; + public const string Help = "Help"; + public const string HelpBox = "HelpBox"; + public const string HelpCircle = "HelpCircle"; + public const string HelpCircleOutline = "HelpCircleOutline"; + public const string HelpNetwork = "HelpNetwork"; + public const string HelpNetworkOutline = "HelpNetworkOutline"; + public const string HelpRhombus = "HelpRhombus"; + public const string HelpRhombusOutline = "HelpRhombusOutline"; + public const string Hexadecimal = "Hexadecimal"; + public const string Hexagon = "Hexagon"; + public const string HexagonMultiple = "HexagonMultiple"; + public const string HexagonMultipleOutline = "HexagonMultipleOutline"; + public const string HexagonOutline = "HexagonOutline"; + public const string HexagonSlice1 = "HexagonSlice1"; + public const string HexagonSlice2 = "HexagonSlice2"; + public const string HexagonSlice3 = "HexagonSlice3"; + public const string HexagonSlice4 = "HexagonSlice4"; + public const string HexagonSlice5 = "HexagonSlice5"; + public const string HexagonSlice6 = "HexagonSlice6"; + public const string Hexagram = "Hexagram"; + public const string HexagramOutline = "HexagramOutline"; + public const string HighDefinition = "HighDefinition"; + public const string HighDefinitionBox = "HighDefinitionBox"; + public const string Highway = "Highway"; + public const string Hiking = "Hiking"; + public const string History = "History"; + public const string HockeyPuck = "HockeyPuck"; + public const string HockeySticks = "HockeySticks"; + public const string Hololens = "Hololens"; + public const string Home = "Home"; + public const string HomeAccount = "HomeAccount"; + public const string HomeAlert = "HomeAlert"; + public const string HomeAlertOutline = "HomeAlertOutline"; + public const string HomeAnalytics = "HomeAnalytics"; + public const string HomeAssistant = "HomeAssistant"; + public const string HomeAutomation = "HomeAutomation"; + public const string HomeCircle = "HomeCircle"; + public const string HomeCircleOutline = "HomeCircleOutline"; + public const string HomeCity = "HomeCity"; + public const string HomeCityOutline = "HomeCityOutline"; + public const string HomeEdit = "HomeEdit"; + public const string HomeEditOutline = "HomeEditOutline"; + public const string HomeExportOutline = "HomeExportOutline"; + public const string HomeFlood = "HomeFlood"; + public const string HomeFloor0 = "HomeFloor0"; + public const string HomeFloor1 = "HomeFloor1"; + public const string HomeFloor2 = "HomeFloor2"; + public const string HomeFloor3 = "HomeFloor3"; + public const string HomeFloorA = "HomeFloorA"; + public const string HomeFloorB = "HomeFloorB"; + public const string HomeFloorG = "HomeFloorG"; + public const string HomeFloorL = "HomeFloorL"; + public const string HomeFloorNegative1 = "HomeFloorNegative1"; + public const string HomeGroup = "HomeGroup"; + public const string HomeHeart = "HomeHeart"; + public const string HomeImportOutline = "HomeImportOutline"; + public const string HomeLightbulb = "HomeLightbulb"; + public const string HomeLightbulbOutline = "HomeLightbulbOutline"; + public const string HomeLock = "HomeLock"; + public const string HomeLockOpen = "HomeLockOpen"; + public const string HomeMapMarker = "HomeMapMarker"; + public const string HomeMinus = "HomeMinus"; + public const string HomeMinusOutline = "HomeMinusOutline"; + public const string HomeModern = "HomeModern"; + public const string HomeOutline = "HomeOutline"; + public const string HomePlus = "HomePlus"; + public const string HomePlusOutline = "HomePlusOutline"; + public const string HomeRemove = "HomeRemove"; + public const string HomeRemoveOutline = "HomeRemoveOutline"; + public const string HomeRoof = "HomeRoof"; + public const string HomeSearch = "HomeSearch"; + public const string HomeSearchOutline = "HomeSearchOutline"; + public const string HomeSwitch = "HomeSwitch"; + public const string HomeSwitchOutline = "HomeSwitchOutline"; + public const string HomeThermometer = "HomeThermometer"; + public const string HomeThermometerOutline = "HomeThermometerOutline"; + public const string HomeVariant = "HomeVariant"; + public const string HomeVariantOutline = "HomeVariantOutline"; + public const string Hook = "Hook"; + public const string HookOff = "HookOff"; + public const string HoopHouse = "HoopHouse"; + public const string Hops = "Hops"; + public const string HorizontalRotateClockwise = "HorizontalRotateClockwise"; + public const string HorizontalRotateCounterclockwise = "HorizontalRotateCounterclockwise"; + public const string Horse = "Horse"; + public const string HorseHuman = "HorseHuman"; + public const string Horseshoe = "Horseshoe"; + public const string HorseVariant = "HorseVariant"; + public const string HorseVariantFast = "HorseVariantFast"; + public const string Hospital = "Hospital"; + public const string HospitalBox = "HospitalBox"; + public const string HospitalBoxOutline = "HospitalBoxOutline"; + public const string HospitalBuilding = "HospitalBuilding"; + public const string HospitalMarker = "HospitalMarker"; + public const string HotTub = "HotTub"; + public const string Hours24 = "Hours24"; + public const string Hubspot = "Hubspot"; + public const string Hulu = "Hulu"; + public const string Human = "Human"; + public const string HumanBabyChangingTable = "HumanBabyChangingTable"; + public const string HumanCane = "HumanCane"; + public const string HumanCapacityDecrease = "HumanCapacityDecrease"; + public const string HumanCapacityIncrease = "HumanCapacityIncrease"; + public const string HumanChild = "HumanChild"; + public const string HumanEdit = "HumanEdit"; + public const string HumanFemale = "HumanFemale"; + public const string HumanFemaleBoy = "HumanFemaleBoy"; + public const string HumanFemaleDance = "HumanFemaleDance"; + public const string HumanFemaleFemale = "HumanFemaleFemale"; + public const string HumanFemaleGirl = "HumanFemaleGirl"; + public const string HumanGreeting = "HumanGreeting"; + public const string HumanGreetingProximity = "HumanGreetingProximity"; + public const string HumanGreetingVariant = "HumanGreetingVariant"; + public const string HumanHandsdown = "HumanHandsdown"; + public const string HumanHandsup = "HumanHandsup"; + public const string HumanMale = "HumanMale"; + public const string HumanMaleBoard = "HumanMaleBoard"; + public const string HumanMaleBoardPoll = "HumanMaleBoardPoll"; + public const string HumanMaleBoy = "HumanMaleBoy"; + public const string HumanMaleChild = "HumanMaleChild"; + public const string HumanMaleFemale = "HumanMaleFemale"; + public const string HumanMaleFemaleChild = "HumanMaleFemaleChild"; + public const string HumanMaleGirl = "HumanMaleGirl"; + public const string HumanMaleHeight = "HumanMaleHeight"; + public const string HumanMaleHeightVariant = "HumanMaleHeightVariant"; + public const string HumanMaleMale = "HumanMaleMale"; + public const string HumanNonBinary = "HumanNonBinary"; + public const string HumanPregnant = "HumanPregnant"; + public const string HumanQueue = "HumanQueue"; + public const string HumanScooter = "HumanScooter"; + public const string HumanWheelchair = "HumanWheelchair"; + public const string HumbleBundle = "HumbleBundle"; + public const string Hvac = "Hvac"; + public const string HvacOff = "HvacOff"; + public const string HydraulicOilLevel = "HydraulicOilLevel"; + public const string HydraulicOilTemperature = "HydraulicOilTemperature"; + public const string HydrogenStation = "HydrogenStation"; + public const string HydroPower = "HydroPower"; + public const string IceCream = "IceCream"; + public const string IceCreamOff = "IceCreamOff"; + public const string IcePop = "IcePop"; + public const string IdCard = "IdCard"; + public const string Identifier = "Identifier"; + public const string IdeogramCjk = "IdeogramCjk"; + public const string IdeogramCjkVariant = "IdeogramCjkVariant"; + public const string Image = "Image"; + public const string ImageAlbum = "ImageAlbum"; + public const string ImageArea = "ImageArea"; + public const string ImageAreaClose = "ImageAreaClose"; + public const string ImageAutoAdjust = "ImageAutoAdjust"; + public const string ImageBroken = "ImageBroken"; + public const string ImageBrokenVariant = "ImageBrokenVariant"; + public const string ImageEdit = "ImageEdit"; + public const string ImageEditOutline = "ImageEditOutline"; + public const string ImageFilterBlackWhite = "ImageFilterBlackWhite"; + public const string ImageFilterCenterFocus = "ImageFilterCenterFocus"; + public const string ImageFilterCenterFocusStrong = "ImageFilterCenterFocusStrong"; + public const string ImageFilterCenterFocusStrongOutline = "ImageFilterCenterFocusStrongOutline"; + public const string ImageFilterCenterFocusWeak = "ImageFilterCenterFocusWeak"; + public const string ImageFilterDrama = "ImageFilterDrama"; + public const string ImageFilterFrames = "ImageFilterFrames"; + public const string ImageFilterHdr = "ImageFilterHdr"; + public const string ImageFilterNone = "ImageFilterNone"; + public const string ImageFilterTiltShift = "ImageFilterTiltShift"; + public const string ImageFilterVintage = "ImageFilterVintage"; + public const string ImageFrame = "ImageFrame"; + public const string ImageMarker = "ImageMarker"; + public const string ImageMarkerOutline = "ImageMarkerOutline"; + public const string ImageMinus = "ImageMinus"; + public const string ImageMove = "ImageMove"; + public const string ImageMultiple = "ImageMultiple"; + public const string ImageMultipleOutline = "ImageMultipleOutline"; + public const string ImageOff = "ImageOff"; + public const string ImageOffOutline = "ImageOffOutline"; + public const string ImageOutline = "ImageOutline"; + public const string ImagePlus = "ImagePlus"; + public const string ImageRemove = "ImageRemove"; + public const string ImageSearch = "ImageSearch"; + public const string ImageSearchOutline = "ImageSearchOutline"; + public const string ImageSizeSelectActual = "ImageSizeSelectActual"; + public const string ImageSizeSelectLarge = "ImageSizeSelectLarge"; + public const string ImageSizeSelectSmall = "ImageSizeSelectSmall"; + public const string ImageText = "ImageText"; + public const string Import = "Import"; + public const string Inbox = "Inbox"; + public const string InboxArrowDown = "InboxArrowDown"; + public const string InboxArrowDownOutline = "InboxArrowDownOutline"; + public const string InboxArrowUp = "InboxArrowUp"; + public const string InboxArrowUpOutline = "InboxArrowUpOutline"; + public const string InboxFull = "InboxFull"; + public const string InboxFullOutline = "InboxFullOutline"; + public const string InboxMultiple = "InboxMultiple"; + public const string InboxMultipleOutline = "InboxMultipleOutline"; + public const string InboxOutline = "InboxOutline"; + public const string InboxRemove = "InboxRemove"; + public const string InboxRemoveOutline = "InboxRemoveOutline"; + public const string Incognito = "Incognito"; + public const string IncognitoCircle = "IncognitoCircle"; + public const string IncognitoCircleOff = "IncognitoCircleOff"; + public const string IncognitoOff = "IncognitoOff"; + public const string Induction = "Induction"; + public const string Infinity = "Infinity"; + public const string Information = "Information"; + public const string InformationOff = "InformationOff"; + public const string InformationOffOutline = "InformationOffOutline"; + public const string InformationOutline = "InformationOutline"; + public const string InformationVariant = "InformationVariant"; + public const string Instagram = "Instagram"; + public const string InstrumentTriangle = "InstrumentTriangle"; + public const string InvertColors = "InvertColors"; + public const string InvertColorsOff = "InvertColorsOff"; + public const string Iobroker = "Iobroker"; + public const string Ip = "Ip"; + public const string IpNetwork = "IpNetwork"; + public const string IpNetworkOutline = "IpNetworkOutline"; + public const string Ipod = "Ipod"; + public const string Iron = "Iron"; + public const string IronBoard = "IronBoard"; + public const string IronOutline = "IronOutline"; + public const string Island = "Island"; + public const string IvBag = "IvBag"; + public const string Jabber = "Jabber"; + public const string Jeepney = "Jeepney"; + public const string Jellyfish = "Jellyfish"; + public const string JellyfishOutline = "JellyfishOutline"; + public const string Jira = "Jira"; + public const string Jquery = "Jquery"; + public const string Jsfiddle = "Jsfiddle"; + public const string JumpRope = "JumpRope"; + public const string Kabaddi = "Kabaddi"; + public const string Kangaroo = "Kangaroo"; + public const string Karate = "Karate"; + public const string Kayaking = "Kayaking"; + public const string Keg = "Keg"; + public const string Kettle = "Kettle"; + public const string KettleAlert = "KettleAlert"; + public const string KettleAlertOutline = "KettleAlertOutline"; + public const string Kettlebell = "Kettlebell"; + public const string KettleOff = "KettleOff"; + public const string KettleOffOutline = "KettleOffOutline"; + public const string KettleOutline = "KettleOutline"; + public const string KettlePourOver = "KettlePourOver"; + public const string KettleSteam = "KettleSteam"; + public const string KettleSteamOutline = "KettleSteamOutline"; + public const string Key = "Key"; + public const string KeyArrowRight = "KeyArrowRight"; + public const string Keyboard = "Keyboard"; + public const string KeyboardBackspace = "KeyboardBackspace"; + public const string KeyboardCaps = "KeyboardCaps"; + public const string KeyboardClose = "KeyboardClose"; + public const string KeyboardEsc = "KeyboardEsc"; + public const string KeyboardF1 = "KeyboardF1"; + public const string KeyboardF10 = "KeyboardF10"; + public const string KeyboardF11 = "KeyboardF11"; + public const string KeyboardF12 = "KeyboardF12"; + public const string KeyboardF2 = "KeyboardF2"; + public const string KeyboardF3 = "KeyboardF3"; + public const string KeyboardF4 = "KeyboardF4"; + public const string KeyboardF5 = "KeyboardF5"; + public const string KeyboardF6 = "KeyboardF6"; + public const string KeyboardF7 = "KeyboardF7"; + public const string KeyboardF8 = "KeyboardF8"; + public const string KeyboardF9 = "KeyboardF9"; + public const string KeyboardOff = "KeyboardOff"; + public const string KeyboardOffOutline = "KeyboardOffOutline"; + public const string KeyboardOutline = "KeyboardOutline"; + public const string KeyboardReturn = "KeyboardReturn"; + public const string KeyboardSettings = "KeyboardSettings"; + public const string KeyboardSettingsOutline = "KeyboardSettingsOutline"; + public const string KeyboardSpace = "KeyboardSpace"; + public const string KeyboardTab = "KeyboardTab"; + public const string KeyboardTabReverse = "KeyboardTabReverse"; + public const string KeyboardVariant = "KeyboardVariant"; + public const string KeyChain = "KeyChain"; + public const string KeyChainVariant = "KeyChainVariant"; + public const string KeyChange = "KeyChange"; + public const string KeyLink = "KeyLink"; + public const string KeyMinus = "KeyMinus"; + public const string KeyOutline = "KeyOutline"; + public const string KeyPlus = "KeyPlus"; + public const string KeyRemove = "KeyRemove"; + public const string KeyStar = "KeyStar"; + public const string KeyVariant = "KeyVariant"; + public const string KeyWireless = "KeyWireless"; + public const string Khanda = "Khanda"; + public const string Kickstarter = "Kickstarter"; + public const string Kitesurfing = "Kitesurfing"; + public const string Klingon = "Klingon"; + public const string Knife = "Knife"; + public const string KnifeMilitary = "KnifeMilitary"; + public const string Koala = "Koala"; + public const string Kodi = "Kodi"; + public const string Kubernetes = "Kubernetes"; + public const string Label = "Label"; + public const string LabelMultiple = "LabelMultiple"; + public const string LabelMultipleOutline = "LabelMultipleOutline"; + public const string LabelOff = "LabelOff"; + public const string LabelOffOutline = "LabelOffOutline"; + public const string LabelOutline = "LabelOutline"; + public const string LabelPercent = "LabelPercent"; + public const string LabelPercentOutline = "LabelPercentOutline"; + public const string LabelVariant = "LabelVariant"; + public const string LabelVariantOutline = "LabelVariantOutline"; + public const string Ladder = "Ladder"; + public const string Ladybug = "Ladybug"; + public const string Lambda = "Lambda"; + public const string Lamp = "Lamp"; + public const string LampOutline = "LampOutline"; + public const string Lamps = "Lamps"; + public const string LampsOutline = "LampsOutline"; + public const string Lan = "Lan"; + public const string LanCheck = "LanCheck"; + public const string LanConnect = "LanConnect"; + public const string LanDisconnect = "LanDisconnect"; + public const string LanguageC = "LanguageC"; + public const string LanguageCpp = "LanguageCpp"; + public const string LanguageCsharp = "LanguageCsharp"; + public const string LanguageCss3 = "LanguageCss3"; + public const string LanguageFortran = "LanguageFortran"; + public const string LanguageGo = "LanguageGo"; + public const string LanguageHaskell = "LanguageHaskell"; + public const string LanguageHtml5 = "LanguageHtml5"; + public const string LanguageJava = "LanguageJava"; + public const string LanguageJavascript = "LanguageJavascript"; + public const string LanguageKotlin = "LanguageKotlin"; + public const string LanguageLua = "LanguageLua"; + public const string LanguageMarkdown = "LanguageMarkdown"; + public const string LanguageMarkdownOutline = "LanguageMarkdownOutline"; + public const string LanguagePhp = "LanguagePhp"; + public const string LanguagePython = "LanguagePython"; + public const string LanguageR = "LanguageR"; + public const string LanguageRuby = "LanguageRuby"; + public const string LanguageRubyOnRails = "LanguageRubyOnRails"; + public const string LanguageRust = "LanguageRust"; + public const string LanguageSwift = "LanguageSwift"; + public const string LanguageTypescript = "LanguageTypescript"; + public const string LanguageXaml = "LanguageXaml"; + public const string LanPending = "LanPending"; + public const string Laptop = "Laptop"; + public const string LaptopOff = "LaptopOff"; + public const string Laravel = "Laravel"; + public const string LaserPointer = "LaserPointer"; + public const string Lasso = "Lasso"; + public const string Lastpass = "Lastpass"; + public const string Latitude = "Latitude"; + public const string Launch = "Launch"; + public const string LavaLamp = "LavaLamp"; + public const string Layers = "Layers"; + public const string LayersEdit = "LayersEdit"; + public const string LayersMinus = "LayersMinus"; + public const string LayersOff = "LayersOff"; + public const string LayersOffOutline = "LayersOffOutline"; + public const string LayersOutline = "LayersOutline"; + public const string LayersPlus = "LayersPlus"; + public const string LayersRemove = "LayersRemove"; + public const string LayersSearch = "LayersSearch"; + public const string LayersSearchOutline = "LayersSearchOutline"; + public const string LayersTriple = "LayersTriple"; + public const string LayersTripleOutline = "LayersTripleOutline"; + public const string LeadPencil = "LeadPencil"; + public const string Leaf = "Leaf"; + public const string LeafMaple = "LeafMaple"; + public const string LeafMapleOff = "LeafMapleOff"; + public const string LeafOff = "LeafOff"; + public const string Leak = "Leak"; + public const string LeakOff = "LeakOff"; + public const string LedOff = "LedOff"; + public const string LedOn = "LedOn"; + public const string LedOutline = "LedOutline"; + public const string LedStrip = "LedStrip"; + public const string LedStripVariant = "LedStripVariant"; + public const string LedVariantOff = "LedVariantOff"; + public const string LedVariantOn = "LedVariantOn"; + public const string LedVariantOutline = "LedVariantOutline"; + public const string Leek = "Leek"; + public const string LessThan = "LessThan"; + public const string LessThanOrEqual = "LessThanOrEqual"; + public const string Library = "Library"; + public const string LibraryShelves = "LibraryShelves"; + public const string License = "License"; + public const string Lifebuoy = "Lifebuoy"; + public const string Lightbulb = "Lightbulb"; + public const string LightbulbAuto = "LightbulbAuto"; + public const string LightbulbAutoOutline = "LightbulbAutoOutline"; + public const string LightbulbCfl = "LightbulbCfl"; + public const string LightbulbCflOff = "LightbulbCflOff"; + public const string LightbulbCflSpiral = "LightbulbCflSpiral"; + public const string LightbulbCflSpiralOff = "LightbulbCflSpiralOff"; + public const string LightbulbFluorescentTube = "LightbulbFluorescentTube"; + public const string LightbulbFluorescentTubeOutline = "LightbulbFluorescentTubeOutline"; + public const string LightbulbGroup = "LightbulbGroup"; + public const string LightbulbGroupOff = "LightbulbGroupOff"; + public const string LightbulbGroupOffOutline = "LightbulbGroupOffOutline"; + public const string LightbulbGroupOutline = "LightbulbGroupOutline"; + public const string LightbulbMultiple = "LightbulbMultiple"; + public const string LightbulbMultipleOff = "LightbulbMultipleOff"; + public const string LightbulbMultipleOffOutline = "LightbulbMultipleOffOutline"; + public const string LightbulbMultipleOutline = "LightbulbMultipleOutline"; + public const string LightbulbOff = "LightbulbOff"; + public const string LightbulbOffOutline = "LightbulbOffOutline"; + public const string LightbulbOn = "LightbulbOn"; + public const string LightbulbOnOutline = "LightbulbOnOutline"; + public const string LightbulbOutline = "LightbulbOutline"; + public const string LightbulbSpot = "LightbulbSpot"; + public const string LightbulbSpotOff = "LightbulbSpotOff"; + public const string LightbulbVariant = "LightbulbVariant"; + public const string LightbulbVariantOutline = "LightbulbVariantOutline"; + public const string Lighthouse = "Lighthouse"; + public const string LighthouseOn = "LighthouseOn"; + public const string LightningBolt = "LightningBolt"; + public const string LightningBoltCircle = "LightningBoltCircle"; + public const string LightningBoltOutline = "LightningBoltOutline"; + public const string LightRecessed = "LightRecessed"; + public const string LightSwitch = "LightSwitch"; + public const string LineScan = "LineScan"; + public const string Lingerie = "Lingerie"; + public const string Link = "Link"; + public const string LinkBox = "LinkBox"; + public const string LinkBoxOutline = "LinkBoxOutline"; + public const string LinkBoxVariant = "LinkBoxVariant"; + public const string LinkBoxVariantOutline = "LinkBoxVariantOutline"; + public const string Linkedin = "Linkedin"; + public const string LinkLock = "LinkLock"; + public const string LinkOff = "LinkOff"; + public const string LinkPlus = "LinkPlus"; + public const string LinkVariant = "LinkVariant"; + public const string LinkVariantMinus = "LinkVariantMinus"; + public const string LinkVariantOff = "LinkVariantOff"; + public const string LinkVariantPlus = "LinkVariantPlus"; + public const string LinkVariantRemove = "LinkVariantRemove"; + public const string Linux = "Linux"; + public const string LinuxMint = "LinuxMint"; + public const string Lipstick = "Lipstick"; + public const string LiquidSpot = "LiquidSpot"; + public const string ListStatus = "ListStatus"; + public const string Litecoin = "Litecoin"; + public const string Loading = "Loading"; + public const string LocationEnter = "LocationEnter"; + public const string LocationExit = "LocationExit"; + public const string Lock = "Lock"; + public const string LockAlert = "LockAlert"; + public const string LockAlertOutline = "LockAlertOutline"; + public const string LockCheck = "LockCheck"; + public const string LockCheckOutline = "LockCheckOutline"; + public const string LockClock = "LockClock"; + public const string Locker = "Locker"; + public const string LockerMultiple = "LockerMultiple"; + public const string LockMinus = "LockMinus"; + public const string LockMinusOutline = "LockMinusOutline"; + public const string LockOff = "LockOff"; + public const string LockOffOutline = "LockOffOutline"; + public const string LockOpen = "LockOpen"; + public const string LockOpenAlert = "LockOpenAlert"; + public const string LockOpenAlertOutline = "LockOpenAlertOutline"; + public const string LockOpenCheck = "LockOpenCheck"; + public const string LockOpenCheckOutline = "LockOpenCheckOutline"; + public const string LockOpenMinus = "LockOpenMinus"; + public const string LockOpenMinusOutline = "LockOpenMinusOutline"; + public const string LockOpenOutline = "LockOpenOutline"; + public const string LockOpenPlus = "LockOpenPlus"; + public const string LockOpenPlusOutline = "LockOpenPlusOutline"; + public const string LockOpenRemove = "LockOpenRemove"; + public const string LockOpenRemoveOutline = "LockOpenRemoveOutline"; + public const string LockOpenVariant = "LockOpenVariant"; + public const string LockOpenVariantOutline = "LockOpenVariantOutline"; + public const string LockOutline = "LockOutline"; + public const string LockPattern = "LockPattern"; + public const string LockPlus = "LockPlus"; + public const string LockPlusOutline = "LockPlusOutline"; + public const string LockQuestion = "LockQuestion"; + public const string LockRemove = "LockRemove"; + public const string LockRemoveOutline = "LockRemoveOutline"; + public const string LockReset = "LockReset"; + public const string LockSmart = "LockSmart"; + public const string Login = "Login"; + public const string LoginVariant = "LoginVariant"; + public const string Logout = "Logout"; + public const string LogoutVariant = "LogoutVariant"; + public const string Longitude = "Longitude"; + public const string Looks = "Looks"; + public const string Lotion = "Lotion"; + public const string LotionOutline = "LotionOutline"; + public const string LotionPlus = "LotionPlus"; + public const string LotionPlusOutline = "LotionPlusOutline"; + public const string Loupe = "Loupe"; + public const string Lumx = "Lumx"; + public const string Lungs = "Lungs"; + public const string Mace = "Mace"; + public const string MagazinePistol = "MagazinePistol"; + public const string MagazineRifle = "MagazineRifle"; + public const string MagicStaff = "MagicStaff"; + public const string Magnet = "Magnet"; + public const string MagnetOn = "MagnetOn"; + public const string Magnify = "Magnify"; + public const string MagnifyClose = "MagnifyClose"; + public const string MagnifyExpand = "MagnifyExpand"; + public const string MagnifyMinus = "MagnifyMinus"; + public const string MagnifyMinusCursor = "MagnifyMinusCursor"; + public const string MagnifyMinusOutline = "MagnifyMinusOutline"; + public const string MagnifyPlus = "MagnifyPlus"; + public const string MagnifyPlusCursor = "MagnifyPlusCursor"; + public const string MagnifyPlusOutline = "MagnifyPlusOutline"; + public const string MagnifyRemoveCursor = "MagnifyRemoveCursor"; + public const string MagnifyRemoveOutline = "MagnifyRemoveOutline"; + public const string MagnifyScan = "MagnifyScan"; + public const string Mail = "Mail"; + public const string Mailbox = "Mailbox"; + public const string MailboxOpen = "MailboxOpen"; + public const string MailboxOpenOutline = "MailboxOpenOutline"; + public const string MailboxOpenUp = "MailboxOpenUp"; + public const string MailboxOpenUpOutline = "MailboxOpenUpOutline"; + public const string MailboxOutline = "MailboxOutline"; + public const string MailboxUp = "MailboxUp"; + public const string MailboxUpOutline = "MailboxUpOutline"; + public const string Manjaro = "Manjaro"; + public const string Map = "Map"; + public const string Mapbox = "Mapbox"; + public const string MapCheck = "MapCheck"; + public const string MapCheckOutline = "MapCheckOutline"; + public const string MapClock = "MapClock"; + public const string MapClockOutline = "MapClockOutline"; + public const string MapLegend = "MapLegend"; + public const string MapMarker = "MapMarker"; + public const string MapMarkerAccount = "MapMarkerAccount"; + public const string MapMarkerAccountOutline = "MapMarkerAccountOutline"; + public const string MapMarkerAlert = "MapMarkerAlert"; + public const string MapMarkerAlertOutline = "MapMarkerAlertOutline"; + public const string MapMarkerCheck = "MapMarkerCheck"; + public const string MapMarkerCheckOutline = "MapMarkerCheckOutline"; + public const string MapMarkerCircle = "MapMarkerCircle"; + public const string MapMarkerDistance = "MapMarkerDistance"; + public const string MapMarkerDown = "MapMarkerDown"; + public const string MapMarkerLeft = "MapMarkerLeft"; + public const string MapMarkerLeftOutline = "MapMarkerLeftOutline"; + public const string MapMarkerMinus = "MapMarkerMinus"; + public const string MapMarkerMinusOutline = "MapMarkerMinusOutline"; + public const string MapMarkerMultiple = "MapMarkerMultiple"; + public const string MapMarkerMultipleOutline = "MapMarkerMultipleOutline"; + public const string MapMarkerOff = "MapMarkerOff"; + public const string MapMarkerOffOutline = "MapMarkerOffOutline"; + public const string MapMarkerOutline = "MapMarkerOutline"; + public const string MapMarkerPath = "MapMarkerPath"; + public const string MapMarkerPlus = "MapMarkerPlus"; + public const string MapMarkerPlusOutline = "MapMarkerPlusOutline"; + public const string MapMarkerQuestion = "MapMarkerQuestion"; + public const string MapMarkerQuestionOutline = "MapMarkerQuestionOutline"; + public const string MapMarkerRadius = "MapMarkerRadius"; + public const string MapMarkerRadiusOutline = "MapMarkerRadiusOutline"; + public const string MapMarkerRemove = "MapMarkerRemove"; + public const string MapMarkerRemoveOutline = "MapMarkerRemoveOutline"; + public const string MapMarkerRemoveVariant = "MapMarkerRemoveVariant"; + public const string MapMarkerRight = "MapMarkerRight"; + public const string MapMarkerRightOutline = "MapMarkerRightOutline"; + public const string MapMarkerStar = "MapMarkerStar"; + public const string MapMarkerStarOutline = "MapMarkerStarOutline"; + public const string MapMarkerUp = "MapMarkerUp"; + public const string MapMinus = "MapMinus"; + public const string MapOutline = "MapOutline"; + public const string MapPlus = "MapPlus"; + public const string MapSearch = "MapSearch"; + public const string MapSearchOutline = "MapSearchOutline"; + public const string Margin = "Margin"; + public const string Marker = "Marker"; + public const string MarkerCancel = "MarkerCancel"; + public const string MarkerCheck = "MarkerCheck"; + public const string Mastodon = "Mastodon"; + public const string MaterialDesign = "MaterialDesign"; + public const string MaterialUi = "MaterialUi"; + public const string MathCompass = "MathCompass"; + public const string MathCos = "MathCos"; + public const string MathIntegral = "MathIntegral"; + public const string MathIntegralBox = "MathIntegralBox"; + public const string MathLog = "MathLog"; + public const string MathNorm = "MathNorm"; + public const string MathNormBox = "MathNormBox"; + public const string MathSin = "MathSin"; + public const string MathTan = "MathTan"; + public const string Matrix = "Matrix"; + public const string Medal = "Medal"; + public const string MedalOutline = "MedalOutline"; + public const string MedicalBag = "MedicalBag"; + public const string Meditation = "Meditation"; + public const string Memory = "Memory"; + public const string Menorah = "Menorah"; + public const string MenorahFire = "MenorahFire"; + public const string Menu = "Menu"; + public const string MenuDown = "MenuDown"; + public const string MenuDownOutline = "MenuDownOutline"; + public const string MenuLeft = "MenuLeft"; + public const string MenuLeftOutline = "MenuLeftOutline"; + public const string MenuOpen = "MenuOpen"; + public const string MenuRight = "MenuRight"; + public const string MenuRightOutline = "MenuRightOutline"; + public const string MenuSwap = "MenuSwap"; + public const string MenuSwapOutline = "MenuSwapOutline"; + public const string MenuUp = "MenuUp"; + public const string MenuUpOutline = "MenuUpOutline"; + public const string Merge = "Merge"; + public const string Message = "Message"; + public const string MessageAlert = "MessageAlert"; + public const string MessageAlertOutline = "MessageAlertOutline"; + public const string MessageArrowLeft = "MessageArrowLeft"; + public const string MessageArrowLeftOutline = "MessageArrowLeftOutline"; + public const string MessageArrowRight = "MessageArrowRight"; + public const string MessageArrowRightOutline = "MessageArrowRightOutline"; + public const string MessageBookmark = "MessageBookmark"; + public const string MessageBookmarkOutline = "MessageBookmarkOutline"; + public const string MessageBulleted = "MessageBulleted"; + public const string MessageBulletedOff = "MessageBulletedOff"; + public const string MessageCog = "MessageCog"; + public const string MessageCogOutline = "MessageCogOutline"; + public const string MessageDraw = "MessageDraw"; + public const string MessageFlash = "MessageFlash"; + public const string MessageFlashOutline = "MessageFlashOutline"; + public const string MessageImage = "MessageImage"; + public const string MessageImageOutline = "MessageImageOutline"; + public const string MessageLock = "MessageLock"; + public const string MessageLockOutline = "MessageLockOutline"; + public const string MessageMinus = "MessageMinus"; + public const string MessageMinusOutline = "MessageMinusOutline"; + public const string MessageOff = "MessageOff"; + public const string MessageOffOutline = "MessageOffOutline"; + public const string MessageOutline = "MessageOutline"; + public const string MessagePlus = "MessagePlus"; + public const string MessagePlusOutline = "MessagePlusOutline"; + public const string MessageProcessing = "MessageProcessing"; + public const string MessageProcessingOutline = "MessageProcessingOutline"; + public const string MessageQuestion = "MessageQuestion"; + public const string MessageQuestionOutline = "MessageQuestionOutline"; + public const string MessageReply = "MessageReply"; + public const string MessageReplyOutline = "MessageReplyOutline"; + public const string MessageReplyText = "MessageReplyText"; + public const string MessageReplyTextOutline = "MessageReplyTextOutline"; + public const string MessageSettings = "MessageSettings"; + public const string MessageSettingsOutline = "MessageSettingsOutline"; + public const string MessageStar = "MessageStar"; + public const string MessageStarOutline = "MessageStarOutline"; + public const string MessageText = "MessageText"; + public const string MessageTextClock = "MessageTextClock"; + public const string MessageTextClockOutline = "MessageTextClockOutline"; + public const string MessageTextLock = "MessageTextLock"; + public const string MessageTextLockOutline = "MessageTextLockOutline"; + public const string MessageTextOutline = "MessageTextOutline"; + public const string MessageVideo = "MessageVideo"; + public const string Meteor = "Meteor"; + public const string Metronome = "Metronome"; + public const string MetronomeTick = "MetronomeTick"; + public const string Microphone = "Microphone"; + public const string MicrophoneMinus = "MicrophoneMinus"; + public const string MicrophoneOff = "MicrophoneOff"; + public const string MicrophoneOutline = "MicrophoneOutline"; + public const string MicrophonePlus = "MicrophonePlus"; + public const string MicrophoneSettings = "MicrophoneSettings"; + public const string MicrophoneVariant = "MicrophoneVariant"; + public const string MicrophoneVariantOff = "MicrophoneVariantOff"; + public const string Microscope = "Microscope"; + public const string MicroSd = "MicroSd"; + public const string Microsoft = "Microsoft"; + public const string MicrosoftAccess = "MicrosoftAccess"; + public const string MicrosoftAzure = "MicrosoftAzure"; + public const string MicrosoftAzureDevops = "MicrosoftAzureDevops"; + public const string MicrosoftBing = "MicrosoftBing"; + public const string MicrosoftDynamics365 = "MicrosoftDynamics365"; + public const string MicrosoftEdge = "MicrosoftEdge"; + public const string MicrosoftExcel = "MicrosoftExcel"; + public const string MicrosoftInternetExplorer = "MicrosoftInternetExplorer"; + public const string MicrosoftOffice = "MicrosoftOffice"; + public const string MicrosoftOnedrive = "MicrosoftOnedrive"; + public const string MicrosoftOnenote = "MicrosoftOnenote"; + public const string MicrosoftOutlook = "MicrosoftOutlook"; + public const string MicrosoftPowerpoint = "MicrosoftPowerpoint"; + public const string MicrosoftSharepoint = "MicrosoftSharepoint"; + public const string MicrosoftTeams = "MicrosoftTeams"; + public const string MicrosoftVisualStudio = "MicrosoftVisualStudio"; + public const string MicrosoftVisualStudioCode = "MicrosoftVisualStudioCode"; + public const string MicrosoftWindows = "MicrosoftWindows"; + public const string MicrosoftWindowsClassic = "MicrosoftWindowsClassic"; + public const string MicrosoftWord = "MicrosoftWord"; + public const string MicrosoftXbox = "MicrosoftXbox"; + public const string MicrosoftXboxController = "MicrosoftXboxController"; + public const string MicrosoftXboxControllerBatteryAlert = "MicrosoftXboxControllerBatteryAlert"; + public const string MicrosoftXboxControllerBatteryCharging = "MicrosoftXboxControllerBatteryCharging"; + public const string MicrosoftXboxControllerBatteryEmpty = "MicrosoftXboxControllerBatteryEmpty"; + public const string MicrosoftXboxControllerBatteryFull = "MicrosoftXboxControllerBatteryFull"; + public const string MicrosoftXboxControllerBatteryLow = "MicrosoftXboxControllerBatteryLow"; + public const string MicrosoftXboxControllerBatteryMedium = "MicrosoftXboxControllerBatteryMedium"; + public const string MicrosoftXboxControllerBatteryUnknown = "MicrosoftXboxControllerBatteryUnknown"; + public const string MicrosoftXboxControllerMenu = "MicrosoftXboxControllerMenu"; + public const string MicrosoftXboxControllerOff = "MicrosoftXboxControllerOff"; + public const string MicrosoftXboxControllerView = "MicrosoftXboxControllerView"; + public const string Microwave = "Microwave"; + public const string MicrowaveOff = "MicrowaveOff"; + public const string Middleware = "Middleware"; + public const string MiddlewareOutline = "MiddlewareOutline"; + public const string Midi = "Midi"; + public const string MidiPort = "MidiPort"; + public const string Mine = "Mine"; + public const string Minecraft = "Minecraft"; + public const string Minidisc = "Minidisc"; + public const string MiniSd = "MiniSd"; + public const string Minus = "Minus"; + public const string MinusBox = "MinusBox"; + public const string MinusBoxMultiple = "MinusBoxMultiple"; + public const string MinusBoxMultipleOutline = "MinusBoxMultipleOutline"; + public const string MinusBoxOutline = "MinusBoxOutline"; + public const string MinusCircle = "MinusCircle"; + public const string MinusCircleMultiple = "MinusCircleMultiple"; + public const string MinusCircleMultipleOutline = "MinusCircleMultipleOutline"; + public const string MinusCircleOff = "MinusCircleOff"; + public const string MinusCircleOffOutline = "MinusCircleOffOutline"; + public const string MinusCircleOutline = "MinusCircleOutline"; + public const string MinusNetwork = "MinusNetwork"; + public const string MinusNetworkOutline = "MinusNetworkOutline"; + public const string MinusThick = "MinusThick"; + public const string Mirror = "Mirror"; + public const string MirrorRectangle = "MirrorRectangle"; + public const string MirrorVariant = "MirrorVariant"; + public const string MixedMartialArts = "MixedMartialArts"; + public const string MixedReality = "MixedReality"; + public const string Molecule = "Molecule"; + public const string MoleculeCo = "MoleculeCo"; + public const string MoleculeCo2 = "MoleculeCo2"; + public const string Monitor = "Monitor"; + public const string MonitorCellphone = "MonitorCellphone"; + public const string MonitorCellphoneStar = "MonitorCellphoneStar"; + public const string MonitorDashboard = "MonitorDashboard"; + public const string MonitorEdit = "MonitorEdit"; + public const string MonitorEye = "MonitorEye"; + public const string MonitorLock = "MonitorLock"; + public const string MonitorMultiple = "MonitorMultiple"; + public const string MonitorOff = "MonitorOff"; + public const string MonitorScreenshot = "MonitorScreenshot"; + public const string MonitorShare = "MonitorShare"; + public const string MonitorShimmer = "MonitorShimmer"; + public const string MonitorSmall = "MonitorSmall"; + public const string MonitorSpeaker = "MonitorSpeaker"; + public const string MonitorSpeakerOff = "MonitorSpeakerOff"; + public const string MonitorStar = "MonitorStar"; + public const string MoonFirstQuarter = "MoonFirstQuarter"; + public const string MoonFull = "MoonFull"; + public const string MoonLastQuarter = "MoonLastQuarter"; + public const string MoonNew = "MoonNew"; + public const string MoonWaningCrescent = "MoonWaningCrescent"; + public const string MoonWaningGibbous = "MoonWaningGibbous"; + public const string MoonWaxingCrescent = "MoonWaxingCrescent"; + public const string MoonWaxingGibbous = "MoonWaxingGibbous"; + public const string Moped = "Moped"; + public const string MopedElectric = "MopedElectric"; + public const string MopedElectricOutline = "MopedElectricOutline"; + public const string MopedOutline = "MopedOutline"; + public const string More = "More"; + public const string MortarPestle = "MortarPestle"; + public const string MortarPestlePlus = "MortarPestlePlus"; + public const string Mosque = "Mosque"; + public const string MotherHeart = "MotherHeart"; + public const string MotherNurse = "MotherNurse"; + public const string Motion = "Motion"; + public const string MotionOutline = "MotionOutline"; + public const string MotionPause = "MotionPause"; + public const string MotionPauseOutline = "MotionPauseOutline"; + public const string MotionPlay = "MotionPlay"; + public const string MotionPlayOutline = "MotionPlayOutline"; + public const string MotionSensor = "MotionSensor"; + public const string MotionSensorOff = "MotionSensorOff"; + public const string Motorbike = "Motorbike"; + public const string MotorbikeElectric = "MotorbikeElectric"; + public const string Mouse = "Mouse"; + public const string MouseBluetooth = "MouseBluetooth"; + public const string MouseMoveDown = "MouseMoveDown"; + public const string MouseMoveUp = "MouseMoveUp"; + public const string MouseMoveVertical = "MouseMoveVertical"; + public const string MouseOff = "MouseOff"; + public const string MouseVariant = "MouseVariant"; + public const string MouseVariantOff = "MouseVariantOff"; + public const string MoveResize = "MoveResize"; + public const string MoveResizeVariant = "MoveResizeVariant"; + public const string Movie = "Movie"; + public const string MovieCheck = "MovieCheck"; + public const string MovieCheckOutline = "MovieCheckOutline"; + public const string MovieCog = "MovieCog"; + public const string MovieCogOutline = "MovieCogOutline"; + public const string MovieEdit = "MovieEdit"; + public const string MovieEditOutline = "MovieEditOutline"; + public const string MovieFilter = "MovieFilter"; + public const string MovieFilterOutline = "MovieFilterOutline"; + public const string MovieMinus = "MovieMinus"; + public const string MovieMinusOutline = "MovieMinusOutline"; + public const string MovieOff = "MovieOff"; + public const string MovieOffOutline = "MovieOffOutline"; + public const string MovieOpen = "MovieOpen"; + public const string MovieOpenCheck = "MovieOpenCheck"; + public const string MovieOpenCheckOutline = "MovieOpenCheckOutline"; + public const string MovieOpenCog = "MovieOpenCog"; + public const string MovieOpenCogOutline = "MovieOpenCogOutline"; + public const string MovieOpenEdit = "MovieOpenEdit"; + public const string MovieOpenEditOutline = "MovieOpenEditOutline"; + public const string MovieOpenMinus = "MovieOpenMinus"; + public const string MovieOpenMinusOutline = "MovieOpenMinusOutline"; + public const string MovieOpenOff = "MovieOpenOff"; + public const string MovieOpenOffOutline = "MovieOpenOffOutline"; + public const string MovieOpenOutline = "MovieOpenOutline"; + public const string MovieOpenPlay = "MovieOpenPlay"; + public const string MovieOpenPlayOutline = "MovieOpenPlayOutline"; + public const string MovieOpenPlus = "MovieOpenPlus"; + public const string MovieOpenPlusOutline = "MovieOpenPlusOutline"; + public const string MovieOpenRemove = "MovieOpenRemove"; + public const string MovieOpenRemoveOutline = "MovieOpenRemoveOutline"; + public const string MovieOpenSettings = "MovieOpenSettings"; + public const string MovieOpenSettingsOutline = "MovieOpenSettingsOutline"; + public const string MovieOpenStar = "MovieOpenStar"; + public const string MovieOpenStarOutline = "MovieOpenStarOutline"; + public const string MovieOutline = "MovieOutline"; + public const string MoviePlay = "MoviePlay"; + public const string MoviePlayOutline = "MoviePlayOutline"; + public const string MoviePlus = "MoviePlus"; + public const string MoviePlusOutline = "MoviePlusOutline"; + public const string MovieRemove = "MovieRemove"; + public const string MovieRemoveOutline = "MovieRemoveOutline"; + public const string MovieRoll = "MovieRoll"; + public const string MovieSearch = "MovieSearch"; + public const string MovieSearchOutline = "MovieSearchOutline"; + public const string MovieSettings = "MovieSettings"; + public const string MovieSettingsOutline = "MovieSettingsOutline"; + public const string MovieStar = "MovieStar"; + public const string MovieStarOutline = "MovieStarOutline"; + public const string Mower = "Mower"; + public const string MowerBag = "MowerBag"; + public const string Muffin = "Muffin"; + public const string Multicast = "Multicast"; + public const string Multiplication = "Multiplication"; + public const string MultiplicationBox = "MultiplicationBox"; + public const string Mushroom = "Mushroom"; + public const string MushroomOff = "MushroomOff"; + public const string MushroomOffOutline = "MushroomOffOutline"; + public const string MushroomOutline = "MushroomOutline"; + public const string Music = "Music"; + public const string MusicAccidentalDoubleFlat = "MusicAccidentalDoubleFlat"; + public const string MusicAccidentalDoubleSharp = "MusicAccidentalDoubleSharp"; + public const string MusicAccidentalFlat = "MusicAccidentalFlat"; + public const string MusicAccidentalNatural = "MusicAccidentalNatural"; + public const string MusicAccidentalSharp = "MusicAccidentalSharp"; + public const string MusicBox = "MusicBox"; + public const string MusicBoxMultiple = "MusicBoxMultiple"; + public const string MusicBoxMultipleOutline = "MusicBoxMultipleOutline"; + public const string MusicBoxOutline = "MusicBoxOutline"; + public const string MusicCircle = "MusicCircle"; + public const string MusicCircleOutline = "MusicCircleOutline"; + public const string MusicClefAlto = "MusicClefAlto"; + public const string MusicClefBass = "MusicClefBass"; + public const string MusicClefTreble = "MusicClefTreble"; + public const string MusicNote = "MusicNote"; + public const string MusicNoteBluetooth = "MusicNoteBluetooth"; + public const string MusicNoteBluetoothOff = "MusicNoteBluetoothOff"; + public const string MusicNoteEighth = "MusicNoteEighth"; + public const string MusicNoteEighthDotted = "MusicNoteEighthDotted"; + public const string MusicNoteHalf = "MusicNoteHalf"; + public const string MusicNoteHalfDotted = "MusicNoteHalfDotted"; + public const string MusicNoteOff = "MusicNoteOff"; + public const string MusicNoteOffOutline = "MusicNoteOffOutline"; + public const string MusicNoteOutline = "MusicNoteOutline"; + public const string MusicNotePlus = "MusicNotePlus"; + public const string MusicNoteQuarter = "MusicNoteQuarter"; + public const string MusicNoteQuarterDotted = "MusicNoteQuarterDotted"; + public const string MusicNoteSixteenth = "MusicNoteSixteenth"; + public const string MusicNoteSixteenthDotted = "MusicNoteSixteenthDotted"; + public const string MusicNoteWhole = "MusicNoteWhole"; + public const string MusicNoteWholeDotted = "MusicNoteWholeDotted"; + public const string MusicOff = "MusicOff"; + public const string MusicRestEighth = "MusicRestEighth"; + public const string MusicRestHalf = "MusicRestHalf"; + public const string MusicRestQuarter = "MusicRestQuarter"; + public const string MusicRestSixteenth = "MusicRestSixteenth"; + public const string MusicRestWhole = "MusicRestWhole"; + public const string Mustache = "Mustache"; + public const string Nail = "Nail"; + public const string Nas = "Nas"; + public const string Nativescript = "Nativescript"; + public const string Nature = "Nature"; + public const string NaturePeople = "NaturePeople"; + public const string Navigation = "Navigation"; + public const string NavigationOutline = "NavigationOutline"; + public const string NavigationVariant = "NavigationVariant"; + public const string NavigationVariantOutline = "NavigationVariantOutline"; + public const string NearMe = "NearMe"; + public const string Necklace = "Necklace"; + public const string Needle = "Needle"; + public const string Netflix = "Netflix"; + public const string Network = "Network"; + public const string NetworkOff = "NetworkOff"; + public const string NetworkOffOutline = "NetworkOffOutline"; + public const string NetworkOutline = "NetworkOutline"; + public const string NetworkStrength1 = "NetworkStrength1"; + public const string NetworkStrength1Alert = "NetworkStrength1Alert"; + public const string NetworkStrength2 = "NetworkStrength2"; + public const string NetworkStrength2Alert = "NetworkStrength2Alert"; + public const string NetworkStrength3 = "NetworkStrength3"; + public const string NetworkStrength3Alert = "NetworkStrength3Alert"; + public const string NetworkStrength4 = "NetworkStrength4"; + public const string NetworkStrength4Alert = "NetworkStrength4Alert"; + public const string NetworkStrengthOff = "NetworkStrengthOff"; + public const string NetworkStrengthOffOutline = "NetworkStrengthOffOutline"; + public const string NetworkStrengthOutline = "NetworkStrengthOutline"; + public const string NewBox = "NewBox"; + public const string Newspaper = "Newspaper"; + public const string NewspaperMinus = "NewspaperMinus"; + public const string NewspaperPlus = "NewspaperPlus"; + public const string NewspaperVariant = "NewspaperVariant"; + public const string NewspaperVariantMultiple = "NewspaperVariantMultiple"; + public const string NewspaperVariantMultipleOutline = "NewspaperVariantMultipleOutline"; + public const string NewspaperVariantOutline = "NewspaperVariantOutline"; + public const string Nfc = "Nfc"; + public const string NfcSearchVariant = "NfcSearchVariant"; + public const string NfcTap = "NfcTap"; + public const string NfcVariant = "NfcVariant"; + public const string NfcVariantOff = "NfcVariantOff"; + public const string Ninja = "Ninja"; + public const string NintendoGameBoy = "NintendoGameBoy"; + public const string NintendoSwitch = "NintendoSwitch"; + public const string NintendoWii = "NintendoWii"; + public const string NintendoWiiu = "NintendoWiiu"; + public const string Nix = "Nix"; + public const string Nodejs = "Nodejs"; + public const string Noodles = "Noodles"; + public const string Note = "Note"; + public const string NoteAlert = "NoteAlert"; + public const string NoteAlertOutline = "NoteAlertOutline"; + public const string Notebook = "Notebook"; + public const string NotebookCheck = "NotebookCheck"; + public const string NotebookCheckOutline = "NotebookCheckOutline"; + public const string NotebookEdit = "NotebookEdit"; + public const string NotebookEditOutline = "NotebookEditOutline"; + public const string NotebookMinus = "NotebookMinus"; + public const string NotebookMinusOutline = "NotebookMinusOutline"; + public const string NotebookMultiple = "NotebookMultiple"; + public const string NotebookOutline = "NotebookOutline"; + public const string NotebookPlus = "NotebookPlus"; + public const string NotebookPlusOutline = "NotebookPlusOutline"; + public const string NotebookRemove = "NotebookRemove"; + public const string NotebookRemoveOutline = "NotebookRemoveOutline"; + public const string NoteCheck = "NoteCheck"; + public const string NoteCheckOutline = "NoteCheckOutline"; + public const string NoteEdit = "NoteEdit"; + public const string NoteEditOutline = "NoteEditOutline"; + public const string NoteMinus = "NoteMinus"; + public const string NoteMinusOutline = "NoteMinusOutline"; + public const string NoteMultiple = "NoteMultiple"; + public const string NoteMultipleOutline = "NoteMultipleOutline"; + public const string NoteOff = "NoteOff"; + public const string NoteOffOutline = "NoteOffOutline"; + public const string NoteOutline = "NoteOutline"; + public const string NotePlus = "NotePlus"; + public const string NotePlusOutline = "NotePlusOutline"; + public const string NotEqual = "NotEqual"; + public const string NotEqualVariant = "NotEqualVariant"; + public const string NoteRemove = "NoteRemove"; + public const string NoteRemoveOutline = "NoteRemoveOutline"; + public const string NoteSearch = "NoteSearch"; + public const string NoteSearchOutline = "NoteSearchOutline"; + public const string NoteText = "NoteText"; + public const string NoteTextOutline = "NoteTextOutline"; + public const string NotificationClearAll = "NotificationClearAll"; + public const string Npm = "Npm"; + public const string Nuke = "Nuke"; + public const string Null = "Null"; + public const string Numeric = "Numeric"; + public const string Numeric0 = "Numeric0"; + public const string Numeric0Box = "Numeric0Box"; + public const string Numeric0BoxMultiple = "Numeric0BoxMultiple"; + public const string Numeric0BoxMultipleOutline = "Numeric0BoxMultipleOutline"; + public const string Numeric0BoxOutline = "Numeric0BoxOutline"; + public const string Numeric0Circle = "Numeric0Circle"; + public const string Numeric0CircleOutline = "Numeric0CircleOutline"; + public const string Numeric1 = "Numeric1"; + public const string Numeric10 = "Numeric10"; + public const string Numeric10Box = "Numeric10Box"; + public const string Numeric10BoxMultiple = "Numeric10BoxMultiple"; + public const string Numeric10BoxMultipleOutline = "Numeric10BoxMultipleOutline"; + public const string Numeric10BoxOutline = "Numeric10BoxOutline"; + public const string Numeric10Circle = "Numeric10Circle"; + public const string Numeric10CircleOutline = "Numeric10CircleOutline"; + public const string Numeric1Box = "Numeric1Box"; + public const string Numeric1BoxMultiple = "Numeric1BoxMultiple"; + public const string Numeric1BoxMultipleOutline = "Numeric1BoxMultipleOutline"; + public const string Numeric1BoxOutline = "Numeric1BoxOutline"; + public const string Numeric1Circle = "Numeric1Circle"; + public const string Numeric1CircleOutline = "Numeric1CircleOutline"; + public const string Numeric2 = "Numeric2"; + public const string Numeric2Box = "Numeric2Box"; + public const string Numeric2BoxMultiple = "Numeric2BoxMultiple"; + public const string Numeric2BoxMultipleOutline = "Numeric2BoxMultipleOutline"; + public const string Numeric2BoxOutline = "Numeric2BoxOutline"; + public const string Numeric2Circle = "Numeric2Circle"; + public const string Numeric2CircleOutline = "Numeric2CircleOutline"; + public const string Numeric3 = "Numeric3"; + public const string Numeric3Box = "Numeric3Box"; + public const string Numeric3BoxMultiple = "Numeric3BoxMultiple"; + public const string Numeric3BoxMultipleOutline = "Numeric3BoxMultipleOutline"; + public const string Numeric3BoxOutline = "Numeric3BoxOutline"; + public const string Numeric3Circle = "Numeric3Circle"; + public const string Numeric3CircleOutline = "Numeric3CircleOutline"; + public const string Numeric4 = "Numeric4"; + public const string Numeric4Box = "Numeric4Box"; + public const string Numeric4BoxMultiple = "Numeric4BoxMultiple"; + public const string Numeric4BoxMultipleOutline = "Numeric4BoxMultipleOutline"; + public const string Numeric4BoxOutline = "Numeric4BoxOutline"; + public const string Numeric4Circle = "Numeric4Circle"; + public const string Numeric4CircleOutline = "Numeric4CircleOutline"; + public const string Numeric5 = "Numeric5"; + public const string Numeric5Box = "Numeric5Box"; + public const string Numeric5BoxMultiple = "Numeric5BoxMultiple"; + public const string Numeric5BoxMultipleOutline = "Numeric5BoxMultipleOutline"; + public const string Numeric5BoxOutline = "Numeric5BoxOutline"; + public const string Numeric5Circle = "Numeric5Circle"; + public const string Numeric5CircleOutline = "Numeric5CircleOutline"; + public const string Numeric6 = "Numeric6"; + public const string Numeric6Box = "Numeric6Box"; + public const string Numeric6BoxMultiple = "Numeric6BoxMultiple"; + public const string Numeric6BoxMultipleOutline = "Numeric6BoxMultipleOutline"; + public const string Numeric6BoxOutline = "Numeric6BoxOutline"; + public const string Numeric6Circle = "Numeric6Circle"; + public const string Numeric6CircleOutline = "Numeric6CircleOutline"; + public const string Numeric7 = "Numeric7"; + public const string Numeric7Box = "Numeric7Box"; + public const string Numeric7BoxMultiple = "Numeric7BoxMultiple"; + public const string Numeric7BoxMultipleOutline = "Numeric7BoxMultipleOutline"; + public const string Numeric7BoxOutline = "Numeric7BoxOutline"; + public const string Numeric7Circle = "Numeric7Circle"; + public const string Numeric7CircleOutline = "Numeric7CircleOutline"; + public const string Numeric8 = "Numeric8"; + public const string Numeric8Box = "Numeric8Box"; + public const string Numeric8BoxMultiple = "Numeric8BoxMultiple"; + public const string Numeric8BoxMultipleOutline = "Numeric8BoxMultipleOutline"; + public const string Numeric8BoxOutline = "Numeric8BoxOutline"; + public const string Numeric8Circle = "Numeric8Circle"; + public const string Numeric8CircleOutline = "Numeric8CircleOutline"; + public const string Numeric9 = "Numeric9"; + public const string Numeric9Box = "Numeric9Box"; + public const string Numeric9BoxMultiple = "Numeric9BoxMultiple"; + public const string Numeric9BoxMultipleOutline = "Numeric9BoxMultipleOutline"; + public const string Numeric9BoxOutline = "Numeric9BoxOutline"; + public const string Numeric9Circle = "Numeric9Circle"; + public const string Numeric9CircleOutline = "Numeric9CircleOutline"; + public const string Numeric9Plus = "Numeric9Plus"; + public const string Numeric9PlusBox = "Numeric9PlusBox"; + public const string Numeric9PlusBoxMultiple = "Numeric9PlusBoxMultiple"; + public const string Numeric9PlusBoxMultipleOutline = "Numeric9PlusBoxMultipleOutline"; + public const string Numeric9PlusBoxOutline = "Numeric9PlusBoxOutline"; + public const string Numeric9PlusCircle = "Numeric9PlusCircle"; + public const string Numeric9PlusCircleOutline = "Numeric9PlusCircleOutline"; + public const string NumericNegative1 = "NumericNegative1"; + public const string NumericPositive1 = "NumericPositive1"; + public const string Nut = "Nut"; + public const string Nutrition = "Nutrition"; + public const string Nuxt = "Nuxt"; + public const string Oar = "Oar"; + public const string Ocarina = "Ocarina"; + public const string Oci = "Oci"; + public const string Ocr = "Ocr"; + public const string Octagon = "Octagon"; + public const string OctagonOutline = "OctagonOutline"; + public const string Octagram = "Octagram"; + public const string OctagramOutline = "OctagramOutline"; + public const string Odnoklassniki = "Odnoklassniki"; + public const string Offer = "Offer"; + public const string OfficeBuilding = "OfficeBuilding"; + public const string OfficeBuildingMarker = "OfficeBuildingMarker"; + public const string OfficeBuildingMarkerOutline = "OfficeBuildingMarkerOutline"; + public const string OfficeBuildingOutline = "OfficeBuildingOutline"; + public const string Oil = "Oil"; + public const string OilLamp = "OilLamp"; + public const string OilLevel = "OilLevel"; + public const string OilTemperature = "OilTemperature"; + public const string Om = "Om"; + public const string Omega = "Omega"; + public const string Onepassword = "Onepassword"; + public const string OneUp = "OneUp"; + public const string Opacity = "Opacity"; + public const string Openid = "Openid"; + public const string OpenInApp = "OpenInApp"; + public const string OpenInNew = "OpenInNew"; + public const string OpenSourceInitiative = "OpenSourceInitiative"; + public const string Opera = "Opera"; + public const string Orbit = "Orbit"; + public const string OrbitVariant = "OrbitVariant"; + public const string OrderAlphabeticalAscending = "OrderAlphabeticalAscending"; + public const string OrderAlphabeticalDescending = "OrderAlphabeticalDescending"; + public const string OrderBoolAscending = "OrderBoolAscending"; + public const string OrderBoolAscendingVariant = "OrderBoolAscendingVariant"; + public const string OrderBoolDescending = "OrderBoolDescending"; + public const string OrderBoolDescendingVariant = "OrderBoolDescendingVariant"; + public const string OrderNumericAscending = "OrderNumericAscending"; + public const string OrderNumericDescending = "OrderNumericDescending"; + public const string Origin = "Origin"; + public const string Ornament = "Ornament"; + public const string OrnamentVariant = "OrnamentVariant"; + public const string OutdoorLamp = "OutdoorLamp"; + public const string Overscan = "Overscan"; + public const string Owl = "Owl"; + public const string Package = "Package"; + public const string PackageDown = "PackageDown"; + public const string PackageUp = "PackageUp"; + public const string PackageVariant = "PackageVariant"; + public const string PackageVariantClosed = "PackageVariantClosed"; + public const string PacMan = "PacMan"; + public const string PageFirst = "PageFirst"; + public const string PageLast = "PageLast"; + public const string PageLayoutBody = "PageLayoutBody"; + public const string PageLayoutFooter = "PageLayoutFooter"; + public const string PageLayoutHeader = "PageLayoutHeader"; + public const string PageLayoutHeaderFooter = "PageLayoutHeaderFooter"; + public const string PageLayoutSidebarLeft = "PageLayoutSidebarLeft"; + public const string PageLayoutSidebarRight = "PageLayoutSidebarRight"; + public const string PageNext = "PageNext"; + public const string PageNextOutline = "PageNextOutline"; + public const string PagePrevious = "PagePrevious"; + public const string PagePreviousOutline = "PagePreviousOutline"; + public const string Pail = "Pail"; + public const string PailMinus = "PailMinus"; + public const string PailMinusOutline = "PailMinusOutline"; + public const string PailOff = "PailOff"; + public const string PailOffOutline = "PailOffOutline"; + public const string PailOutline = "PailOutline"; + public const string PailPlus = "PailPlus"; + public const string PailPlusOutline = "PailPlusOutline"; + public const string PailRemove = "PailRemove"; + public const string PailRemoveOutline = "PailRemoveOutline"; + public const string Palette = "Palette"; + public const string PaletteAdvanced = "PaletteAdvanced"; + public const string PaletteOutline = "PaletteOutline"; + public const string PaletteSwatch = "PaletteSwatch"; + public const string PaletteSwatchOutline = "PaletteSwatchOutline"; + public const string PalmTree = "PalmTree"; + public const string Pan = "Pan"; + public const string PanBottomLeft = "PanBottomLeft"; + public const string PanBottomRight = "PanBottomRight"; + public const string Panda = "Panda"; + public const string Pandora = "Pandora"; + public const string PanDown = "PanDown"; + public const string PanHorizontal = "PanHorizontal"; + public const string PanLeft = "PanLeft"; + public const string Panorama = "Panorama"; + public const string PanoramaFisheye = "PanoramaFisheye"; + public const string PanoramaHorizontal = "PanoramaHorizontal"; + public const string PanoramaVertical = "PanoramaVertical"; + public const string PanoramaWideAngle = "PanoramaWideAngle"; + public const string PanRight = "PanRight"; + public const string PanTopLeft = "PanTopLeft"; + public const string PanTopRight = "PanTopRight"; + public const string PanUp = "PanUp"; + public const string PanVertical = "PanVertical"; + public const string Paperclip = "Paperclip"; + public const string PaperCutVertical = "PaperCutVertical"; + public const string PaperRoll = "PaperRoll"; + public const string PaperRollOutline = "PaperRollOutline"; + public const string Parachute = "Parachute"; + public const string ParachuteOutline = "ParachuteOutline"; + public const string Paragliding = "Paragliding"; + public const string Parking = "Parking"; + public const string PartyPopper = "PartyPopper"; + public const string Passport = "Passport"; + public const string PassportBiometric = "PassportBiometric"; + public const string Pasta = "Pasta"; + public const string PatioHeater = "PatioHeater"; + public const string Patreon = "Patreon"; + public const string Pause = "Pause"; + public const string PauseCircle = "PauseCircle"; + public const string PauseCircleOutline = "PauseCircleOutline"; + public const string PauseOctagon = "PauseOctagon"; + public const string PauseOctagonOutline = "PauseOctagonOutline"; + public const string Paw = "Paw"; + public const string PawOff = "PawOff"; + public const string PawOffOutline = "PawOffOutline"; + public const string PawOutline = "PawOutline"; + public const string Peace = "Peace"; + public const string Peanut = "Peanut"; + public const string PeanutOff = "PeanutOff"; + public const string PeanutOffOutline = "PeanutOffOutline"; + public const string PeanutOutline = "PeanutOutline"; + public const string Pen = "Pen"; + public const string Pencil = "Pencil"; + public const string PencilBox = "PencilBox"; + public const string PencilBoxMultiple = "PencilBoxMultiple"; + public const string PencilBoxMultipleOutline = "PencilBoxMultipleOutline"; + public const string PencilBoxOutline = "PencilBoxOutline"; + public const string PencilCircle = "PencilCircle"; + public const string PencilCircleOutline = "PencilCircleOutline"; + public const string PencilLock = "PencilLock"; + public const string PencilLockOutline = "PencilLockOutline"; + public const string PencilMinus = "PencilMinus"; + public const string PencilMinusOutline = "PencilMinusOutline"; + public const string PencilOff = "PencilOff"; + public const string PencilOffOutline = "PencilOffOutline"; + public const string PencilOutline = "PencilOutline"; + public const string PencilPlus = "PencilPlus"; + public const string PencilPlusOutline = "PencilPlusOutline"; + public const string PencilRemove = "PencilRemove"; + public const string PencilRemoveOutline = "PencilRemoveOutline"; + public const string PencilRuler = "PencilRuler"; + public const string Penguin = "Penguin"; + public const string PenLock = "PenLock"; + public const string PenMinus = "PenMinus"; + public const string PenOff = "PenOff"; + public const string PenPlus = "PenPlus"; + public const string PenRemove = "PenRemove"; + public const string Pentagon = "Pentagon"; + public const string PentagonOutline = "PentagonOutline"; + public const string Pentagram = "Pentagram"; + public const string Percent = "Percent"; + public const string PercentOutline = "PercentOutline"; + public const string PeriodicTable = "PeriodicTable"; + public const string PerspectiveLess = "PerspectiveLess"; + public const string PerspectiveMore = "PerspectiveMore"; + public const string Ph = "Ph"; + public const string Phone = "Phone"; + public const string PhoneAlert = "PhoneAlert"; + public const string PhoneAlertOutline = "PhoneAlertOutline"; + public const string PhoneBluetooth = "PhoneBluetooth"; + public const string PhoneBluetoothOutline = "PhoneBluetoothOutline"; + public const string PhoneCancel = "PhoneCancel"; + public const string PhoneCancelOutline = "PhoneCancelOutline"; + public const string PhoneCheck = "PhoneCheck"; + public const string PhoneCheckOutline = "PhoneCheckOutline"; + public const string PhoneClassic = "PhoneClassic"; + public const string PhoneClassicOff = "PhoneClassicOff"; + public const string PhoneDial = "PhoneDial"; + public const string PhoneDialOutline = "PhoneDialOutline"; + public const string PhoneForward = "PhoneForward"; + public const string PhoneForwardOutline = "PhoneForwardOutline"; + public const string PhoneHangup = "PhoneHangup"; + public const string PhoneHangupOutline = "PhoneHangupOutline"; + public const string PhoneIncoming = "PhoneIncoming"; + public const string PhoneIncomingOutline = "PhoneIncomingOutline"; + public const string PhoneInTalk = "PhoneInTalk"; + public const string PhoneInTalkOutline = "PhoneInTalkOutline"; + public const string PhoneLock = "PhoneLock"; + public const string PhoneLockOutline = "PhoneLockOutline"; + public const string PhoneLog = "PhoneLog"; + public const string PhoneLogOutline = "PhoneLogOutline"; + public const string PhoneMessage = "PhoneMessage"; + public const string PhoneMessageOutline = "PhoneMessageOutline"; + public const string PhoneMinus = "PhoneMinus"; + public const string PhoneMinusOutline = "PhoneMinusOutline"; + public const string PhoneMissed = "PhoneMissed"; + public const string PhoneMissedOutline = "PhoneMissedOutline"; + public const string PhoneOff = "PhoneOff"; + public const string PhoneOffOutline = "PhoneOffOutline"; + public const string PhoneOutgoing = "PhoneOutgoing"; + public const string PhoneOutgoingOutline = "PhoneOutgoingOutline"; + public const string PhoneOutline = "PhoneOutline"; + public const string PhonePaused = "PhonePaused"; + public const string PhonePausedOutline = "PhonePausedOutline"; + public const string PhonePlus = "PhonePlus"; + public const string PhonePlusOutline = "PhonePlusOutline"; + public const string PhoneRemove = "PhoneRemove"; + public const string PhoneRemoveOutline = "PhoneRemoveOutline"; + public const string PhoneReturn = "PhoneReturn"; + public const string PhoneReturnOutline = "PhoneReturnOutline"; + public const string PhoneRing = "PhoneRing"; + public const string PhoneRingOutline = "PhoneRingOutline"; + public const string PhoneRotateLandscape = "PhoneRotateLandscape"; + public const string PhoneRotatePortrait = "PhoneRotatePortrait"; + public const string PhoneSettings = "PhoneSettings"; + public const string PhoneSettingsOutline = "PhoneSettingsOutline"; + public const string PhoneVoip = "PhoneVoip"; + public const string Pi = "Pi"; + public const string Piano = "Piano"; + public const string PianoOff = "PianoOff"; + public const string PiBox = "PiBox"; + public const string Pickaxe = "Pickaxe"; + public const string PictureInPictureBottomRight = "PictureInPictureBottomRight"; + public const string PictureInPictureBottomRightOutline = "PictureInPictureBottomRightOutline"; + public const string PictureInPictureTopRight = "PictureInPictureTopRight"; + public const string PictureInPictureTopRightOutline = "PictureInPictureTopRightOutline"; + public const string Pier = "Pier"; + public const string PierCrane = "PierCrane"; + public const string Pig = "Pig"; + public const string PiggyBank = "PiggyBank"; + public const string PiggyBankOutline = "PiggyBankOutline"; + public const string PigVariant = "PigVariant"; + public const string PigVariantOutline = "PigVariantOutline"; + public const string PiHole = "PiHole"; + public const string Pill = "Pill"; + public const string Pillar = "Pillar"; + public const string Pin = "Pin"; + public const string PineTree = "PineTree"; + public const string PineTreeBox = "PineTreeBox"; + public const string PineTreeFire = "PineTreeFire"; + public const string PinOff = "PinOff"; + public const string PinOffOutline = "PinOffOutline"; + public const string PinOutline = "PinOutline"; + public const string Pinterest = "Pinterest"; + public const string Pinwheel = "Pinwheel"; + public const string PinwheelOutline = "PinwheelOutline"; + public const string Pipe = "Pipe"; + public const string PipeDisconnected = "PipeDisconnected"; + public const string PipeLeak = "PipeLeak"; + public const string PipeValve = "PipeValve"; + public const string PipeWrench = "PipeWrench"; + public const string Pirate = "Pirate"; + public const string Pistol = "Pistol"; + public const string Piston = "Piston"; + public const string Pitchfork = "Pitchfork"; + public const string Pizza = "Pizza"; + public const string Play = "Play"; + public const string PlayBox = "PlayBox"; + public const string PlayBoxMultiple = "PlayBoxMultiple"; + public const string PlayBoxMultipleOutline = "PlayBoxMultipleOutline"; + public const string PlayBoxOutline = "PlayBoxOutline"; + public const string PlayCircle = "PlayCircle"; + public const string PlayCircleOutline = "PlayCircleOutline"; + public const string PlaylistCheck = "PlaylistCheck"; + public const string PlaylistEdit = "PlaylistEdit"; + public const string PlaylistMinus = "PlaylistMinus"; + public const string PlaylistMusic = "PlaylistMusic"; + public const string PlaylistMusicOutline = "PlaylistMusicOutline"; + public const string PlaylistPlay = "PlaylistPlay"; + public const string PlaylistPlus = "PlaylistPlus"; + public const string PlaylistRemove = "PlaylistRemove"; + public const string PlaylistStar = "PlaylistStar"; + public const string PlayNetwork = "PlayNetwork"; + public const string PlayNetworkOutline = "PlayNetworkOutline"; + public const string PlayOutline = "PlayOutline"; + public const string PlayPause = "PlayPause"; + public const string PlayProtectedContent = "PlayProtectedContent"; + public const string PlaySpeed = "PlaySpeed"; + public const string Plex = "Plex"; + public const string Plus = "Plus"; + public const string PlusBox = "PlusBox"; + public const string PlusBoxMultiple = "PlusBoxMultiple"; + public const string PlusBoxMultipleOutline = "PlusBoxMultipleOutline"; + public const string PlusBoxOutline = "PlusBoxOutline"; + public const string PlusCircle = "PlusCircle"; + public const string PlusCircleMultiple = "PlusCircleMultiple"; + public const string PlusCircleMultipleOutline = "PlusCircleMultipleOutline"; + public const string PlusCircleOutline = "PlusCircleOutline"; + public const string PlusMinus = "PlusMinus"; + public const string PlusMinusBox = "PlusMinusBox"; + public const string PlusMinusVariant = "PlusMinusVariant"; + public const string PlusNetwork = "PlusNetwork"; + public const string PlusNetworkOutline = "PlusNetworkOutline"; + public const string PlusOutline = "PlusOutline"; + public const string PlusThick = "PlusThick"; + public const string Podcast = "Podcast"; + public const string Podium = "Podium"; + public const string PodiumBronze = "PodiumBronze"; + public const string PodiumGold = "PodiumGold"; + public const string PodiumSilver = "PodiumSilver"; + public const string PointOfSale = "PointOfSale"; + public const string Pokeball = "Pokeball"; + public const string PokemonGo = "PokemonGo"; + public const string PokerChip = "PokerChip"; + public const string Polaroid = "Polaroid"; + public const string PoliceBadge = "PoliceBadge"; + public const string PoliceBadgeOutline = "PoliceBadgeOutline"; + public const string PoliceStation = "PoliceStation"; + public const string Poll = "Poll"; + public const string Polo = "Polo"; + public const string Polymer = "Polymer"; + public const string Pool = "Pool"; + public const string Popcorn = "Popcorn"; + public const string Post = "Post"; + public const string PostageStamp = "PostageStamp"; + public const string PostOutline = "PostOutline"; + public const string Pot = "Pot"; + public const string PotMix = "PotMix"; + public const string PotMixOutline = "PotMixOutline"; + public const string PotOutline = "PotOutline"; + public const string PotSteam = "PotSteam"; + public const string PotSteamOutline = "PotSteamOutline"; + public const string Pound = "Pound"; + public const string PoundBox = "PoundBox"; + public const string PoundBoxOutline = "PoundBoxOutline"; + public const string Power = "Power"; + public const string PowerCycle = "PowerCycle"; + public const string PowerOff = "PowerOff"; + public const string PowerOn = "PowerOn"; + public const string PowerPlug = "PowerPlug"; + public const string PowerPlugOff = "PowerPlugOff"; + public const string PowerPlugOffOutline = "PowerPlugOffOutline"; + public const string PowerPlugOutline = "PowerPlugOutline"; + public const string PowerSettings = "PowerSettings"; + public const string Powershell = "Powershell"; + public const string PowerSleep = "PowerSleep"; + public const string PowerSocket = "PowerSocket"; + public const string PowerSocketAu = "PowerSocketAu"; + public const string PowerSocketCh = "PowerSocketCh"; + public const string PowerSocketDe = "PowerSocketDe"; + public const string PowerSocketEu = "PowerSocketEu"; + public const string PowerSocketFr = "PowerSocketFr"; + public const string PowerSocketIt = "PowerSocketIt"; + public const string PowerSocketJp = "PowerSocketJp"; + public const string PowerSocketUk = "PowerSocketUk"; + public const string PowerSocketUs = "PowerSocketUs"; + public const string PowerStandby = "PowerStandby"; + public const string Prescription = "Prescription"; + public const string Presentation = "Presentation"; + public const string PresentationPlay = "PresentationPlay"; + public const string Pretzel = "Pretzel"; + public const string Printer = "Printer"; + public const string Printer3d = "Printer3d"; + public const string Printer3dNozzle = "Printer3dNozzle"; + public const string Printer3dNozzleAlert = "Printer3dNozzleAlert"; + public const string Printer3dNozzleAlertOutline = "Printer3dNozzleAlertOutline"; + public const string Printer3dNozzleHeat = "Printer3dNozzleHeat"; + public const string Printer3dNozzleHeatOutline = "Printer3dNozzleHeatOutline"; + public const string Printer3dNozzleOutline = "Printer3dNozzleOutline"; + public const string PrinterAlert = "PrinterAlert"; + public const string PrinterCheck = "PrinterCheck"; + public const string PrinterEye = "PrinterEye"; + public const string PrinterOff = "PrinterOff"; + public const string PrinterOffOutline = "PrinterOffOutline"; + public const string PrinterOutline = "PrinterOutline"; + public const string PrinterPos = "PrinterPos"; + public const string PrinterSearch = "PrinterSearch"; + public const string PrinterSettings = "PrinterSettings"; + public const string PrinterWireless = "PrinterWireless"; + public const string PriorityHigh = "PriorityHigh"; + public const string PriorityLow = "PriorityLow"; + public const string ProfessionalHexagon = "ProfessionalHexagon"; + public const string ProgressAlert = "ProgressAlert"; + public const string ProgressCheck = "ProgressCheck"; + public const string ProgressClock = "ProgressClock"; + public const string ProgressClose = "ProgressClose"; + public const string ProgressDownload = "ProgressDownload"; + public const string ProgressPencil = "ProgressPencil"; + public const string ProgressQuestion = "ProgressQuestion"; + public const string ProgressStar = "ProgressStar"; + public const string ProgressUpload = "ProgressUpload"; + public const string ProgressWrench = "ProgressWrench"; + public const string Projector = "Projector"; + public const string ProjectorScreen = "ProjectorScreen"; + public const string ProjectorScreenOff = "ProjectorScreenOff"; + public const string ProjectorScreenOffOutline = "ProjectorScreenOffOutline"; + public const string ProjectorScreenOutline = "ProjectorScreenOutline"; + public const string ProjectorScreenVariant = "ProjectorScreenVariant"; + public const string ProjectorScreenVariantOff = "ProjectorScreenVariantOff"; + public const string ProjectorScreenVariantOffOutline = "ProjectorScreenVariantOffOutline"; + public const string ProjectorScreenVariantOutline = "ProjectorScreenVariantOutline"; + public const string PropaneTank = "PropaneTank"; + public const string PropaneTankOutline = "PropaneTankOutline"; + public const string Protocol = "Protocol"; + public const string Publish = "Publish"; + public const string Pulse = "Pulse"; + public const string Pump = "Pump"; + public const string Pumpkin = "Pumpkin"; + public const string Purse = "Purse"; + public const string PurseOutline = "PurseOutline"; + public const string Puzzle = "Puzzle"; + public const string PuzzleCheck = "PuzzleCheck"; + public const string PuzzleCheckOutline = "PuzzleCheckOutline"; + public const string PuzzleEdit = "PuzzleEdit"; + public const string PuzzleEditOutline = "PuzzleEditOutline"; + public const string PuzzleHeart = "PuzzleHeart"; + public const string PuzzleHeartOutline = "PuzzleHeartOutline"; + public const string PuzzleMinus = "PuzzleMinus"; + public const string PuzzleMinusOutline = "PuzzleMinusOutline"; + public const string PuzzleOutline = "PuzzleOutline"; + public const string PuzzlePlus = "PuzzlePlus"; + public const string PuzzlePlusOutline = "PuzzlePlusOutline"; + public const string PuzzleRemove = "PuzzleRemove"; + public const string PuzzleRemoveOutline = "PuzzleRemoveOutline"; + public const string PuzzleStar = "PuzzleStar"; + public const string PuzzleStarOutline = "PuzzleStarOutline"; + public const string Qi = "Qi"; + public const string Qqchat = "Qqchat"; + public const string Qrcode = "Qrcode"; + public const string QrcodeEdit = "QrcodeEdit"; + public const string QrcodeMinus = "QrcodeMinus"; + public const string QrcodePlus = "QrcodePlus"; + public const string QrcodeRemove = "QrcodeRemove"; + public const string QrcodeScan = "QrcodeScan"; + public const string Quadcopter = "Quadcopter"; + public const string QualityHigh = "QualityHigh"; + public const string QualityLow = "QualityLow"; + public const string QualityMedium = "QualityMedium"; + public const string Quora = "Quora"; + public const string Rabbit = "Rabbit"; + public const string RacingHelmet = "RacingHelmet"; + public const string Racquetball = "Racquetball"; + public const string Radar = "Radar"; + public const string Radiator = "Radiator"; + public const string RadiatorDisabled = "RadiatorDisabled"; + public const string RadiatorOff = "RadiatorOff"; + public const string Radio = "Radio"; + public const string Radioactive = "Radioactive"; + public const string RadioactiveCircle = "RadioactiveCircle"; + public const string RadioactiveCircleOutline = "RadioactiveCircleOutline"; + public const string RadioactiveOff = "RadioactiveOff"; + public const string RadioAm = "RadioAm"; + public const string RadioboxBlank = "RadioboxBlank"; + public const string RadioboxMarked = "RadioboxMarked"; + public const string RadioFm = "RadioFm"; + public const string RadioHandheld = "RadioHandheld"; + public const string RadiologyBox = "RadiologyBox"; + public const string RadiologyBoxOutline = "RadiologyBoxOutline"; + public const string RadioOff = "RadioOff"; + public const string RadioTower = "RadioTower"; + public const string Radius = "Radius"; + public const string RadiusOutline = "RadiusOutline"; + public const string RailroadLight = "RailroadLight"; + public const string Rake = "Rake"; + public const string RaspberryPi = "RaspberryPi"; + public const string RayEnd = "RayEnd"; + public const string RayEndArrow = "RayEndArrow"; + public const string RayStart = "RayStart"; + public const string RayStartArrow = "RayStartArrow"; + public const string RayStartEnd = "RayStartEnd"; + public const string RayStartVertexEnd = "RayStartVertexEnd"; + public const string RayVertex = "RayVertex"; + public const string React = "React"; + public const string Read = "Read"; + public const string Receipt = "Receipt"; + public const string Record = "Record"; + public const string RecordCircle = "RecordCircle"; + public const string RecordCircleOutline = "RecordCircleOutline"; + public const string RecordPlayer = "RecordPlayer"; + public const string RecordRec = "RecordRec"; + public const string Rectangle = "Rectangle"; + public const string RectangleOutline = "RectangleOutline"; + public const string Recycle = "Recycle"; + public const string RecycleVariant = "RecycleVariant"; + public const string Reddit = "Reddit"; + public const string Redhat = "Redhat"; + public const string Redo = "Redo"; + public const string RedoVariant = "RedoVariant"; + public const string ReflectHorizontal = "ReflectHorizontal"; + public const string ReflectVertical = "ReflectVertical"; + public const string Refresh = "Refresh"; + public const string RefreshAuto = "RefreshAuto"; + public const string RefreshCircle = "RefreshCircle"; + public const string Regex = "Regex"; + public const string RegisteredTrademark = "RegisteredTrademark"; + public const string Reiterate = "Reiterate"; + public const string RelationManyToMany = "RelationManyToMany"; + public const string RelationManyToOne = "RelationManyToOne"; + public const string RelationManyToOneOrMany = "RelationManyToOneOrMany"; + public const string RelationManyToOnlyOne = "RelationManyToOnlyOne"; + public const string RelationManyToZeroOrMany = "RelationManyToZeroOrMany"; + public const string RelationManyToZeroOrOne = "RelationManyToZeroOrOne"; + public const string RelationOneOrManyToMany = "RelationOneOrManyToMany"; + public const string RelationOneOrManyToOne = "RelationOneOrManyToOne"; + public const string RelationOneOrManyToOneOrMany = "RelationOneOrManyToOneOrMany"; + public const string RelationOneOrManyToOnlyOne = "RelationOneOrManyToOnlyOne"; + public const string RelationOneOrManyToZeroOrMany = "RelationOneOrManyToZeroOrMany"; + public const string RelationOneOrManyToZeroOrOne = "RelationOneOrManyToZeroOrOne"; + public const string RelationOneToMany = "RelationOneToMany"; + public const string RelationOneToOne = "RelationOneToOne"; + public const string RelationOneToOneOrMany = "RelationOneToOneOrMany"; + public const string RelationOneToOnlyOne = "RelationOneToOnlyOne"; + public const string RelationOneToZeroOrMany = "RelationOneToZeroOrMany"; + public const string RelationOneToZeroOrOne = "RelationOneToZeroOrOne"; + public const string RelationOnlyOneToMany = "RelationOnlyOneToMany"; + public const string RelationOnlyOneToOne = "RelationOnlyOneToOne"; + public const string RelationOnlyOneToOneOrMany = "RelationOnlyOneToOneOrMany"; + public const string RelationOnlyOneToOnlyOne = "RelationOnlyOneToOnlyOne"; + public const string RelationOnlyOneToZeroOrMany = "RelationOnlyOneToZeroOrMany"; + public const string RelationOnlyOneToZeroOrOne = "RelationOnlyOneToZeroOrOne"; + public const string RelationZeroOrManyToMany = "RelationZeroOrManyToMany"; + public const string RelationZeroOrManyToOne = "RelationZeroOrManyToOne"; + public const string RelationZeroOrManyToOneOrMany = "RelationZeroOrManyToOneOrMany"; + public const string RelationZeroOrManyToOnlyOne = "RelationZeroOrManyToOnlyOne"; + public const string RelationZeroOrManyToZeroOrMany = "RelationZeroOrManyToZeroOrMany"; + public const string RelationZeroOrManyToZeroOrOne = "RelationZeroOrManyToZeroOrOne"; + public const string RelationZeroOrOneToMany = "RelationZeroOrOneToMany"; + public const string RelationZeroOrOneToOne = "RelationZeroOrOneToOne"; + public const string RelationZeroOrOneToOneOrMany = "RelationZeroOrOneToOneOrMany"; + public const string RelationZeroOrOneToOnlyOne = "RelationZeroOrOneToOnlyOne"; + public const string RelationZeroOrOneToZeroOrMany = "RelationZeroOrOneToZeroOrMany"; + public const string RelationZeroOrOneToZeroOrOne = "RelationZeroOrOneToZeroOrOne"; + public const string RelativeScale = "RelativeScale"; + public const string Reload = "Reload"; + public const string ReloadAlert = "ReloadAlert"; + public const string Reminder = "Reminder"; + public const string Remote = "Remote"; + public const string RemoteDesktop = "RemoteDesktop"; + public const string RemoteOff = "RemoteOff"; + public const string RemoteTv = "RemoteTv"; + public const string RemoteTvOff = "RemoteTvOff"; + public const string RenameBox = "RenameBox"; + public const string ReorderHorizontal = "ReorderHorizontal"; + public const string ReorderVertical = "ReorderVertical"; + public const string Repeat = "Repeat"; + public const string RepeatOff = "RepeatOff"; + public const string RepeatOnce = "RepeatOnce"; + public const string RepeatVariant = "RepeatVariant"; + public const string Replay = "Replay"; + public const string Reply = "Reply"; + public const string ReplyAll = "ReplyAll"; + public const string ReplyAllOutline = "ReplyAllOutline"; + public const string ReplyCircle = "ReplyCircle"; + public const string ReplyOutline = "ReplyOutline"; + public const string Reproduction = "Reproduction"; + public const string Resistor = "Resistor"; + public const string ResistorNodes = "ResistorNodes"; + public const string Resize = "Resize"; + public const string ResizeBottomRight = "ResizeBottomRight"; + public const string Responsive = "Responsive"; + public const string Restart = "Restart"; + public const string RestartAlert = "RestartAlert"; + public const string RestartOff = "RestartOff"; + public const string Restore = "Restore"; + public const string RestoreAlert = "RestoreAlert"; + public const string Rewind = "Rewind"; + public const string Rewind10 = "Rewind10"; + public const string Rewind30 = "Rewind30"; + public const string Rewind5 = "Rewind5"; + public const string Rewind60 = "Rewind60"; + public const string RewindOutline = "RewindOutline"; + public const string Rhombus = "Rhombus"; + public const string RhombusMedium = "RhombusMedium"; + public const string RhombusMediumOutline = "RhombusMediumOutline"; + public const string RhombusOutline = "RhombusOutline"; + public const string RhombusSplit = "RhombusSplit"; + public const string RhombusSplitOutline = "RhombusSplitOutline"; + public const string Ribbon = "Ribbon"; + public const string Rice = "Rice"; + public const string Rickshaw = "Rickshaw"; + public const string RickshawElectric = "RickshawElectric"; + public const string Ring = "Ring"; + public const string Rivet = "Rivet"; + public const string Road = "Road"; + public const string RoadVariant = "RoadVariant"; + public const string Robber = "Robber"; + public const string Robot = "Robot"; + public const string RobotAngry = "RobotAngry"; + public const string RobotAngryOutline = "RobotAngryOutline"; + public const string RobotConfused = "RobotConfused"; + public const string RobotConfusedOutline = "RobotConfusedOutline"; + public const string RobotDead = "RobotDead"; + public const string RobotDeadOutline = "RobotDeadOutline"; + public const string RobotExcited = "RobotExcited"; + public const string RobotExcitedOutline = "RobotExcitedOutline"; + public const string RobotHappy = "RobotHappy"; + public const string RobotHappyOutline = "RobotHappyOutline"; + public const string RobotIndustrial = "RobotIndustrial"; + public const string RobotLove = "RobotLove"; + public const string RobotLoveOutline = "RobotLoveOutline"; + public const string RobotMower = "RobotMower"; + public const string RobotMowerOutline = "RobotMowerOutline"; + public const string RobotOff = "RobotOff"; + public const string RobotOffOutline = "RobotOffOutline"; + public const string RobotOutline = "RobotOutline"; + public const string RobotVacuum = "RobotVacuum"; + public const string RobotVacuumVariant = "RobotVacuumVariant"; + public const string Rocket = "Rocket"; + public const string RocketLaunch = "RocketLaunch"; + public const string RocketLaunchOutline = "RocketLaunchOutline"; + public const string RocketOutline = "RocketOutline"; + public const string Rodent = "Rodent"; + public const string Rollerblade = "Rollerblade"; + public const string RollerbladeOff = "RollerbladeOff"; + public const string RollerSkate = "RollerSkate"; + public const string RollerSkateOff = "RollerSkateOff"; + public const string Rollupjs = "Rollupjs"; + public const string RomanNumeral1 = "RomanNumeral1"; + public const string RomanNumeral10 = "RomanNumeral10"; + public const string RomanNumeral2 = "RomanNumeral2"; + public const string RomanNumeral3 = "RomanNumeral3"; + public const string RomanNumeral4 = "RomanNumeral4"; + public const string RomanNumeral5 = "RomanNumeral5"; + public const string RomanNumeral6 = "RomanNumeral6"; + public const string RomanNumeral7 = "RomanNumeral7"; + public const string RomanNumeral8 = "RomanNumeral8"; + public const string RomanNumeral9 = "RomanNumeral9"; + public const string RoomService = "RoomService"; + public const string RoomServiceOutline = "RoomServiceOutline"; + public const string Rotate3d = "Rotate3d"; + public const string Rotate3dVariant = "Rotate3dVariant"; + public const string RotateLeft = "RotateLeft"; + public const string RotateLeftVariant = "RotateLeftVariant"; + public const string RotateOrbit = "RotateOrbit"; + public const string RotateRight = "RotateRight"; + public const string RotateRightVariant = "RotateRightVariant"; + public const string RoundedCorner = "RoundedCorner"; + public const string Router = "Router"; + public const string RouterNetwork = "RouterNetwork"; + public const string RouterWireless = "RouterWireless"; + public const string RouterWirelessOff = "RouterWirelessOff"; + public const string RouterWirelessSettings = "RouterWirelessSettings"; + public const string Routes = "Routes"; + public const string RoutesClock = "RoutesClock"; + public const string Rowing = "Rowing"; + public const string Rss = "Rss"; + public const string RssBox = "RssBox"; + public const string RssOff = "RssOff"; + public const string Rug = "Rug"; + public const string Rugby = "Rugby"; + public const string Ruler = "Ruler"; + public const string RulerSquare = "RulerSquare"; + public const string RulerSquareCompass = "RulerSquareCompass"; + public const string Run = "Run"; + public const string RunFast = "RunFast"; + public const string RvTruck = "RvTruck"; + public const string Sack = "Sack"; + public const string SackPercent = "SackPercent"; + public const string Safe = "Safe"; + public const string SafeSquare = "SafeSquare"; + public const string SafeSquareOutline = "SafeSquareOutline"; + public const string SafetyGoggles = "SafetyGoggles"; + public const string SailBoat = "SailBoat"; + public const string Sale = "Sale"; + public const string Salesforce = "Salesforce"; + public const string Sass = "Sass"; + public const string Satellite = "Satellite"; + public const string SatelliteUplink = "SatelliteUplink"; + public const string SatelliteVariant = "SatelliteVariant"; + public const string Sausage = "Sausage"; + public const string SausageOff = "SausageOff"; + public const string SawBlade = "SawBlade"; + public const string SawtoothWave = "SawtoothWave"; + public const string Saxophone = "Saxophone"; + public const string Scale = "Scale"; + public const string ScaleBalance = "ScaleBalance"; + public const string ScaleBathroom = "ScaleBathroom"; + public const string ScaleOff = "ScaleOff"; + public const string ScanHelper = "ScanHelper"; + public const string Scanner = "Scanner"; + public const string ScannerOff = "ScannerOff"; + public const string ScatterPlot = "ScatterPlot"; + public const string ScatterPlotOutline = "ScatterPlotOutline"; + public const string School = "School"; + public const string SchoolOutline = "SchoolOutline"; + public const string ScissorsCutting = "ScissorsCutting"; + public const string Scooter = "Scooter"; + public const string ScooterElectric = "ScooterElectric"; + public const string Scoreboard = "Scoreboard"; + public const string ScoreboardOutline = "ScoreboardOutline"; + public const string ScreenRotation = "ScreenRotation"; + public const string ScreenRotationLock = "ScreenRotationLock"; + public const string Screwdriver = "Screwdriver"; + public const string ScrewFlatTop = "ScrewFlatTop"; + public const string ScrewLag = "ScrewLag"; + public const string ScrewMachineFlatTop = "ScrewMachineFlatTop"; + public const string ScrewMachineRoundTop = "ScrewMachineRoundTop"; + public const string ScrewRoundTop = "ScrewRoundTop"; + public const string Script = "Script"; + public const string ScriptOutline = "ScriptOutline"; + public const string ScriptText = "ScriptText"; + public const string ScriptTextKey = "ScriptTextKey"; + public const string ScriptTextKeyOutline = "ScriptTextKeyOutline"; + public const string ScriptTextOutline = "ScriptTextOutline"; + public const string ScriptTextPlay = "ScriptTextPlay"; + public const string ScriptTextPlayOutline = "ScriptTextPlayOutline"; + public const string Sd = "Sd"; + public const string Seal = "Seal"; + public const string SealVariant = "SealVariant"; + public const string SearchWeb = "SearchWeb"; + public const string Seat = "Seat"; + public const string Seatbelt = "Seatbelt"; + public const string SeatFlat = "SeatFlat"; + public const string SeatFlatAngled = "SeatFlatAngled"; + public const string SeatIndividualSuite = "SeatIndividualSuite"; + public const string SeatLegroomExtra = "SeatLegroomExtra"; + public const string SeatLegroomNormal = "SeatLegroomNormal"; + public const string SeatLegroomReduced = "SeatLegroomReduced"; + public const string SeatOutline = "SeatOutline"; + public const string SeatPassenger = "SeatPassenger"; + public const string SeatReclineExtra = "SeatReclineExtra"; + public const string SeatReclineNormal = "SeatReclineNormal"; + public const string Security = "Security"; + public const string SecurityNetwork = "SecurityNetwork"; + public const string Seed = "Seed"; + public const string SeedOff = "SeedOff"; + public const string SeedOffOutline = "SeedOffOutline"; + public const string SeedOutline = "SeedOutline"; + public const string Seesaw = "Seesaw"; + public const string Segment = "Segment"; + public const string Select = "Select"; + public const string SelectAll = "SelectAll"; + public const string SelectColor = "SelectColor"; + public const string SelectCompare = "SelectCompare"; + public const string SelectDrag = "SelectDrag"; + public const string SelectGroup = "SelectGroup"; + public const string SelectInverse = "SelectInverse"; + public const string Selection = "Selection"; + public const string SelectionDrag = "SelectionDrag"; + public const string SelectionEllipse = "SelectionEllipse"; + public const string SelectionEllipseArrowInside = "SelectionEllipseArrowInside"; + public const string SelectionEllipseRemove = "SelectionEllipseRemove"; + public const string SelectionMarker = "SelectionMarker"; + public const string SelectionMultiple = "SelectionMultiple"; + public const string SelectionMultipleMarker = "SelectionMultipleMarker"; + public const string SelectionOff = "SelectionOff"; + public const string SelectionRemove = "SelectionRemove"; + public const string SelectionSearch = "SelectionSearch"; + public const string SelectMarker = "SelectMarker"; + public const string SelectMultiple = "SelectMultiple"; + public const string SelectMultipleMarker = "SelectMultipleMarker"; + public const string SelectOff = "SelectOff"; + public const string SelectPlace = "SelectPlace"; + public const string SelectRemove = "SelectRemove"; + public const string SelectSearch = "SelectSearch"; + public const string SemanticWeb = "SemanticWeb"; + public const string Send = "Send"; + public const string SendCheck = "SendCheck"; + public const string SendCheckOutline = "SendCheckOutline"; + public const string SendCircle = "SendCircle"; + public const string SendCircleOutline = "SendCircleOutline"; + public const string SendClock = "SendClock"; + public const string SendClockOutline = "SendClockOutline"; + public const string SendLock = "SendLock"; + public const string SendLockOutline = "SendLockOutline"; + public const string SendOutline = "SendOutline"; + public const string SerialPort = "SerialPort"; + public const string Server = "Server"; + public const string ServerMinus = "ServerMinus"; + public const string ServerNetwork = "ServerNetwork"; + public const string ServerNetworkOff = "ServerNetworkOff"; + public const string ServerOff = "ServerOff"; + public const string ServerPlus = "ServerPlus"; + public const string ServerRemove = "ServerRemove"; + public const string ServerSecurity = "ServerSecurity"; + public const string SetAll = "SetAll"; + public const string SetCenter = "SetCenter"; + public const string SetCenterRight = "SetCenterRight"; + public const string SetLeft = "SetLeft"; + public const string SetLeftCenter = "SetLeftCenter"; + public const string SetLeftRight = "SetLeftRight"; + public const string SetMerge = "SetMerge"; + public const string SetNone = "SetNone"; + public const string SetRight = "SetRight"; + public const string SetSplit = "SetSplit"; + public const string SetSquare = "SetSquare"; + public const string SettingsHelper = "SettingsHelper"; + public const string SetTopBox = "SetTopBox"; + public const string Shaker = "Shaker"; + public const string ShakerOutline = "ShakerOutline"; + public const string Shape = "Shape"; + public const string ShapeCirclePlus = "ShapeCirclePlus"; + public const string ShapeOutline = "ShapeOutline"; + public const string ShapeOvalPlus = "ShapeOvalPlus"; + public const string ShapePlus = "ShapePlus"; + public const string ShapePolygonPlus = "ShapePolygonPlus"; + public const string ShapeRectanglePlus = "ShapeRectanglePlus"; + public const string ShapeSquarePlus = "ShapeSquarePlus"; + public const string ShapeSquareRoundedPlus = "ShapeSquareRoundedPlus"; + public const string Share = "Share"; + public const string ShareAll = "ShareAll"; + public const string ShareAllOutline = "ShareAllOutline"; + public const string ShareCircle = "ShareCircle"; + public const string ShareOff = "ShareOff"; + public const string ShareOffOutline = "ShareOffOutline"; + public const string ShareOutline = "ShareOutline"; + public const string ShareVariant = "ShareVariant"; + public const string ShareVariantOutline = "ShareVariantOutline"; + public const string Shark = "Shark"; + public const string SharkFin = "SharkFin"; + public const string SharkFinOutline = "SharkFinOutline"; + public const string SharkOff = "SharkOff"; + public const string Sheep = "Sheep"; + public const string Shield = "Shield"; + public const string ShieldAccount = "ShieldAccount"; + public const string ShieldAccountOutline = "ShieldAccountOutline"; + public const string ShieldAccountVariant = "ShieldAccountVariant"; + public const string ShieldAccountVariantOutline = "ShieldAccountVariantOutline"; + public const string ShieldAirplane = "ShieldAirplane"; + public const string ShieldAirplaneOutline = "ShieldAirplaneOutline"; + public const string ShieldAlert = "ShieldAlert"; + public const string ShieldAlertOutline = "ShieldAlertOutline"; + public const string ShieldBug = "ShieldBug"; + public const string ShieldBugOutline = "ShieldBugOutline"; + public const string ShieldCar = "ShieldCar"; + public const string ShieldCheck = "ShieldCheck"; + public const string ShieldCheckOutline = "ShieldCheckOutline"; + public const string ShieldCross = "ShieldCross"; + public const string ShieldCrossOutline = "ShieldCrossOutline"; + public const string ShieldCrown = "ShieldCrown"; + public const string ShieldCrownOutline = "ShieldCrownOutline"; + public const string ShieldEdit = "ShieldEdit"; + public const string ShieldEditOutline = "ShieldEditOutline"; + public const string ShieldHalf = "ShieldHalf"; + public const string ShieldHalfFull = "ShieldHalfFull"; + public const string ShieldHome = "ShieldHome"; + public const string ShieldHomeOutline = "ShieldHomeOutline"; + public const string ShieldKey = "ShieldKey"; + public const string ShieldKeyOutline = "ShieldKeyOutline"; + public const string ShieldLinkVariant = "ShieldLinkVariant"; + public const string ShieldLinkVariantOutline = "ShieldLinkVariantOutline"; + public const string ShieldLock = "ShieldLock"; + public const string ShieldLockOutline = "ShieldLockOutline"; + public const string ShieldMoon = "ShieldMoon"; + public const string ShieldMoonOutline = "ShieldMoonOutline"; + public const string ShieldOff = "ShieldOff"; + public const string ShieldOffOutline = "ShieldOffOutline"; + public const string ShieldOutline = "ShieldOutline"; + public const string ShieldPlus = "ShieldPlus"; + public const string ShieldPlusOutline = "ShieldPlusOutline"; + public const string ShieldRefresh = "ShieldRefresh"; + public const string ShieldRefreshOutline = "ShieldRefreshOutline"; + public const string ShieldRemove = "ShieldRemove"; + public const string ShieldRemoveOutline = "ShieldRemoveOutline"; + public const string ShieldSearch = "ShieldSearch"; + public const string ShieldStar = "ShieldStar"; + public const string ShieldStarOutline = "ShieldStarOutline"; + public const string ShieldSun = "ShieldSun"; + public const string ShieldSunOutline = "ShieldSunOutline"; + public const string ShieldSword = "ShieldSword"; + public const string ShieldSwordOutline = "ShieldSwordOutline"; + public const string ShieldSync = "ShieldSync"; + public const string ShieldSyncOutline = "ShieldSyncOutline"; + public const string Shimmer = "Shimmer"; + public const string ShippingPallet = "ShippingPallet"; + public const string ShipWheel = "ShipWheel"; + public const string ShoeBallet = "ShoeBallet"; + public const string ShoeCleat = "ShoeCleat"; + public const string ShoeFormal = "ShoeFormal"; + public const string ShoeHeel = "ShoeHeel"; + public const string ShoePrint = "ShoePrint"; + public const string ShoeSneaker = "ShoeSneaker"; + public const string Shopping = "Shopping"; + public const string ShoppingMusic = "ShoppingMusic"; + public const string ShoppingOutline = "ShoppingOutline"; + public const string ShoppingSearch = "ShoppingSearch"; + public const string Shore = "Shore"; + public const string Shovel = "Shovel"; + public const string ShovelOff = "ShovelOff"; + public const string Shower = "Shower"; + public const string ShowerHead = "ShowerHead"; + public const string Shredder = "Shredder"; + public const string Shuffle = "Shuffle"; + public const string ShuffleDisabled = "ShuffleDisabled"; + public const string ShuffleVariant = "ShuffleVariant"; + public const string Shuriken = "Shuriken"; + public const string Sickle = "Sickle"; + public const string Sigma = "Sigma"; + public const string SigmaLower = "SigmaLower"; + public const string Signal = "Signal"; + public const string Signal2g = "Signal2g"; + public const string Signal3g = "Signal3g"; + public const string Signal4g = "Signal4g"; + public const string Signal5g = "Signal5g"; + public const string SignalCellular1 = "SignalCellular1"; + public const string SignalCellular2 = "SignalCellular2"; + public const string SignalCellular3 = "SignalCellular3"; + public const string SignalCellularOutline = "SignalCellularOutline"; + public const string SignalDistanceVariant = "SignalDistanceVariant"; + public const string SignalHspa = "SignalHspa"; + public const string SignalHspaPlus = "SignalHspaPlus"; + public const string SignalOff = "SignalOff"; + public const string SignalVariant = "SignalVariant"; + public const string Signature = "Signature"; + public const string SignatureFreehand = "SignatureFreehand"; + public const string SignatureImage = "SignatureImage"; + public const string SignatureText = "SignatureText"; + public const string SignCaution = "SignCaution"; + public const string SignDirection = "SignDirection"; + public const string SignDirectionMinus = "SignDirectionMinus"; + public const string SignDirectionPlus = "SignDirectionPlus"; + public const string SignDirectionRemove = "SignDirectionRemove"; + public const string SignPole = "SignPole"; + public const string SignRealEstate = "SignRealEstate"; + public const string SignText = "SignText"; + public const string Silo = "Silo"; + public const string Silverware = "Silverware"; + public const string SilverwareClean = "SilverwareClean"; + public const string SilverwareFork = "SilverwareFork"; + public const string SilverwareForkKnife = "SilverwareForkKnife"; + public const string SilverwareSpoon = "SilverwareSpoon"; + public const string SilverwareVariant = "SilverwareVariant"; + public const string Sim = "Sim"; + public const string SimAlert = "SimAlert"; + public const string SimAlertOutline = "SimAlertOutline"; + public const string SimOff = "SimOff"; + public const string SimOffOutline = "SimOffOutline"; + public const string SimOutline = "SimOutline"; + public const string SimpleIcons = "SimpleIcons"; + public const string SinaWeibo = "SinaWeibo"; + public const string SineWave = "SineWave"; + public const string Sitemap = "Sitemap"; + public const string SizeL = "SizeL"; + public const string SizeM = "SizeM"; + public const string SizeS = "SizeS"; + public const string SizeXl = "SizeXl"; + public const string SizeXs = "SizeXs"; + public const string SizeXxl = "SizeXxl"; + public const string SizeXxs = "SizeXxs"; + public const string SizeXxxl = "SizeXxxl"; + public const string Skate = "Skate"; + public const string Skateboard = "Skateboard"; + public const string Skateboarding = "Skateboarding"; + public const string SkateOff = "SkateOff"; + public const string SkewLess = "SkewLess"; + public const string SkewMore = "SkewMore"; + public const string Ski = "Ski"; + public const string SkiCrossCountry = "SkiCrossCountry"; + public const string SkipBackward = "SkipBackward"; + public const string SkipBackwardOutline = "SkipBackwardOutline"; + public const string SkipForward = "SkipForward"; + public const string SkipForwardOutline = "SkipForwardOutline"; + public const string SkipNext = "SkipNext"; + public const string SkipNextCircle = "SkipNextCircle"; + public const string SkipNextCircleOutline = "SkipNextCircleOutline"; + public const string SkipNextOutline = "SkipNextOutline"; + public const string SkipPrevious = "SkipPrevious"; + public const string SkipPreviousCircle = "SkipPreviousCircle"; + public const string SkipPreviousCircleOutline = "SkipPreviousCircleOutline"; + public const string SkipPreviousOutline = "SkipPreviousOutline"; + public const string SkiWater = "SkiWater"; + public const string Skull = "Skull"; + public const string SkullCrossbones = "SkullCrossbones"; + public const string SkullCrossbonesOutline = "SkullCrossbonesOutline"; + public const string SkullOutline = "SkullOutline"; + public const string SkullScan = "SkullScan"; + public const string SkullScanOutline = "SkullScanOutline"; + public const string Skype = "Skype"; + public const string SkypeBusiness = "SkypeBusiness"; + public const string Slack = "Slack"; + public const string SlashForward = "SlashForward"; + public const string SlashForwardBox = "SlashForwardBox"; + public const string Sledding = "Sledding"; + public const string Sleep = "Sleep"; + public const string SleepOff = "SleepOff"; + public const string Slide = "Slide"; + public const string SlopeDownhill = "SlopeDownhill"; + public const string SlopeUphill = "SlopeUphill"; + public const string SlotMachine = "SlotMachine"; + public const string SlotMachineOutline = "SlotMachineOutline"; + public const string SmartCard = "SmartCard"; + public const string SmartCardOff = "SmartCardOff"; + public const string SmartCardOffOutline = "SmartCardOffOutline"; + public const string SmartCardOutline = "SmartCardOutline"; + public const string SmartCardReader = "SmartCardReader"; + public const string SmartCardReaderOutline = "SmartCardReaderOutline"; + public const string Smog = "Smog"; + public const string Smoke = "Smoke"; + public const string SmokeDetector = "SmokeDetector"; + public const string SmokeDetectorOff = "SmokeDetectorOff"; + public const string SmokeDetectorOffOutline = "SmokeDetectorOffOutline"; + public const string SmokeDetectorOutline = "SmokeDetectorOutline"; + public const string SmokeDetectorVariant = "SmokeDetectorVariant"; + public const string SmokeDetectorVariantOff = "SmokeDetectorVariantOff"; + public const string Smoking = "Smoking"; + public const string SmokingOff = "SmokingOff"; + public const string SmokingPipe = "SmokingPipe"; + public const string SmokingPipeOff = "SmokingPipeOff"; + public const string Snail = "Snail"; + public const string Snake = "Snake"; + public const string Snapchat = "Snapchat"; + public const string Snowboard = "Snowboard"; + public const string Snowflake = "Snowflake"; + public const string SnowflakeAlert = "SnowflakeAlert"; + public const string SnowflakeMelt = "SnowflakeMelt"; + public const string SnowflakeOff = "SnowflakeOff"; + public const string SnowflakeVariant = "SnowflakeVariant"; + public const string Snowman = "Snowman"; + public const string Snowmobile = "Snowmobile"; + public const string Soccer = "Soccer"; + public const string SoccerField = "SoccerField"; + public const string SocialDistance2Meters = "SocialDistance2Meters"; + public const string SocialDistance6Feet = "SocialDistance6Feet"; + public const string Sofa = "Sofa"; + public const string SofaOutline = "SofaOutline"; + public const string SofaSingle = "SofaSingle"; + public const string SofaSingleOutline = "SofaSingleOutline"; + public const string SolarPanel = "SolarPanel"; + public const string SolarPanelLarge = "SolarPanelLarge"; + public const string SolarPower = "SolarPower"; + public const string SolderingIron = "SolderingIron"; + public const string Solid = "Solid"; + public const string SonyPlaystation = "SonyPlaystation"; + public const string Sort = "Sort"; + public const string SortAlphabeticalAscending = "SortAlphabeticalAscending"; + public const string SortAlphabeticalAscendingVariant = "SortAlphabeticalAscendingVariant"; + public const string SortAlphabeticalDescending = "SortAlphabeticalDescending"; + public const string SortAlphabeticalDescendingVariant = "SortAlphabeticalDescendingVariant"; + public const string SortAlphabeticalVariant = "SortAlphabeticalVariant"; + public const string SortAscending = "SortAscending"; + public const string SortBoolAscending = "SortBoolAscending"; + public const string SortBoolAscendingVariant = "SortBoolAscendingVariant"; + public const string SortBoolDescending = "SortBoolDescending"; + public const string SortBoolDescendingVariant = "SortBoolDescendingVariant"; + public const string SortCalendarAscending = "SortCalendarAscending"; + public const string SortCalendarDescending = "SortCalendarDescending"; + public const string SortClockAscending = "SortClockAscending"; + public const string SortClockAscendingOutline = "SortClockAscendingOutline"; + public const string SortClockDescending = "SortClockDescending"; + public const string SortClockDescendingOutline = "SortClockDescendingOutline"; + public const string SortDescending = "SortDescending"; + public const string SortNumericAscending = "SortNumericAscending"; + public const string SortNumericAscendingVariant = "SortNumericAscendingVariant"; + public const string SortNumericDescending = "SortNumericDescending"; + public const string SortNumericDescendingVariant = "SortNumericDescendingVariant"; + public const string SortNumericVariant = "SortNumericVariant"; + public const string SortReverseVariant = "SortReverseVariant"; + public const string SortVariant = "SortVariant"; + public const string SortVariantLock = "SortVariantLock"; + public const string SortVariantLockOpen = "SortVariantLockOpen"; + public const string SortVariantRemove = "SortVariantRemove"; + public const string Soundbar = "Soundbar"; + public const string Soundcloud = "Soundcloud"; + public const string SourceBranch = "SourceBranch"; + public const string SourceBranchCheck = "SourceBranchCheck"; + public const string SourceBranchMinus = "SourceBranchMinus"; + public const string SourceBranchPlus = "SourceBranchPlus"; + public const string SourceBranchRefresh = "SourceBranchRefresh"; + public const string SourceBranchRemove = "SourceBranchRemove"; + public const string SourceBranchSync = "SourceBranchSync"; + public const string SourceCommit = "SourceCommit"; + public const string SourceCommitEnd = "SourceCommitEnd"; + public const string SourceCommitEndLocal = "SourceCommitEndLocal"; + public const string SourceCommitLocal = "SourceCommitLocal"; + public const string SourceCommitNextLocal = "SourceCommitNextLocal"; + public const string SourceCommitStart = "SourceCommitStart"; + public const string SourceCommitStartNextLocal = "SourceCommitStartNextLocal"; + public const string SourceFork = "SourceFork"; + public const string SourceMerge = "SourceMerge"; + public const string SourcePull = "SourcePull"; + public const string SourceRepository = "SourceRepository"; + public const string SourceRepositoryMultiple = "SourceRepositoryMultiple"; + public const string SoySauce = "SoySauce"; + public const string SoySauceOff = "SoySauceOff"; + public const string Spa = "Spa"; + public const string SpaceInvaders = "SpaceInvaders"; + public const string SpaceStation = "SpaceStation"; + public const string Spade = "Spade"; + public const string SpaOutline = "SpaOutline"; + public const string Speaker = "Speaker"; + public const string SpeakerBluetooth = "SpeakerBluetooth"; + public const string SpeakerMultiple = "SpeakerMultiple"; + public const string SpeakerOff = "SpeakerOff"; + public const string SpeakerWireless = "SpeakerWireless"; + public const string Spear = "Spear"; + public const string Speedometer = "Speedometer"; + public const string SpeedometerMedium = "SpeedometerMedium"; + public const string SpeedometerSlow = "SpeedometerSlow"; + public const string Spellcheck = "Spellcheck"; + public const string Spider = "Spider"; + public const string SpiderThread = "SpiderThread"; + public const string SpiderWeb = "SpiderWeb"; + public const string SpiritLevel = "SpiritLevel"; + public const string SpoonSugar = "SpoonSugar"; + public const string Spotify = "Spotify"; + public const string Spotlight = "Spotlight"; + public const string SpotlightBeam = "SpotlightBeam"; + public const string Spray = "Spray"; + public const string SprayBottle = "SprayBottle"; + public const string Sprinkler = "Sprinkler"; + public const string SprinklerVariant = "SprinklerVariant"; + public const string Sprout = "Sprout"; + public const string SproutOutline = "SproutOutline"; + public const string Square = "Square"; + public const string SquareCircle = "SquareCircle"; + public const string SquareEditOutline = "SquareEditOutline"; + public const string SquareMedium = "SquareMedium"; + public const string SquareMediumOutline = "SquareMediumOutline"; + public const string SquareOff = "SquareOff"; + public const string SquareOffOutline = "SquareOffOutline"; + public const string SquareOpacity = "SquareOpacity"; + public const string SquareOutline = "SquareOutline"; + public const string SquareRoot = "SquareRoot"; + public const string SquareRootBox = "SquareRootBox"; + public const string SquareRounded = "SquareRounded"; + public const string SquareRoundedOutline = "SquareRoundedOutline"; + public const string SquareSmall = "SquareSmall"; + public const string SquareWave = "SquareWave"; + public const string Squeegee = "Squeegee"; + public const string Ssh = "Ssh"; + public const string StackExchange = "StackExchange"; + public const string StackOverflow = "StackOverflow"; + public const string Stackpath = "Stackpath"; + public const string Stadium = "Stadium"; + public const string StadiumVariant = "StadiumVariant"; + public const string Stairs = "Stairs"; + public const string StairsBox = "StairsBox"; + public const string StairsDown = "StairsDown"; + public const string StairsUp = "StairsUp"; + public const string Stamper = "Stamper"; + public const string StandardDefinition = "StandardDefinition"; + public const string Star = "Star"; + public const string StarBox = "StarBox"; + public const string StarBoxMultiple = "StarBoxMultiple"; + public const string StarBoxMultipleOutline = "StarBoxMultipleOutline"; + public const string StarBoxOutline = "StarBoxOutline"; + public const string StarCheck = "StarCheck"; + public const string StarCheckOutline = "StarCheckOutline"; + public const string StarCircle = "StarCircle"; + public const string StarCircleOutline = "StarCircleOutline"; + public const string StarCog = "StarCog"; + public const string StarCogOutline = "StarCogOutline"; + public const string StarCrescent = "StarCrescent"; + public const string StarDavid = "StarDavid"; + public const string StarFace = "StarFace"; + public const string StarFourPoints = "StarFourPoints"; + public const string StarFourPointsOutline = "StarFourPointsOutline"; + public const string StarHalf = "StarHalf"; + public const string StarHalfFull = "StarHalfFull"; + public const string StarMinus = "StarMinus"; + public const string StarMinusOutline = "StarMinusOutline"; + public const string StarOff = "StarOff"; + public const string StarOffOutline = "StarOffOutline"; + public const string StarOutline = "StarOutline"; + public const string StarPlus = "StarPlus"; + public const string StarPlusOutline = "StarPlusOutline"; + public const string StarRemove = "StarRemove"; + public const string StarRemoveOutline = "StarRemoveOutline"; + public const string StarSettings = "StarSettings"; + public const string StarSettingsOutline = "StarSettingsOutline"; + public const string StarShooting = "StarShooting"; + public const string StarShootingOutline = "StarShootingOutline"; + public const string StarThreePoints = "StarThreePoints"; + public const string StarThreePointsOutline = "StarThreePointsOutline"; + public const string StateMachine = "StateMachine"; + public const string Steam = "Steam"; + public const string Steering = "Steering"; + public const string SteeringOff = "SteeringOff"; + public const string StepBackward = "StepBackward"; + public const string StepBackward2 = "StepBackward2"; + public const string StepForward = "StepForward"; + public const string StepForward2 = "StepForward2"; + public const string Stethoscope = "Stethoscope"; + public const string Sticker = "Sticker"; + public const string StickerAlert = "StickerAlert"; + public const string StickerAlertOutline = "StickerAlertOutline"; + public const string StickerCheck = "StickerCheck"; + public const string StickerCheckOutline = "StickerCheckOutline"; + public const string StickerCircleOutline = "StickerCircleOutline"; + public const string StickerEmoji = "StickerEmoji"; + public const string StickerMinus = "StickerMinus"; + public const string StickerMinusOutline = "StickerMinusOutline"; + public const string StickerOutline = "StickerOutline"; + public const string StickerPlus = "StickerPlus"; + public const string StickerPlusOutline = "StickerPlusOutline"; + public const string StickerRemove = "StickerRemove"; + public const string StickerRemoveOutline = "StickerRemoveOutline"; + public const string StickerText = "StickerText"; + public const string StickerTextOutline = "StickerTextOutline"; + public const string Stocking = "Stocking"; + public const string Stomach = "Stomach"; + public const string Stop = "Stop"; + public const string StopCircle = "StopCircle"; + public const string StopCircleOutline = "StopCircleOutline"; + public const string Store = "Store"; + public const string Store24Hour = "Store24Hour"; + public const string StoreAlert = "StoreAlert"; + public const string StoreAlertOutline = "StoreAlertOutline"; + public const string StoreCheck = "StoreCheck"; + public const string StoreCheckOutline = "StoreCheckOutline"; + public const string StoreClock = "StoreClock"; + public const string StoreClockOutline = "StoreClockOutline"; + public const string StoreCog = "StoreCog"; + public const string StoreCogOutline = "StoreCogOutline"; + public const string StoreEdit = "StoreEdit"; + public const string StoreEditOutline = "StoreEditOutline"; + public const string Storefront = "Storefront"; + public const string StorefrontOutline = "StorefrontOutline"; + public const string StoreMarker = "StoreMarker"; + public const string StoreMarkerOutline = "StoreMarkerOutline"; + public const string StoreMinus = "StoreMinus"; + public const string StoreMinusOutline = "StoreMinusOutline"; + public const string StoreOff = "StoreOff"; + public const string StoreOffOutline = "StoreOffOutline"; + public const string StoreOutline = "StoreOutline"; + public const string StorePlus = "StorePlus"; + public const string StorePlusOutline = "StorePlusOutline"; + public const string StoreRemove = "StoreRemove"; + public const string StoreRemoveOutline = "StoreRemoveOutline"; + public const string StoreSearch = "StoreSearch"; + public const string StoreSearchOutline = "StoreSearchOutline"; + public const string StoreSettings = "StoreSettings"; + public const string StoreSettingsOutline = "StoreSettingsOutline"; + public const string Stove = "Stove"; + public const string Strategy = "Strategy"; + public const string StretchToPage = "StretchToPage"; + public const string StretchToPageOutline = "StretchToPageOutline"; + public const string StringLights = "StringLights"; + public const string StringLightsOff = "StringLightsOff"; + public const string SubdirectoryArrowLeft = "SubdirectoryArrowLeft"; + public const string SubdirectoryArrowRight = "SubdirectoryArrowRight"; + public const string Submarine = "Submarine"; + public const string Subtitles = "Subtitles"; + public const string SubtitlesOutline = "SubtitlesOutline"; + public const string Subway = "Subway"; + public const string SubwayAlertVariant = "SubwayAlertVariant"; + public const string SubwayVariant = "SubwayVariant"; + public const string Summit = "Summit"; + public const string Sunglasses = "Sunglasses"; + public const string SunSnowflake = "SunSnowflake"; + public const string SunThermometer = "SunThermometer"; + public const string SunThermometerOutline = "SunThermometerOutline"; + public const string SunWireless = "SunWireless"; + public const string SunWirelessOutline = "SunWirelessOutline"; + public const string Surfing = "Surfing"; + public const string SurroundSound = "SurroundSound"; + public const string SurroundSound20 = "SurroundSound20"; + public const string SurroundSound21 = "SurroundSound21"; + public const string SurroundSound31 = "SurroundSound31"; + public const string SurroundSound51 = "SurroundSound51"; + public const string SurroundSound512 = "SurroundSound512"; + public const string SurroundSound71 = "SurroundSound71"; + public const string Svg = "Svg"; + public const string SwapHorizontal = "SwapHorizontal"; + public const string SwapHorizontalBold = "SwapHorizontalBold"; + public const string SwapHorizontalCircle = "SwapHorizontalCircle"; + public const string SwapHorizontalCircleOutline = "SwapHorizontalCircleOutline"; + public const string SwapHorizontalVariant = "SwapHorizontalVariant"; + public const string SwapVertical = "SwapVertical"; + public const string SwapVerticalBold = "SwapVerticalBold"; + public const string SwapVerticalCircle = "SwapVerticalCircle"; + public const string SwapVerticalCircleOutline = "SwapVerticalCircleOutline"; + public const string SwapVerticalVariant = "SwapVerticalVariant"; + public const string Swim = "Swim"; + public const string Switch = "Switch"; + public const string Sword = "Sword"; + public const string SwordCross = "SwordCross"; + public const string SyllabaryHangul = "SyllabaryHangul"; + public const string SyllabaryHiragana = "SyllabaryHiragana"; + public const string SyllabaryKatakana = "SyllabaryKatakana"; + public const string SyllabaryKatakanaHalfwidth = "SyllabaryKatakanaHalfwidth"; + public const string Symbol = "Symbol"; + public const string Symfony = "Symfony"; + public const string Sync = "Sync"; + public const string SyncAlert = "SyncAlert"; + public const string SyncCircle = "SyncCircle"; + public const string SyncOff = "SyncOff"; + public const string Tab = "Tab"; + public const string Table = "Table"; + public const string TableAccount = "TableAccount"; + public const string TableAlert = "TableAlert"; + public const string TableArrowDown = "TableArrowDown"; + public const string TableArrowLeft = "TableArrowLeft"; + public const string TableArrowRight = "TableArrowRight"; + public const string TableArrowUp = "TableArrowUp"; + public const string TableBorder = "TableBorder"; + public const string TableCancel = "TableCancel"; + public const string TableChair = "TableChair"; + public const string TableCheck = "TableCheck"; + public const string TableClock = "TableClock"; + public const string TableCog = "TableCog"; + public const string TableColumn = "TableColumn"; + public const string TableColumnPlusAfter = "TableColumnPlusAfter"; + public const string TableColumnPlusBefore = "TableColumnPlusBefore"; + public const string TableColumnRemove = "TableColumnRemove"; + public const string TableColumnWidth = "TableColumnWidth"; + public const string TableEdit = "TableEdit"; + public const string TableEye = "TableEye"; + public const string TableEyeOff = "TableEyeOff"; + public const string TableFurniture = "TableFurniture"; + public const string TableHeadersEye = "TableHeadersEye"; + public const string TableHeadersEyeOff = "TableHeadersEyeOff"; + public const string TableHeart = "TableHeart"; + public const string TableKey = "TableKey"; + public const string TableLarge = "TableLarge"; + public const string TableLargePlus = "TableLargePlus"; + public const string TableLargeRemove = "TableLargeRemove"; + public const string TableLock = "TableLock"; + public const string TableMergeCells = "TableMergeCells"; + public const string TableMinus = "TableMinus"; + public const string TableMultiple = "TableMultiple"; + public const string TableNetwork = "TableNetwork"; + public const string TableOfContents = "TableOfContents"; + public const string TableOff = "TableOff"; + public const string TablePicnic = "TablePicnic"; + public const string TablePivot = "TablePivot"; + public const string TablePlus = "TablePlus"; + public const string TableRefresh = "TableRefresh"; + public const string TableRemove = "TableRemove"; + public const string TableRow = "TableRow"; + public const string TableRowHeight = "TableRowHeight"; + public const string TableRowPlusAfter = "TableRowPlusAfter"; + public const string TableRowPlusBefore = "TableRowPlusBefore"; + public const string TableRowRemove = "TableRowRemove"; + public const string TableSearch = "TableSearch"; + public const string TableSettings = "TableSettings"; + public const string TableSplitCell = "TableSplitCell"; + public const string TableStar = "TableStar"; + public const string TableSync = "TableSync"; + public const string Tablet = "Tablet"; + public const string TabletAndroid = "TabletAndroid"; + public const string TabletCellphone = "TabletCellphone"; + public const string TabletDashboard = "TabletDashboard"; + public const string TableTennis = "TableTennis"; + public const string TabMinus = "TabMinus"; + public const string TabPlus = "TabPlus"; + public const string TabRemove = "TabRemove"; + public const string TabUnselected = "TabUnselected"; + public const string Taco = "Taco"; + public const string Tag = "Tag"; + public const string TagArrowDown = "TagArrowDown"; + public const string TagArrowDownOutline = "TagArrowDownOutline"; + public const string TagArrowLeft = "TagArrowLeft"; + public const string TagArrowLeftOutline = "TagArrowLeftOutline"; + public const string TagArrowRight = "TagArrowRight"; + public const string TagArrowRightOutline = "TagArrowRightOutline"; + public const string TagArrowUp = "TagArrowUp"; + public const string TagArrowUpOutline = "TagArrowUpOutline"; + public const string TagFaces = "TagFaces"; + public const string TagHeart = "TagHeart"; + public const string TagHeartOutline = "TagHeartOutline"; + public const string TagMinus = "TagMinus"; + public const string TagMinusOutline = "TagMinusOutline"; + public const string TagMultiple = "TagMultiple"; + public const string TagMultipleOutline = "TagMultipleOutline"; + public const string TagOff = "TagOff"; + public const string TagOffOutline = "TagOffOutline"; + public const string TagOutline = "TagOutline"; + public const string TagPlus = "TagPlus"; + public const string TagPlusOutline = "TagPlusOutline"; + public const string TagRemove = "TagRemove"; + public const string TagRemoveOutline = "TagRemoveOutline"; + public const string TagText = "TagText"; + public const string TagTextOutline = "TagTextOutline"; + public const string Tailwind = "Tailwind"; + public const string Tangram = "Tangram"; + public const string Tank = "Tank"; + public const string TankerTruck = "TankerTruck"; + public const string TapeDrive = "TapeDrive"; + public const string TapeMeasure = "TapeMeasure"; + public const string Target = "Target"; + public const string TargetAccount = "TargetAccount"; + public const string TargetVariant = "TargetVariant"; + public const string Taxi = "Taxi"; + public const string Tea = "Tea"; + public const string Teamviewer = "Teamviewer"; + public const string TeaOutline = "TeaOutline"; + public const string TeddyBear = "TeddyBear"; + public const string Telescope = "Telescope"; + public const string Television = "Television"; + public const string TelevisionAmbientLight = "TelevisionAmbientLight"; + public const string TelevisionBox = "TelevisionBox"; + public const string TelevisionClassic = "TelevisionClassic"; + public const string TelevisionClassicOff = "TelevisionClassicOff"; + public const string TelevisionGuide = "TelevisionGuide"; + public const string TelevisionOff = "TelevisionOff"; + public const string TelevisionPause = "TelevisionPause"; + public const string TelevisionPlay = "TelevisionPlay"; + public const string TelevisionShimmer = "TelevisionShimmer"; + public const string TelevisionStop = "TelevisionStop"; + public const string TemperatureCelsius = "TemperatureCelsius"; + public const string TemperatureFahrenheit = "TemperatureFahrenheit"; + public const string TemperatureKelvin = "TemperatureKelvin"; + public const string Tennis = "Tennis"; + public const string TennisBall = "TennisBall"; + public const string Tent = "Tent"; + public const string Terraform = "Terraform"; + public const string Terrain = "Terrain"; + public const string TestTube = "TestTube"; + public const string TestTubeEmpty = "TestTubeEmpty"; + public const string TestTubeOff = "TestTubeOff"; + public const string Text = "Text"; + public const string TextAccount = "TextAccount"; + public const string TextBox = "TextBox"; + public const string TextBoxCheck = "TextBoxCheck"; + public const string TextBoxCheckOutline = "TextBoxCheckOutline"; + public const string TextBoxMinus = "TextBoxMinus"; + public const string TextBoxMinusOutline = "TextBoxMinusOutline"; + public const string TextBoxMultiple = "TextBoxMultiple"; + public const string TextBoxMultipleOutline = "TextBoxMultipleOutline"; + public const string TextBoxOutline = "TextBoxOutline"; + public const string TextBoxPlus = "TextBoxPlus"; + public const string TextBoxPlusOutline = "TextBoxPlusOutline"; + public const string TextBoxRemove = "TextBoxRemove"; + public const string TextBoxRemoveOutline = "TextBoxRemoveOutline"; + public const string TextBoxSearch = "TextBoxSearch"; + public const string TextBoxSearchOutline = "TextBoxSearchOutline"; + public const string TextLong = "TextLong"; + public const string TextRecognition = "TextRecognition"; + public const string TextSearch = "TextSearch"; + public const string TextShadow = "TextShadow"; + public const string TextShort = "TextShort"; + public const string TextToSpeech = "TextToSpeech"; + public const string TextToSpeechOff = "TextToSpeechOff"; + public const string Texture = "Texture"; + public const string TextureBox = "TextureBox"; + public const string Theater = "Theater"; + public const string ThemeLightDark = "ThemeLightDark"; + public const string Thermometer = "Thermometer"; + public const string ThermometerAlert = "ThermometerAlert"; + public const string ThermometerBluetooth = "ThermometerBluetooth"; + public const string ThermometerChevronDown = "ThermometerChevronDown"; + public const string ThermometerChevronUp = "ThermometerChevronUp"; + public const string ThermometerHigh = "ThermometerHigh"; + public const string ThermometerLines = "ThermometerLines"; + public const string ThermometerLow = "ThermometerLow"; + public const string ThermometerMinus = "ThermometerMinus"; + public const string ThermometerOff = "ThermometerOff"; + public const string ThermometerPlus = "ThermometerPlus"; + public const string Thermostat = "Thermostat"; + public const string ThermostatBox = "ThermostatBox"; + public const string ThoughtBubble = "ThoughtBubble"; + public const string ThoughtBubbleOutline = "ThoughtBubbleOutline"; + public const string ThumbDown = "ThumbDown"; + public const string ThumbDownOutline = "ThumbDownOutline"; + public const string ThumbsUpDown = "ThumbsUpDown"; + public const string ThumbUp = "ThumbUp"; + public const string ThumbUpOutline = "ThumbUpOutline"; + public const string Ticket = "Ticket"; + public const string TicketAccount = "TicketAccount"; + public const string TicketConfirmation = "TicketConfirmation"; + public const string TicketConfirmationOutline = "TicketConfirmationOutline"; + public const string TicketOutline = "TicketOutline"; + public const string TicketPercent = "TicketPercent"; + public const string TicketPercentOutline = "TicketPercentOutline"; + public const string Tie = "Tie"; + public const string Tilde = "Tilde"; + public const string TildeOff = "TildeOff"; + public const string Timelapse = "Timelapse"; + public const string Timeline = "Timeline"; + public const string TimelineAlert = "TimelineAlert"; + public const string TimelineAlertOutline = "TimelineAlertOutline"; + public const string TimelineCheck = "TimelineCheck"; + public const string TimelineCheckOutline = "TimelineCheckOutline"; + public const string TimelineClock = "TimelineClock"; + public const string TimelineClockOutline = "TimelineClockOutline"; + public const string TimelineHelp = "TimelineHelp"; + public const string TimelineHelpOutline = "TimelineHelpOutline"; + public const string TimelineMinus = "TimelineMinus"; + public const string TimelineMinusOutline = "TimelineMinusOutline"; + public const string TimelineOutline = "TimelineOutline"; + public const string TimelinePlus = "TimelinePlus"; + public const string TimelinePlusOutline = "TimelinePlusOutline"; + public const string TimelineRemove = "TimelineRemove"; + public const string TimelineRemoveOutline = "TimelineRemoveOutline"; + public const string TimelineText = "TimelineText"; + public const string TimelineTextOutline = "TimelineTextOutline"; + public const string Timer = "Timer"; + public const string Timer10 = "Timer10"; + public const string Timer3 = "Timer3"; + public const string TimerOff = "TimerOff"; + public const string TimerOffOutline = "TimerOffOutline"; + public const string TimerOutline = "TimerOutline"; + public const string TimerSand = "TimerSand"; + public const string TimerSandEmpty = "TimerSandEmpty"; + public const string TimerSandFull = "TimerSandFull"; + public const string Timetable = "Timetable"; + public const string Tire = "Tire"; + public const string Toaster = "Toaster"; + public const string ToasterOff = "ToasterOff"; + public const string ToasterOven = "ToasterOven"; + public const string ToggleSwitch = "ToggleSwitch"; + public const string ToggleSwitchOff = "ToggleSwitchOff"; + public const string ToggleSwitchOffOutline = "ToggleSwitchOffOutline"; + public const string ToggleSwitchOutline = "ToggleSwitchOutline"; + public const string Toilet = "Toilet"; + public const string Toolbox = "Toolbox"; + public const string ToolboxOutline = "ToolboxOutline"; + public const string Tools = "Tools"; + public const string Tooltip = "Tooltip"; + public const string TooltipAccount = "TooltipAccount"; + public const string TooltipCellphone = "TooltipCellphone"; + public const string TooltipCheck = "TooltipCheck"; + public const string TooltipCheckOutline = "TooltipCheckOutline"; + public const string TooltipEdit = "TooltipEdit"; + public const string TooltipEditOutline = "TooltipEditOutline"; + public const string TooltipImage = "TooltipImage"; + public const string TooltipImageOutline = "TooltipImageOutline"; + public const string TooltipMinus = "TooltipMinus"; + public const string TooltipMinusOutline = "TooltipMinusOutline"; + public const string TooltipOutline = "TooltipOutline"; + public const string TooltipPlus = "TooltipPlus"; + public const string TooltipPlusOutline = "TooltipPlusOutline"; + public const string TooltipRemove = "TooltipRemove"; + public const string TooltipRemoveOutline = "TooltipRemoveOutline"; + public const string TooltipText = "TooltipText"; + public const string TooltipTextOutline = "TooltipTextOutline"; + public const string Tooth = "Tooth"; + public const string Toothbrush = "Toothbrush"; + public const string ToothbrushElectric = "ToothbrushElectric"; + public const string ToothbrushPaste = "ToothbrushPaste"; + public const string ToothOutline = "ToothOutline"; + public const string Torch = "Torch"; + public const string Tortoise = "Tortoise"; + public const string Toslink = "Toslink"; + public const string Tournament = "Tournament"; + public const string TowerBeach = "TowerBeach"; + public const string TowerFire = "TowerFire"; + public const string TownHall = "TownHall"; + public const string TowTruck = "TowTruck"; + public const string ToyBrick = "ToyBrick"; + public const string ToyBrickMarker = "ToyBrickMarker"; + public const string ToyBrickMarkerOutline = "ToyBrickMarkerOutline"; + public const string ToyBrickMinus = "ToyBrickMinus"; + public const string ToyBrickMinusOutline = "ToyBrickMinusOutline"; + public const string ToyBrickOutline = "ToyBrickOutline"; + public const string ToyBrickPlus = "ToyBrickPlus"; + public const string ToyBrickPlusOutline = "ToyBrickPlusOutline"; + public const string ToyBrickRemove = "ToyBrickRemove"; + public const string ToyBrickRemoveOutline = "ToyBrickRemoveOutline"; + public const string ToyBrickSearch = "ToyBrickSearch"; + public const string ToyBrickSearchOutline = "ToyBrickSearchOutline"; + public const string TrackLight = "TrackLight"; + public const string Trackpad = "Trackpad"; + public const string TrackpadLock = "TrackpadLock"; + public const string Tractor = "Tractor"; + public const string TractorVariant = "TractorVariant"; + public const string Trademark = "Trademark"; + public const string TrafficCone = "TrafficCone"; + public const string TrafficLight = "TrafficLight"; + public const string TrafficLightOutline = "TrafficLightOutline"; + public const string Train = "Train"; + public const string TrainCar = "TrainCar"; + public const string TrainCarPassenger = "TrainCarPassenger"; + public const string TrainCarPassengerDoor = "TrainCarPassengerDoor"; + public const string TrainCarPassengerDoorOpen = "TrainCarPassengerDoorOpen"; + public const string TrainCarPassengerVariant = "TrainCarPassengerVariant"; + public const string TrainVariant = "TrainVariant"; + public const string Tram = "Tram"; + public const string TramSide = "TramSide"; + public const string Transcribe = "Transcribe"; + public const string TranscribeClose = "TranscribeClose"; + public const string Transfer = "Transfer"; + public const string TransferDown = "TransferDown"; + public const string TransferLeft = "TransferLeft"; + public const string TransferRight = "TransferRight"; + public const string TransferUp = "TransferUp"; + public const string TransitConnection = "TransitConnection"; + public const string TransitConnectionHorizontal = "TransitConnectionHorizontal"; + public const string TransitConnectionVariant = "TransitConnectionVariant"; + public const string TransitDetour = "TransitDetour"; + public const string Transition = "Transition"; + public const string TransitionMasked = "TransitionMasked"; + public const string TransitSkip = "TransitSkip"; + public const string TransitTransfer = "TransitTransfer"; + public const string Translate = "Translate"; + public const string TranslateOff = "TranslateOff"; + public const string TransmissionTower = "TransmissionTower"; + public const string TrashCan = "TrashCan"; + public const string TrashCanOutline = "TrashCanOutline"; + public const string Tray = "Tray"; + public const string TrayAlert = "TrayAlert"; + public const string TrayArrowDown = "TrayArrowDown"; + public const string TrayArrowUp = "TrayArrowUp"; + public const string TrayFull = "TrayFull"; + public const string TrayMinus = "TrayMinus"; + public const string TrayPlus = "TrayPlus"; + public const string TrayRemove = "TrayRemove"; + public const string TreasureChest = "TreasureChest"; + public const string Tree = "Tree"; + public const string TreeOutline = "TreeOutline"; + public const string Trello = "Trello"; + public const string TrendingDown = "TrendingDown"; + public const string TrendingNeutral = "TrendingNeutral"; + public const string TrendingUp = "TrendingUp"; + public const string Triangle = "Triangle"; + public const string TriangleOutline = "TriangleOutline"; + public const string TriangleWave = "TriangleWave"; + public const string Triforce = "Triforce"; + public const string Trophy = "Trophy"; + public const string TrophyAward = "TrophyAward"; + public const string TrophyBroken = "TrophyBroken"; + public const string TrophyOutline = "TrophyOutline"; + public const string TrophyVariant = "TrophyVariant"; + public const string TrophyVariantOutline = "TrophyVariantOutline"; + public const string Truck = "Truck"; + public const string TruckCargoContainer = "TruckCargoContainer"; + public const string TruckCheck = "TruckCheck"; + public const string TruckCheckOutline = "TruckCheckOutline"; + public const string TruckDelivery = "TruckDelivery"; + public const string TruckDeliveryOutline = "TruckDeliveryOutline"; + public const string TruckFast = "TruckFast"; + public const string TruckFastOutline = "TruckFastOutline"; + public const string TruckFlatbed = "TruckFlatbed"; + public const string TruckOutline = "TruckOutline"; + public const string TruckTrailer = "TruckTrailer"; + public const string Trumpet = "Trumpet"; + public const string TshirtCrew = "TshirtCrew"; + public const string TshirtCrewOutline = "TshirtCrewOutline"; + public const string TshirtV = "TshirtV"; + public const string TshirtVOutline = "TshirtVOutline"; + public const string TumbleDryer = "TumbleDryer"; + public const string TumbleDryerAlert = "TumbleDryerAlert"; + public const string TumbleDryerOff = "TumbleDryerOff"; + public const string Tune = "Tune"; + public const string TuneVariant = "TuneVariant"; + public const string TuneVertical = "TuneVertical"; + public const string TuneVerticalVariant = "TuneVerticalVariant"; + public const string Tunnel = "Tunnel"; + public const string TunnelOutline = "TunnelOutline"; + public const string Turkey = "Turkey"; + public const string Turnstile = "Turnstile"; + public const string TurnstileOutline = "TurnstileOutline"; + public const string Turtle = "Turtle"; + public const string Twitch = "Twitch"; + public const string Twitter = "Twitter"; + public const string TwoFactorAuthentication = "TwoFactorAuthentication"; + public const string Typewriter = "Typewriter"; + public const string Ubisoft = "Ubisoft"; + public const string Ubuntu = "Ubuntu"; + public const string Ufo = "Ufo"; + public const string UfoOutline = "UfoOutline"; + public const string UltraHighDefinition = "UltraHighDefinition"; + public const string Umbraco = "Umbraco"; + public const string Umbrella = "Umbrella"; + public const string UmbrellaBeach = "UmbrellaBeach"; + public const string UmbrellaBeachOutline = "UmbrellaBeachOutline"; + public const string UmbrellaClosed = "UmbrellaClosed"; + public const string UmbrellaClosedOutline = "UmbrellaClosedOutline"; + public const string UmbrellaClosedVariant = "UmbrellaClosedVariant"; + public const string UmbrellaOutline = "UmbrellaOutline"; + public const string Undo = "Undo"; + public const string UndoVariant = "UndoVariant"; + public const string UnfoldLessHorizontal = "UnfoldLessHorizontal"; + public const string UnfoldLessVertical = "UnfoldLessVertical"; + public const string UnfoldMoreHorizontal = "UnfoldMoreHorizontal"; + public const string UnfoldMoreVertical = "UnfoldMoreVertical"; + public const string Ungroup = "Ungroup"; + public const string Unicode = "Unicode"; + public const string Unicorn = "Unicorn"; + public const string UnicornVariant = "UnicornVariant"; + public const string Unicycle = "Unicycle"; + public const string Unity = "Unity"; + public const string Unreal = "Unreal"; + public const string Update = "Update"; + public const string Upload = "Upload"; + public const string UploadLock = "UploadLock"; + public const string UploadLockOutline = "UploadLockOutline"; + public const string UploadMultiple = "UploadMultiple"; + public const string UploadNetwork = "UploadNetwork"; + public const string UploadNetworkOutline = "UploadNetworkOutline"; + public const string UploadOff = "UploadOff"; + public const string UploadOffOutline = "UploadOffOutline"; + public const string UploadOutline = "UploadOutline"; + public const string Usb = "Usb"; + public const string UsbFlashDrive = "UsbFlashDrive"; + public const string UsbFlashDriveOutline = "UsbFlashDriveOutline"; + public const string UsbPort = "UsbPort"; + public const string Valve = "Valve"; + public const string ValveClosed = "ValveClosed"; + public const string ValveOpen = "ValveOpen"; + public const string Vanish = "Vanish"; + public const string VanishQuarter = "VanishQuarter"; + public const string VanityLight = "VanityLight"; + public const string VanPassenger = "VanPassenger"; + public const string VanUtility = "VanUtility"; + public const string Variable = "Variable"; + public const string VariableBox = "VariableBox"; + public const string VectorArrangeAbove = "VectorArrangeAbove"; + public const string VectorArrangeBelow = "VectorArrangeBelow"; + public const string VectorBezier = "VectorBezier"; + public const string VectorCircle = "VectorCircle"; + public const string VectorCircleVariant = "VectorCircleVariant"; + public const string VectorCombine = "VectorCombine"; + public const string VectorCurve = "VectorCurve"; + public const string VectorDifference = "VectorDifference"; + public const string VectorDifferenceAb = "VectorDifferenceAb"; + public const string VectorDifferenceBa = "VectorDifferenceBa"; + public const string VectorEllipse = "VectorEllipse"; + public const string VectorIntersection = "VectorIntersection"; + public const string VectorLine = "VectorLine"; + public const string VectorLink = "VectorLink"; + public const string VectorPoint = "VectorPoint"; + public const string VectorPolygon = "VectorPolygon"; + public const string VectorPolygonVariant = "VectorPolygonVariant"; + public const string VectorPolyline = "VectorPolyline"; + public const string VectorPolylineEdit = "VectorPolylineEdit"; + public const string VectorPolylineMinus = "VectorPolylineMinus"; + public const string VectorPolylinePlus = "VectorPolylinePlus"; + public const string VectorPolylineRemove = "VectorPolylineRemove"; + public const string VectorRadius = "VectorRadius"; + public const string VectorRectangle = "VectorRectangle"; + public const string VectorSelection = "VectorSelection"; + public const string VectorSquare = "VectorSquare"; + public const string VectorSquareClose = "VectorSquareClose"; + public const string VectorSquareEdit = "VectorSquareEdit"; + public const string VectorSquareMinus = "VectorSquareMinus"; + public const string VectorSquareOpen = "VectorSquareOpen"; + public const string VectorSquarePlus = "VectorSquarePlus"; + public const string VectorSquareRemove = "VectorSquareRemove"; + public const string VectorTriangle = "VectorTriangle"; + public const string VectorUnion = "VectorUnion"; + public const string Vhs = "Vhs"; + public const string Vibrate = "Vibrate"; + public const string VibrateOff = "VibrateOff"; + public const string Video = "Video"; + public const string Video3d = "Video3d"; + public const string Video3dOff = "Video3dOff"; + public const string Video3dVariant = "Video3dVariant"; + public const string Video4kBox = "Video4kBox"; + public const string VideoAccount = "VideoAccount"; + public const string VideoBox = "VideoBox"; + public const string VideoBoxOff = "VideoBoxOff"; + public const string VideoCheck = "VideoCheck"; + public const string VideoCheckOutline = "VideoCheckOutline"; + public const string VideoHighDefinition = "VideoHighDefinition"; + public const string VideoImage = "VideoImage"; + public const string VideoInputAntenna = "VideoInputAntenna"; + public const string VideoInputComponent = "VideoInputComponent"; + public const string VideoInputHdmi = "VideoInputHdmi"; + public const string VideoInputScart = "VideoInputScart"; + public const string VideoInputSvideo = "VideoInputSvideo"; + public const string VideoMinus = "VideoMinus"; + public const string VideoMinusOutline = "VideoMinusOutline"; + public const string VideoOff = "VideoOff"; + public const string VideoOffOutline = "VideoOffOutline"; + public const string VideoOutline = "VideoOutline"; + public const string VideoPlus = "VideoPlus"; + public const string VideoPlusOutline = "VideoPlusOutline"; + public const string VideoStabilization = "VideoStabilization"; + public const string VideoSwitch = "VideoSwitch"; + public const string VideoSwitchOutline = "VideoSwitchOutline"; + public const string VideoVintage = "VideoVintage"; + public const string VideoWireless = "VideoWireless"; + public const string VideoWirelessOutline = "VideoWirelessOutline"; + public const string ViewAgenda = "ViewAgenda"; + public const string ViewAgendaOutline = "ViewAgendaOutline"; + public const string ViewArray = "ViewArray"; + public const string ViewArrayOutline = "ViewArrayOutline"; + public const string ViewCarousel = "ViewCarousel"; + public const string ViewCarouselOutline = "ViewCarouselOutline"; + public const string ViewColumn = "ViewColumn"; + public const string ViewColumnOutline = "ViewColumnOutline"; + public const string ViewComfy = "ViewComfy"; + public const string ViewComfyOutline = "ViewComfyOutline"; + public const string ViewCompact = "ViewCompact"; + public const string ViewCompactOutline = "ViewCompactOutline"; + public const string ViewDashboard = "ViewDashboard"; + public const string ViewDashboardOutline = "ViewDashboardOutline"; + public const string ViewDashboardVariant = "ViewDashboardVariant"; + public const string ViewDashboardVariantOutline = "ViewDashboardVariantOutline"; + public const string ViewDay = "ViewDay"; + public const string ViewDayOutline = "ViewDayOutline"; + public const string ViewGallery = "ViewGallery"; + public const string ViewGalleryOutline = "ViewGalleryOutline"; + public const string ViewGrid = "ViewGrid"; + public const string ViewGridOutline = "ViewGridOutline"; + public const string ViewGridPlus = "ViewGridPlus"; + public const string ViewGridPlusOutline = "ViewGridPlusOutline"; + public const string ViewHeadline = "ViewHeadline"; + public const string ViewList = "ViewList"; + public const string ViewListOutline = "ViewListOutline"; + public const string ViewModule = "ViewModule"; + public const string ViewModuleOutline = "ViewModuleOutline"; + public const string ViewParallel = "ViewParallel"; + public const string ViewParallelOutline = "ViewParallelOutline"; + public const string ViewQuilt = "ViewQuilt"; + public const string ViewQuiltOutline = "ViewQuiltOutline"; + public const string ViewSequential = "ViewSequential"; + public const string ViewSequentialOutline = "ViewSequentialOutline"; + public const string ViewSplitHorizontal = "ViewSplitHorizontal"; + public const string ViewSplitVertical = "ViewSplitVertical"; + public const string ViewStream = "ViewStream"; + public const string ViewStreamOutline = "ViewStreamOutline"; + public const string ViewWeek = "ViewWeek"; + public const string ViewWeekOutline = "ViewWeekOutline"; + public const string Vimeo = "Vimeo"; + public const string Violin = "Violin"; + public const string VirtualReality = "VirtualReality"; + public const string Virus = "Virus"; + public const string VirusOff = "VirusOff"; + public const string VirusOffOutline = "VirusOffOutline"; + public const string VirusOutline = "VirusOutline"; + public const string Vlc = "Vlc"; + public const string Voicemail = "Voicemail"; + public const string Volleyball = "Volleyball"; + public const string VolumeHigh = "VolumeHigh"; + public const string VolumeLow = "VolumeLow"; + public const string VolumeMedium = "VolumeMedium"; + public const string VolumeMinus = "VolumeMinus"; + public const string VolumeMute = "VolumeMute"; + public const string VolumeOff = "VolumeOff"; + public const string VolumePlus = "VolumePlus"; + public const string VolumeSource = "VolumeSource"; + public const string VolumeVariantOff = "VolumeVariantOff"; + public const string VolumeVibrate = "VolumeVibrate"; + public const string Vote = "Vote"; + public const string VoteOutline = "VoteOutline"; + public const string Vpn = "Vpn"; + public const string Vuejs = "Vuejs"; + public const string Vuetify = "Vuetify"; + public const string Walk = "Walk"; + public const string Wall = "Wall"; + public const string Wallet = "Wallet"; + public const string WalletGiftcard = "WalletGiftcard"; + public const string WalletMembership = "WalletMembership"; + public const string WalletOutline = "WalletOutline"; + public const string WalletPlus = "WalletPlus"; + public const string WalletPlusOutline = "WalletPlusOutline"; + public const string WalletTravel = "WalletTravel"; + public const string Wallpaper = "Wallpaper"; + public const string WallSconce = "WallSconce"; + public const string WallSconceFlat = "WallSconceFlat"; + public const string WallSconceFlatOutline = "WallSconceFlatOutline"; + public const string WallSconceFlatVariant = "WallSconceFlatVariant"; + public const string WallSconceFlatVariantOutline = "WallSconceFlatVariantOutline"; + public const string WallSconceOutline = "WallSconceOutline"; + public const string WallSconceRound = "WallSconceRound"; + public const string WallSconceRoundOutline = "WallSconceRoundOutline"; + public const string WallSconceRoundVariant = "WallSconceRoundVariant"; + public const string WallSconceRoundVariantOutline = "WallSconceRoundVariantOutline"; + public const string Wan = "Wan"; + public const string Wardrobe = "Wardrobe"; + public const string WardrobeOutline = "WardrobeOutline"; + public const string Warehouse = "Warehouse"; + public const string WashingMachine = "WashingMachine"; + public const string WashingMachineAlert = "WashingMachineAlert"; + public const string WashingMachineOff = "WashingMachineOff"; + public const string Watch = "Watch"; + public const string WatchExport = "WatchExport"; + public const string WatchExportVariant = "WatchExportVariant"; + public const string WatchImport = "WatchImport"; + public const string WatchImportVariant = "WatchImportVariant"; + public const string WatchVariant = "WatchVariant"; + public const string WatchVibrate = "WatchVibrate"; + public const string WatchVibrateOff = "WatchVibrateOff"; + public const string Water = "Water"; + public const string WaterAlert = "WaterAlert"; + public const string WaterAlertOutline = "WaterAlertOutline"; + public const string WaterBoiler = "WaterBoiler"; + public const string WaterBoilerAlert = "WaterBoilerAlert"; + public const string WaterBoilerOff = "WaterBoilerOff"; + public const string WaterCheck = "WaterCheck"; + public const string WaterCheckOutline = "WaterCheckOutline"; + public const string WaterCircle = "WaterCircle"; + public const string Waterfall = "Waterfall"; + public const string WateringCan = "WateringCan"; + public const string WateringCanOutline = "WateringCanOutline"; + public const string Watermark = "Watermark"; + public const string WaterMinus = "WaterMinus"; + public const string WaterMinusOutline = "WaterMinusOutline"; + public const string WaterOff = "WaterOff"; + public const string WaterOffOutline = "WaterOffOutline"; + public const string WaterOpacity = "WaterOpacity"; + public const string WaterOutline = "WaterOutline"; + public const string WaterPercent = "WaterPercent"; + public const string WaterPercentAlert = "WaterPercentAlert"; + public const string WaterPlus = "WaterPlus"; + public const string WaterPlusOutline = "WaterPlusOutline"; + public const string WaterPolo = "WaterPolo"; + public const string WaterPump = "WaterPump"; + public const string WaterPumpOff = "WaterPumpOff"; + public const string WaterRemove = "WaterRemove"; + public const string WaterRemoveOutline = "WaterRemoveOutline"; + public const string WaterSync = "WaterSync"; + public const string WaterWell = "WaterWell"; + public const string WaterWellOutline = "WaterWellOutline"; + public const string Wave = "Wave"; + public const string Waveform = "Waveform"; + public const string Waves = "Waves"; + public const string WavesArrowLeft = "WavesArrowLeft"; + public const string WavesArrowRight = "WavesArrowRight"; + public const string WavesArrowUp = "WavesArrowUp"; + public const string Waze = "Waze"; + public const string WeatherCloudy = "WeatherCloudy"; + public const string WeatherCloudyAlert = "WeatherCloudyAlert"; + public const string WeatherCloudyArrowRight = "WeatherCloudyArrowRight"; + public const string WeatherCloudyClock = "WeatherCloudyClock"; + public const string WeatherFog = "WeatherFog"; + public const string WeatherHail = "WeatherHail"; + public const string WeatherHazy = "WeatherHazy"; + public const string WeatherHurricane = "WeatherHurricane"; + public const string WeatherLightning = "WeatherLightning"; + public const string WeatherLightningRainy = "WeatherLightningRainy"; + public const string WeatherNight = "WeatherNight"; + public const string WeatherNightPartlyCloudy = "WeatherNightPartlyCloudy"; + public const string WeatherPartlyCloudy = "WeatherPartlyCloudy"; + public const string WeatherPartlyLightning = "WeatherPartlyLightning"; + public const string WeatherPartlyRainy = "WeatherPartlyRainy"; + public const string WeatherPartlySnowy = "WeatherPartlySnowy"; + public const string WeatherPartlySnowyRainy = "WeatherPartlySnowyRainy"; + public const string WeatherPouring = "WeatherPouring"; + public const string WeatherRainy = "WeatherRainy"; + public const string WeatherSnowy = "WeatherSnowy"; + public const string WeatherSnowyHeavy = "WeatherSnowyHeavy"; + public const string WeatherSnowyRainy = "WeatherSnowyRainy"; + public const string WeatherSunny = "WeatherSunny"; + public const string WeatherSunnyAlert = "WeatherSunnyAlert"; + public const string WeatherSunnyOff = "WeatherSunnyOff"; + public const string WeatherSunset = "WeatherSunset"; + public const string WeatherSunsetDown = "WeatherSunsetDown"; + public const string WeatherSunsetUp = "WeatherSunsetUp"; + public const string WeatherTornado = "WeatherTornado"; + public const string WeatherWindy = "WeatherWindy"; + public const string WeatherWindyVariant = "WeatherWindyVariant"; + public const string Web = "Web"; + public const string WebBox = "WebBox"; + public const string Webcam = "Webcam"; + public const string WebcamOff = "WebcamOff"; + public const string WebCancel = "WebCancel"; + public const string WebCheck = "WebCheck"; + public const string WebClock = "WebClock"; + public const string Webhook = "Webhook"; + public const string WebMinus = "WebMinus"; + public const string WebOff = "WebOff"; + public const string Webpack = "Webpack"; + public const string WebPlus = "WebPlus"; + public const string WebRefresh = "WebRefresh"; + public const string WebRemove = "WebRemove"; + public const string Webrtc = "Webrtc"; + public const string WebSync = "WebSync"; + public const string Wechat = "Wechat"; + public const string Weight = "Weight"; + public const string WeightGram = "WeightGram"; + public const string WeightKilogram = "WeightKilogram"; + public const string WeightLifter = "WeightLifter"; + public const string WeightPound = "WeightPound"; + public const string Whatsapp = "Whatsapp"; + public const string WheelBarrow = "WheelBarrow"; + public const string WheelchairAccessibility = "WheelchairAccessibility"; + public const string Whistle = "Whistle"; + public const string WhistleOutline = "WhistleOutline"; + public const string WhiteBalanceAuto = "WhiteBalanceAuto"; + public const string WhiteBalanceIncandescent = "WhiteBalanceIncandescent"; + public const string WhiteBalanceIridescent = "WhiteBalanceIridescent"; + public const string WhiteBalanceSunny = "WhiteBalanceSunny"; + public const string Widgets = "Widgets"; + public const string WidgetsOutline = "WidgetsOutline"; + public const string Wifi = "Wifi"; + public const string WifiAlert = "WifiAlert"; + public const string WifiArrowDown = "WifiArrowDown"; + public const string WifiArrowLeft = "WifiArrowLeft"; + public const string WifiArrowLeftRight = "WifiArrowLeftRight"; + public const string WifiArrowRight = "WifiArrowRight"; + public const string WifiArrowUp = "WifiArrowUp"; + public const string WifiArrowUpDown = "WifiArrowUpDown"; + public const string WifiCancel = "WifiCancel"; + public const string WifiCheck = "WifiCheck"; + public const string WifiCog = "WifiCog"; + public const string WifiLock = "WifiLock"; + public const string WifiLockOpen = "WifiLockOpen"; + public const string WifiMarker = "WifiMarker"; + public const string WifiMinus = "WifiMinus"; + public const string WifiOff = "WifiOff"; + public const string WifiPlus = "WifiPlus"; + public const string WifiRefresh = "WifiRefresh"; + public const string WifiRemove = "WifiRemove"; + public const string WifiSettings = "WifiSettings"; + public const string WifiStar = "WifiStar"; + public const string WifiStrength1 = "WifiStrength1"; + public const string WifiStrength1Alert = "WifiStrength1Alert"; + public const string WifiStrength1Lock = "WifiStrength1Lock"; + public const string WifiStrength1LockOpen = "WifiStrength1LockOpen"; + public const string WifiStrength2 = "WifiStrength2"; + public const string WifiStrength2Alert = "WifiStrength2Alert"; + public const string WifiStrength2Lock = "WifiStrength2Lock"; + public const string WifiStrength2LockOpen = "WifiStrength2LockOpen"; + public const string WifiStrength3 = "WifiStrength3"; + public const string WifiStrength3Alert = "WifiStrength3Alert"; + public const string WifiStrength3Lock = "WifiStrength3Lock"; + public const string WifiStrength3LockOpen = "WifiStrength3LockOpen"; + public const string WifiStrength4 = "WifiStrength4"; + public const string WifiStrength4Alert = "WifiStrength4Alert"; + public const string WifiStrength4Lock = "WifiStrength4Lock"; + public const string WifiStrength4LockOpen = "WifiStrength4LockOpen"; + public const string WifiStrengthAlertOutline = "WifiStrengthAlertOutline"; + public const string WifiStrengthLockOpenOutline = "WifiStrengthLockOpenOutline"; + public const string WifiStrengthLockOutline = "WifiStrengthLockOutline"; + public const string WifiStrengthOff = "WifiStrengthOff"; + public const string WifiStrengthOffOutline = "WifiStrengthOffOutline"; + public const string WifiStrengthOutline = "WifiStrengthOutline"; + public const string WifiSync = "WifiSync"; + public const string Wikipedia = "Wikipedia"; + public const string WindowClose = "WindowClose"; + public const string WindowClosed = "WindowClosed"; + public const string WindowClosedVariant = "WindowClosedVariant"; + public const string WindowMaximize = "WindowMaximize"; + public const string WindowMinimize = "WindowMinimize"; + public const string WindowOpen = "WindowOpen"; + public const string WindowOpenVariant = "WindowOpenVariant"; + public const string WindowRestore = "WindowRestore"; + public const string WindowShutter = "WindowShutter"; + public const string WindowShutterAlert = "WindowShutterAlert"; + public const string WindowShutterOpen = "WindowShutterOpen"; + public const string Windsock = "Windsock"; + public const string WindTurbine = "WindTurbine"; + public const string Wiper = "Wiper"; + public const string WiperWash = "WiperWash"; + public const string WiperWashAlert = "WiperWashAlert"; + public const string WizardHat = "WizardHat"; + public const string Wordpress = "Wordpress"; + public const string Wrap = "Wrap"; + public const string WrapDisabled = "WrapDisabled"; + public const string Wrench = "Wrench"; + public const string WrenchOutline = "WrenchOutline"; + public const string Xamarin = "Xamarin"; + public const string Xml = "Xml"; + public const string Xmpp = "Xmpp"; + public const string Yahoo = "Yahoo"; + public const string Yeast = "Yeast"; + public const string YinYang = "YinYang"; + public const string Yoga = "Yoga"; + public const string Youtube = "Youtube"; + public const string YoutubeGaming = "YoutubeGaming"; + public const string YoutubeStudio = "YoutubeStudio"; + public const string YoutubeSubscription = "YoutubeSubscription"; + public const string YoutubeTv = "YoutubeTv"; + public const string Yurt = "Yurt"; + public const string Zend = "Zend"; + public const string Zigbee = "Zigbee"; + public const string ZipBox = "ZipBox"; + public const string ZipBoxOutline = "ZipBoxOutline"; + public const string ZipDisk = "ZipDisk"; + public const string ZodiacAquarius = "ZodiacAquarius"; + public const string ZodiacAries = "ZodiacAries"; + public const string ZodiacCancer = "ZodiacCancer"; + public const string ZodiacCapricorn = "ZodiacCapricorn"; + public const string ZodiacGemini = "ZodiacGemini"; + public const string ZodiacLeo = "ZodiacLeo"; + public const string ZodiacLibra = "ZodiacLibra"; + public const string ZodiacPisces = "ZodiacPisces"; + public const string ZodiacSagittarius = "ZodiacSagittarius"; + public const string ZodiacScorpio = "ZodiacScorpio"; + public const string ZodiacTaurus = "ZodiacTaurus"; + public const string ZodiacVirgo = "ZodiacVirgo"; + public const string ZWave = "ZWave"; +} diff --git a/LuYao.Toolkit.Core/LuYao.Toolkit.Core.csproj b/LuYao.Toolkit.Core/LuYao.Toolkit.Core.csproj new file mode 100644 index 0000000..f20a82e --- /dev/null +++ b/LuYao.Toolkit.Core/LuYao.Toolkit.Core.csproj @@ -0,0 +1,37 @@ + + + + + net7.0 + LuYao.Toolkit + latest + + + + + + + + + + + + + + + + + + + + + + + + + + ..\libs\LuYao.Common.dll + + + + diff --git a/LuYao.Toolkit.Core/Regions/RegionNames.cs b/LuYao.Toolkit.Core/Regions/RegionNames.cs new file mode 100644 index 0000000..1624db4 --- /dev/null +++ b/LuYao.Toolkit.Core/Regions/RegionNames.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Regions; + +public static class RegionNames +{ + public static string MainRegion => nameof(MainRegion); + public static string WorkingRegion => nameof(WorkingRegion); + public static string PortProxyDetailRegion => nameof(PortProxyDetailRegion); +} diff --git a/LuYao.Toolkit.Core/Resources/AppResources.cs b/LuYao.Toolkit.Core/Resources/AppResources.cs new file mode 100644 index 0000000..369a910 --- /dev/null +++ b/LuYao.Toolkit.Core/Resources/AppResources.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Text; + +namespace LuYao.Toolkit.Resources; + +public static partial class AppResources +{ + private static readonly IReadOnlyList _values; + public static long Version { get; } + static AppResources() + { + + var ass = typeof(AppResources).Assembly; + using (var ms = ass.GetManifestResourceStream($"{typeof(AppResources).Namespace}.LuYao.Toolkit.dat")) + using (var r = new BinaryReader(ms)) + { + Version = r.ReadInt64(); + var total = r.ReadInt32(); + var lengths = new int[total]; + var values = new string[total]; + for (int i = 0; i < total; i++) + { + var len = r.ReadInt32(); + lengths[i] = len; + } + for (int i = 0; i < total; i++) + { + var len = lengths[i]; + var bytes = r.ReadBytes(len); + var str = Decompress(bytes); + values[i] = str; + } + _values = values; + } + } + static string Decompress(byte[] data) + { + using (var input = new MemoryStream(data)) + using (var output = new MemoryStream()) + using (DeflateStream decompressor = new DeflateStream(input, CompressionMode.Decompress)) + { + decompressor.CopyTo(output); + var bytes = output.ToArray(); + return Encoding.UTF8.GetString(bytes); + } + } + public static string Get(int id) + { + if (id >= 0 && id < _values.Count) return _values[id]; + throw new Exception($"ID为:{id} 得资源未找到"); + } + public static bool TryGet(int id, out string value) + { + if (id >= 0 && id < _values.Count) + { + value = _values[id]; + return true; + } + value = default; + return false; + } + public static int Count => _values.Count; +} diff --git a/LuYao.Toolkit.Core/Resources/AppResources.g.cs b/LuYao.Toolkit.Core/Resources/AppResources.g.cs new file mode 100644 index 0000000..fdf5197 --- /dev/null +++ b/LuYao.Toolkit.Core/Resources/AppResources.g.cs @@ -0,0 +1,11 @@ +namespace LuYao.Toolkit.Resources; + +// Build Time : 2023-02-01T14:48:31.0333983+08:00 +// Version : 1675234111 +partial class AppResources +{ + public static string Channels_Converts_JsonToCSharp_JS => Get(0); + public static string Channels_Converts_JsonToCSharpDemo_JSON => Get(1); + public static string Channels_Converts_JsonToCsv_JS => Get(2); + public static string Channels_Converts_JsonToCsvDemo_JSON => Get(3); +} diff --git a/LuYao.Toolkit.Core/Resources/BuildAppResources.linq b/LuYao.Toolkit.Core/Resources/BuildAppResources.linq new file mode 100644 index 0000000..e465e99 --- /dev/null +++ b/LuYao.Toolkit.Core/Resources/BuildAppResources.linq @@ -0,0 +1,112 @@ + + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit\bin\Debug\net7.0-windows\LuYao.Common.dll + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit\bin\Debug\net7.0-windows\LuYao.Toolkit.Core.dll + LuYao.Toolkit.Services + System.IO.Compression + + +void Main() +{ + var dir = Path.GetDirectoryName(Util.CurrentQueryPath); + var root = string.Empty; + while (!string.IsNullOrWhiteSpace(dir)) + { + var sln = Directory.GetFiles(dir, "*.sln"); + if (sln.Length == 0) + { + dir = Path.GetDirectoryName(dir); + } + else + { + root = dir; + break; + } + } + root.Dump("ROOT"); + var regex = new Regex("\\.res\\.(?\\w+)$", RegexOptions.Compiled); + var files = Directory.GetFiles(root, "*.res.*", SearchOption.AllDirectories); + var items = new List(); + foreach (var file in files) + { + //获取项目目录 + var proj = GetProjectRoot(file); + if (string.IsNullOrWhiteSpace(proj)) continue; + var re = Path.GetRelativePath(proj, file); + re = regex.Replace(re, "") + Path.GetExtension(file).ToUpperInvariant(); + var name = ToConstName(re); + var str = FileService.ReadAllText(file); + var bytes = Encoding.UTF8.GetBytes(str); + bytes = Compress(bytes); + items.Add(new Item(name, bytes.Length, bytes)); + } + var version = DateTimeOffset.Now.ToUnixTimeSeconds(); + //写分布类 + var sb = new StringBuilder(); + sb.AppendLine("namespace LuYao.Toolkit.Resources;"); + sb.AppendLine(); + sb.AppendFormat("// Build Time : {0:O}", DateTime.Now); + sb.AppendLine(); + sb.AppendFormat("// Version : {0}", version); + sb.AppendLine(); + sb.AppendLine("partial class AppResources"); + sb.AppendLine("{"); + for (int i = 0; i < items.Count; i++) + { + var item = items[i]; + sb.AppendFormat(" public static string {0} => Get({1});", item.Name, i); + sb.AppendLine(); + } + sb.AppendLine("}"); + File.WriteAllText(Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "AppResources.g.cs"), sb.ToString(), Encoding.UTF8); + //写数据格式 + var target = Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "LuYao.Toolkit.dat"); + if (File.Exists(target)) File.Delete(target); + using (var fs = File.OpenWrite(target)) + { + using (var w = new BinaryWriter(fs)) + { + w.Write(version); + w.Write(items.Count); + foreach (var item in items) w.Write(item.Length); + foreach (var item in items) w.Write(item.Data); + } + } + items.Count.Dump("Total"); +} +string GetProjectRoot(string file) +{ + var dir = Path.GetDirectoryName(file); + string root = string.Empty; + while (!string.IsNullOrWhiteSpace(dir)) + { + var files = Directory.GetFiles(dir, "*.csproj"); + if (files.Length > 0) + { + root = dir; + break; + } + else + { + dir = Path.GetDirectoryName(dir); + } + } + return root; +} +string ToConstName(string str) +{ + return str.Replace("\\", "_").Replace(".", "_").Replace("-","_"); +} +// You can define other methods, fields, classes and namespaces here +byte[] Compress(byte[] bytes) +{ + using (var input = new MemoryStream(bytes)) + using (var output = new MemoryStream()) + using (DeflateStream compressor = new DeflateStream(output, CompressionLevel.SmallestSize)) + { + input.CopyTo(compressor); + compressor.Flush(); + return output.ToArray(); + } +} + +public record Item(string Name, int Length, byte[] Data); \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Resources/LuYao.Toolkit.dat b/LuYao.Toolkit.Core/Resources/LuYao.Toolkit.dat new file mode 100644 index 0000000000000000000000000000000000000000..b9de6db5de26ea94df65b39322fd97efc9017149 GIT binary patch literal 25610 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 literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit.Core/Resources/TestAppResources.linq b/LuYao.Toolkit.Core/Resources/TestAppResources.linq new file mode 100644 index 0000000..ac72f2c --- /dev/null +++ b/LuYao.Toolkit.Core/Resources/TestAppResources.linq @@ -0,0 +1,13 @@ + + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit\bin\Debug\net7.0-windows\LuYao.Common.dll + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit\bin\Debug\net7.0-windows\LuYao.Toolkit.Core.dll + LuYao.Toolkit.Services + System.IO.Compression + LuYao.Toolkit.Resources + + +for (int i = 0; i < AppResources.Count; i++) +{ + AppResources.Get(i).Length.Dump(); +} +AppResources.Version.Dump(); \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Services/ClipboardService.cs b/LuYao.Toolkit.Core/Services/ClipboardService.cs new file mode 100644 index 0000000..7c85ed1 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/ClipboardService.cs @@ -0,0 +1,11 @@ +namespace LuYao.Toolkit.Services; +public static class ClipboardService +{ + public static void CopyText(string text) + { + if (string.IsNullOrWhiteSpace(text)) return; + ServiceProviderContainer.Provider.CopyTextToClipboard(text); + } + public static string GetText() => ServiceProviderContainer.Provider.GetClipboardText(); + public static string GetImage() => ServiceProviderContainer.Provider.GetClipboardImage(); +} diff --git a/LuYao.Toolkit.Core/Services/FileDialogService.cs b/LuYao.Toolkit.Core/Services/FileDialogService.cs new file mode 100644 index 0000000..bd45628 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/FileDialogService.cs @@ -0,0 +1,7 @@ +namespace LuYao.Toolkit.Services; + +public static class FileDialogService +{ + public static IOpenFileDialog CreateOpenFileDialog() => ServiceProviderContainer.Provider.CreateOpenFileDialog(); + public static ISaveFileDialog CreateSaveFileDialog() => ServiceProviderContainer.Provider.CreateSaveFileDialog(); +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Services/FileService.cs b/LuYao.Toolkit.Core/Services/FileService.cs new file mode 100644 index 0000000..cbe3d2f --- /dev/null +++ b/LuYao.Toolkit.Core/Services/FileService.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UtfUnknown; + +namespace LuYao.Toolkit.Services; + +public static class FileService +{ + public static Encoding GetEncoding(string filePath) + { + var result = CharsetDetector.DetectFromFile(filePath); + var encoding = Encoding.UTF8; + if (result.Detected != null && result.Detected.Encoding != null) { encoding = result.Detected.Encoding; } + return encoding; + } + public static async Task ReadAllTextAsync(string filePath) + { + var encoding = GetEncoding(filePath); + using (var fs = File.OpenRead(filePath)) + { + using (var sr = new StreamReader(fs, encoding)) + { + return await sr.ReadToEndAsync(); + } + } + } + + public static string ReadAllText(string filePath) + { + var encoding = GetEncoding(filePath); + using (var fs = File.OpenRead(filePath)) + { + using (var sr = new StreamReader(fs, encoding)) + { + return sr.ReadToEnd(); + } + } + } +} diff --git a/LuYao.Toolkit.Core/Services/GoogleService.cs b/LuYao.Toolkit.Core/Services/GoogleService.cs new file mode 100644 index 0000000..168948f --- /dev/null +++ b/LuYao.Toolkit.Core/Services/GoogleService.cs @@ -0,0 +1,236 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using System.Web; + +namespace LuYao.Toolkit.Services; + +public static class GoogleService +{ + private static string[] GoogleIPAddress = new string[] { "108.177.122.90", "142.250.0.90", "142.250.10.90", "142.250.100.90", "142.250.101.90", "142.250.105.90", "142.250.107.90", "142.250.11.90", "142.250.110.90", "142.250.111.90", "142.250.112.90", "142.250.12.90", "142.250.125.90", "142.250.126.90", "142.250.128.90", "142.250.136.90", "142.250.185.174", "142.250.185.238", "142.250.189.206", "142.250.203.142", "142.250.218.14", "142.250.27.90", "142.250.28.90", "142.250.30.90", "142.250.31.90", "142.250.4.90", "142.250.8.90", "142.250.9.90", "142.250.96.90", "142.250.97.90", "142.250.98.90", "142.251.10.138", "142.251.116.101", "142.251.40.174", "142.251.5.90", "142.251.9.90", "172.217.0.46", "172.217.13.142", "172.217.16.46", "172.217.192.90", "172.217.195.90", "172.217.203.90", "172.217.204.90", "172.217.214.90", "172.217.215.90", "172.217.222.90", "172.217.31.142", "172.253.112.90", "172.253.114.90", "172.253.115.90", "172.253.116.90", "172.253.122.90", "172.253.123.90", "172.253.124.90", "172.253.126.90", "172.253.62.90", "216.58.209.174", "216.58.214.14", "216.58.220.142" }; + + public static string ResolveServerAddress() + { + var tasks = GoogleIPAddress.Select(str => Task.Run(() => Ping(str))).ToList(); + while (tasks.Count > 0) + { + var idx = Task.WaitAny(tasks.ToArray()); + if (idx < 0) throw new Exception("解析 IP 地址没有成功"); + var first = tasks[idx]; + tasks.RemoveAt(idx); + if (first.IsCompletedSuccessfully()) + { + var ret = first.Result; + if (!string.IsNullOrWhiteSpace(ret)) return ret; + } + } + //有些电脑会禁止 ping ,所以在 ping 全部失效时,使用随机地址。 + return GoogleIPAddress[Random.Shared.Next(GoogleIPAddress.Length)]; + } + + private static async Task Ping(string ip) + { + var options = new PingOptions { DontFragment = true }; + const string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + byte[] buffer = Encoding.ASCII.GetBytes(data); + const int timeout = 1000 * 10; + using (var sender = new Ping()) + { + var reply = await sender.SendPingAsync(ip, timeout, buffer, options); + if (reply.Status == IPStatus.Success) return ip; + return string.Empty; + } + } + + private static IPAddress RemoteAddress = null; + + public static void RefreshRemoteAddress() + { + var ip = ResolveServerAddress(); + if (string.IsNullOrWhiteSpace(ip)) throw new Exception("解析 IP 地址没有成功"); + RemoteAddress = IPAddress.Parse(ip); + } + + public static HttpClient CreateHttpClient() + { + if (RemoteAddress == null) RefreshRemoteAddress(); + var handler = new SocketsHttpHandler + { + ConnectCallback = ConnectCallback, + UseProxy = false + }; + return new HttpClient(handler, true); + } + + private static async ValueTask ConnectCallback(SocketsHttpConnectionContext context, CancellationToken cancellationToken) + { + Socket s = new Socket(SocketType.Stream, ProtocolType.Tcp); + try + { + await s.ConnectAsync(new IPEndPoint(RemoteAddress, context.DnsEndPoint.Port), cancellationToken); + return new NetworkStream(s, true); + } + catch + { + s.Dispose(); + throw; + } + } + public class TranslateResult + { + public string SourceLanguage { get; set; } = string.Empty; + public List Lines { get; } = new List(); + } + + private const string Endpoint = "https://translate.googleapis.com/translate_a/t"; + private const string Query = "anno=3&client=te_lib&format=html&v=1.0&key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw&logld=vTE_20220717&tc=1&sr=1&mode=1"; + private static readonly Regex RegexBlock = new Regex("(.+?)", RegexOptions.Compiled); + private static HttpClient DefaultHttpClient; + private static object Locker = new object(); + public static async Task Translate(string from, string to, IReadOnlyList lines) + { + if (DefaultHttpClient == null) + { + lock (Locker) + { + if (DefaultHttpClient == null) + { + DefaultHttpClient = CreateHttpClient(); + } + } + } + return await Translate(DefaultHttpClient, from, to, lines); + } + public static async Task Translate(HttpClient http, string from, string to, IReadOnlyList lines) + { + var ret = new TranslateResult(); + var builder = new UriBuilder(Endpoint) { Port = -1 }; + var qs = HttpUtility.ParseQueryString(Query); + var data = string.Join(string.Empty, lines); + var tk = GetTK(data); + qs["tk"] = tk; + qs["sl"] = from; + qs["tl"] = to; + builder.Query = qs.ToString(); + var doc = new HtmlAgilityPack.HtmlDocument(); + using (var request = new HttpRequestMessage(HttpMethod.Post, builder.Uri.ToString())) + { + using (var post = new FormUrlEncodedContent(lines.Select(i => new KeyValuePair("q", i)))) + { + request.Content = post; + using (var response = await http.SendAsync(request)) + { + response.EnsureSuccessStatusCode(); + var json = await response.Content.ReadAsStringAsync(); + //var ret = new List(); + var items = JArray.Parse(json); + foreach (var item in items) + { + var line = string.Empty; + if (item.Type == JTokenType.String) + { + line = item.Value(); + } + else if (item.Type == JTokenType.Array) + { + line = item.Value(0); + if (string.IsNullOrWhiteSpace(ret.SourceLanguage)) + { + var lang = item.Value(1); + if (!string.IsNullOrWhiteSpace(lang)) ret.SourceLanguage = lang; + } + } + if (!string.IsNullOrWhiteSpace(line)) + { + //去掉原文对照 + var matches = RegexBlock.Matches(line); + if (matches.Count > 0) line = string.Join(string.Empty, matches.Cast().Select(f => f.Groups[1].Value)); + } + + if (line.StartsWith("<")) + { + doc.LoadHtml(line); + line = doc.DocumentNode.InnerText; + } + else + { + line = HttpUtility.HtmlDecode(line); + } + + ret.Lines.Add(line); + } + return ret; + } + } + } + } + private static (int First, int Last) Key = (460609, 461153391); + private static long Mask(long a, string b) + { + for (int i = 0; i < b.Length - 2; i += 3) + { + int c = b[i + 2]; + int d = 'a' <= c ? (int)c - 87 : (int)c - 48; + d = '+' == b[i + 1] ? (int)((uint)a >> d) : (int)(a << d); + a = '+' == b[i] ? a + d & 4294967295 : a ^ d; + } + return a; + } + private static string GetTK(string s) + { + SortedDictionary d = new SortedDictionary(); + int e = 0; + for (int f = 0; f < s.Length; f++) + { + int g = s[f]; + if (128 > g) + { + d[e++] = g; + } + else + { + if (2048 > g) + { + d[e++] = g >> 6 | 192; + d[e++] = g & 63 | 128; + } + else if (55296 == (g & 64512) && f + 1 < s.Length && 56320 == (s[f + 1] & 64512)) + { + g = 65536 + ((g & 1023) << 10) + (s[++f] & 1023); + d[e++] = g >> 18 | 240; + d[e++] = g >> 12 & 63 | 128; + d[e++] = g >> 6 & 63 | 128; + d[e++] = g & 63 | 128; + } + else + { + d[e++] = g >> 12 | 224; + d[e++] = g >> 6 & 63 | 128; + d[e++] = g & 63 | 128; + } + } + } + + long a = Key.First; + for (e = 0; e < d.Count; e++) + { + a += d[e]; + a = Mask(a, "+-a^+6"); + } + a = Mask(a, "+-3^+b+-f"); + a ^= Key.Last; + if (0 > a) { a = (a & 2147483647) + 2147483648; } + var z = a % 1000000; + return $"{z}.{z ^ Key.First}"; + } +} diff --git a/LuYao.Toolkit.Core/Services/IOpenFileDialog.cs b/LuYao.Toolkit.Core/Services/IOpenFileDialog.cs new file mode 100644 index 0000000..881a4e5 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/IOpenFileDialog.cs @@ -0,0 +1,11 @@ +namespace LuYao.Toolkit.Services; + +public interface IOpenFileDialog +{ + string Title { get; set; } + string Filter { get; set; } + bool Multiselect { get; set; } + bool ShowDialog(); + string FileName { get; set; } + string[] FileNames { get; } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Services/ISaveFileDialog.cs b/LuYao.Toolkit.Core/Services/ISaveFileDialog.cs new file mode 100644 index 0000000..0909100 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/ISaveFileDialog.cs @@ -0,0 +1,19 @@ +namespace LuYao.Toolkit.Services +{ + public interface ISaveFileDialog + { + string Title { get; set; } + + string InitialDirectory { get; set; } + + string Filter { get; set; } + + bool AddExtension { get; set; } + + string FileName { get; set; } + string DefaultExt { get; set; } + + + bool ShowDialog(); + } +} diff --git a/LuYao.Toolkit.Core/Services/IServiceProvider.cs b/LuYao.Toolkit.Core/Services/IServiceProvider.cs new file mode 100644 index 0000000..08ef4a1 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/IServiceProvider.cs @@ -0,0 +1,22 @@ +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Services; + +public interface IServiceProvider +{ + void CopyTextToClipboard(string text); + string GetClipboardText(); + string GetClipboardImage(); + IOpenFileDialog CreateOpenFileDialog(); + ISaveFileDialog CreateSaveFileDialog(); + void NotifyQuickTip(string msg); + void NotifySuccess(string msg); + void NotifyInfo(string msg); + void NotifyWarning(string msg); + void NotifyFail(string msg); + void NotifyClear(); + bool MessageBoxConfirm(string message, string title); + void MessageBoxAlert(string message, string title); + void Tongji(string url); + Task PlaySound(string url); +} diff --git a/LuYao.Toolkit.Core/Services/IWatchToken.cs b/LuYao.Toolkit.Core/Services/IWatchToken.cs new file mode 100644 index 0000000..aa77996 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/IWatchToken.cs @@ -0,0 +1,10 @@ +using System; +using System.IO; + +namespace LuYao.Toolkit.Services; + +public interface IWatchToken : IDisposable +{ + event EventHandler Changed; + string FullName { get; } +} diff --git a/LuYao.Toolkit.Core/Services/MessageBoxService.cs b/LuYao.Toolkit.Core/Services/MessageBoxService.cs new file mode 100644 index 0000000..7cce62e --- /dev/null +++ b/LuYao.Toolkit.Core/Services/MessageBoxService.cs @@ -0,0 +1,10 @@ +namespace LuYao.Toolkit.Services; + +public static class MessageBoxService +{ + + public static bool Confirm(string message, string title) => ServiceProviderContainer.Provider.MessageBoxConfirm(message, title); + public static bool Confirm(string message) => Confirm(message, "确认"); + public static void Alert(string message, string title) => ServiceProviderContainer.Provider.MessageBoxAlert(message, title); + public static void Alert(string message) => Alert(message, "提示"); +} diff --git a/LuYao.Toolkit.Core/Services/NotifyService.cs b/LuYao.Toolkit.Core/Services/NotifyService.cs new file mode 100644 index 0000000..f1fef9d --- /dev/null +++ b/LuYao.Toolkit.Core/Services/NotifyService.cs @@ -0,0 +1,15 @@ +using System; + +namespace LuYao.Toolkit.Services; + +public static class NotifyService +{ + public static void QuickTip(string msg) => ServiceProviderContainer.Provider.NotifyQuickTip(msg); + public static void Success(string msg) => ServiceProviderContainer.Provider.NotifySuccess(msg); + public static void Info(string msg) => ServiceProviderContainer.Provider.NotifyInfo(msg); + public static void Warning(string msg) => ServiceProviderContainer.Provider.NotifyWarning(msg); + public static void Warning(Exception e) => ServiceProviderContainer.Provider.NotifyWarning(e.Message); + public static void Fail(string msg) => ServiceProviderContainer.Provider.NotifyFail(msg); + public static void Fail(Exception e) => ServiceProviderContainer.Provider.NotifyFail(e.Message); + public static void Clear() => ServiceProviderContainer.Provider.NotifyClear(); +} diff --git a/LuYao.Toolkit.Core/Services/NullServiceProvider.cs b/LuYao.Toolkit.Core/Services/NullServiceProvider.cs new file mode 100644 index 0000000..7ae3e2b --- /dev/null +++ b/LuYao.Toolkit.Core/Services/NullServiceProvider.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Services; + +internal class NullServiceProvider : IServiceProvider +{ + public void CopyTextToClipboard(string text) + { + throw new NotImplementedException(); + } + + public IOpenFileDialog CreateOpenFileDialog() + { + throw new NotImplementedException(); + } + + public ISaveFileDialog CreateSaveFileDialog() + { + throw new NotImplementedException(); + } + + public string GetClipboardImage() + { + throw new NotImplementedException(); + } + + public string GetClipboardText() + { + throw new NotImplementedException(); + } + + public void MessageBoxAlert(string message, string title) + { + throw new NotImplementedException(); + } + + public bool MessageBoxConfirm(string message, string title) + { + throw new NotImplementedException(); + } + + public void NotifyClear() + { + throw new NotImplementedException(); + } + + public void NotifyFail(string msg) + { + throw new NotImplementedException(); + } + + public void NotifyInfo(string msg) + { + throw new NotImplementedException(); + } + + public void NotifyQuickTip(string msg) + { + throw new NotImplementedException(); + } + + public void NotifySuccess(string msg) + { + throw new NotImplementedException(); + } + + public void NotifyWarning(string msg) + { + throw new NotImplementedException(); + } + + public Task PlaySound(string url) + { + throw new NotImplementedException(); + } + + public void Tongji(string url) + { + } +} diff --git a/LuYao.Toolkit.Core/Services/ServiceProviderContainer.cs b/LuYao.Toolkit.Core/Services/ServiceProviderContainer.cs new file mode 100644 index 0000000..8e48423 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/ServiceProviderContainer.cs @@ -0,0 +1,12 @@ +using System; + +namespace LuYao.Toolkit.Services; + +public static class ServiceProviderContainer +{ + public static IServiceProvider Provider { get; private set; } = new NullServiceProvider(); + public static void SetProvider(IServiceProvider provider) + { + Provider = provider ?? throw new ArgumentNullException(nameof(provider)); + } +} diff --git a/LuYao.Toolkit.Core/Services/SoundService.cs b/LuYao.Toolkit.Core/Services/SoundService.cs new file mode 100644 index 0000000..3dfbf34 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/SoundService.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Services +{ + public static class SoundService + { + public static async Task Play(string url) + { + if (string.IsNullOrWhiteSpace(url)) return; + await ServiceProviderContainer.Provider.PlaySound(url); + } + } +} diff --git a/LuYao.Toolkit.Core/Services/TongjiService.cs b/LuYao.Toolkit.Core/Services/TongjiService.cs new file mode 100644 index 0000000..c06763a --- /dev/null +++ b/LuYao.Toolkit.Core/Services/TongjiService.cs @@ -0,0 +1,30 @@ +using System; + +namespace LuYao.Toolkit.Services; + +public static class TongjiService +{ + public static void Tongji(string url) + { + ServiceProviderContainer.Provider.Tongji(url); + } + public static void Tongji(string url, object args) + { + var qs = System.Web.HttpUtility.ParseQueryString(string.Empty); + if (args != null) + { + var type = args.GetType(); + foreach (var o in type.GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public)) + { + if (o.CanRead == false) continue; + var value = o.GetValue(args); + if (value != null) qs[o.Name] = value.ToString(); + } + } + ServiceProviderContainer.Provider.Tongji($"{url}?{qs}"); + } + public static void Tongji(Type type) + { + ServiceProviderContainer.Provider.Tongji(type.FullName); + } +} diff --git a/LuYao.Toolkit.Core/Services/WatchFileService.cs b/LuYao.Toolkit.Core/Services/WatchFileService.cs new file mode 100644 index 0000000..aac2c7b --- /dev/null +++ b/LuYao.Toolkit.Core/Services/WatchFileService.cs @@ -0,0 +1,21 @@ +using System; +using System.IO; + +namespace LuYao.Toolkit.Services; + +public static class WatchFileService +{ + public static IWatchToken Watch(string file, NotifyFilters filter = NotifyFilters.LastWrite | NotifyFilters.CreationTime | NotifyFilters.FileName | NotifyFilters.Size, int delay = 500) + { + if (string.IsNullOrWhiteSpace(file)) throw new ArgumentNullException(nameof(file)); + + var watch = new FileSystemWatcher + { + NotifyFilter = filter, + Path = Path.GetDirectoryName(file), + Filter = Path.GetFileName(file), + }; + + return new WatchToken(watch, file, delay); + } +} diff --git a/LuYao.Toolkit.Core/Services/WatchToken.cs b/LuYao.Toolkit.Core/Services/WatchToken.cs new file mode 100644 index 0000000..0647580 --- /dev/null +++ b/LuYao.Toolkit.Core/Services/WatchToken.cs @@ -0,0 +1,88 @@ +using NewLife.Threading; +using System; +using System.Collections.Concurrent; +using System.IO; + +namespace LuYao.Toolkit.Services; + +public class WatchToken : IWatchToken +{ + public WatchToken(FileSystemWatcher watcher, string fullName,int delay) + { + Watcher = watcher ?? throw new ArgumentNullException(nameof(watcher)); + watcher.Created += Watcher_Changed; + watcher.Changed += Watcher_Changed; + watcher.Deleted += Watcher_Changed; + watcher.Renamed += Watcher_Changed; + watcher.EnableRaisingEvents = true; + _timer = new TimerX(Raise, null, int.MaxValue, int.MaxValue); + _delay = delay; + FullName = fullName; + } + private int _delay; + private readonly ConcurrentQueue _queue = new ConcurrentQueue(); + private readonly TimerX _timer; + + + private void Watcher_Changed(object sender, FileSystemEventArgs e) + { + _queue.Enqueue(e); + _timer.SetNext(_delay); + } + + private void Raise(object state) + { + FileSystemEventArgs e = null; + while (_queue.TryDequeue(out var current)) + { + if (e != null && e.FullPath != current.FullPath) + { + Changed?.Invoke(this, e); + } + if (e == null) + { + e = current; + } + else + { + var type = e.ChangeType | current.ChangeType; + e = new FileSystemEventArgs(type, Path.GetDirectoryName(e.FullPath) ?? string.Empty, e.Name); + } + } + if (e != null) + { + Changed?.Invoke(this, e); + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + ~WatchToken() + { + Dispose(false); + } + private void Dispose(bool disposing) + { + if (_disposed) return; + this.Watcher.EnableRaisingEvents = false; + this.Watcher.Created -= this.Watcher_Changed; + this.Watcher.Changed -= this.Watcher_Changed; + this.Watcher.Deleted -= this.Watcher_Changed; + this.Watcher.Renamed -= this.Watcher_Changed; + this._timer.Dispose(); + this.Watcher.Dispose(); + _disposed = true; + if (disposing) GC.SuppressFinalize(this); + } + + private bool _disposed = false; + + public FileSystemWatcher Watcher { get; } + + public string FullName { get; } + + public event EventHandler Changed; +} diff --git a/LuYao.Toolkit.Core/Tabs/Navs/BuildFromWebsite.linq b/LuYao.Toolkit.Core/Tabs/Navs/BuildFromWebsite.linq new file mode 100644 index 0000000..aaef59d --- /dev/null +++ b/LuYao.Toolkit.Core/Tabs/Navs/BuildFromWebsite.linq @@ -0,0 +1,61 @@ + + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\netstandard2.0\LuYao.Common.dll + D:\src\coderbusy.com\luyao\src\toolkit\LuYao.Toolkit.Core\bin\Debug\netstandard2.0\LuYao.Toolkit.Core.dll + YamlDotNet + LuYao.Toolkit.Tabs.Navs + Newtonsoft.Json + LuYao + System.Net.Http + HtmlAgilityPack + + +var http = new HttpClient(); +var html = await http.GetStringAsync("https://www.coderbusy.com/navs"); +var doc = new HtmlDocument(); +doc.LoadHtml(html); +var items = doc.DocumentNode.SelectNodes("//div[@class='item']"); +var d = new YamlDotNet.Serialization.Deserializer(); +var navs = new List(); +var all = new List(); +foreach (var item in items) +{ + navs.Clear(); + var g = new NavGroup { }; + all.Add(g); + var title = item.SelectSingleNode("h3").InnerText; + g.Title = title; + var links = item.SelectNodes("ul/li/a"); + foreach (var link in links) + { + var notes = link.Attributes["notes"].Value; + if (!string.IsNullOrWhiteSpace(notes)) + { + var bytes = Convert.FromBase64String(notes); + notes = Encoding.UTF8.GetString(bytes); + } + var nav = d.Deserialize(notes) ?? new NavItem { }; + nav.Url = link.GetAttributeValue("href", string.Empty); + var strong = link.SelectSingleNode("strong"); + if (strong != null) nav.Title = strong.InnerText; + var p = link.SelectSingleNode("p"); + if (p != null) nav.Description = p.InnerText; + var img = link.SelectSingleNode("img"); + if (img != null) nav.Favicon = img.GetAttributeValue("src", string.Empty); + navs.Add(nav); + } + g.Items = navs.ToArray(); +} +all.Dump(); +var json = JsonConvert.SerializeObject(all); +var zip = StringZipper.Zip(json, StringZipper.Deflate, StringZipper.Ascii85); +zip.Dump(); +var target = Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "NavGroup.g.cs"); +var sb = new StringBuilder(); +sb.AppendLine("namespace LuYao.Toolkit.Tabs.Navs;"); +sb.AppendLine(); +sb.AppendLine("public partial class NavGroup"); +sb.AppendLine("{"); +sb.AppendFormat(" private const string Data = {0};", JsonConvert.SerializeObject(zip)); +sb.AppendLine(); +sb.AppendLine("}"); +File.WriteAllText(target, sb.ToString(), Encoding.UTF8); \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Tabs/Navs/NavGroup.cs b/LuYao.Toolkit.Core/Tabs/Navs/NavGroup.cs new file mode 100644 index 0000000..90a8ef4 --- /dev/null +++ b/LuYao.Toolkit.Core/Tabs/Navs/NavGroup.cs @@ -0,0 +1,11 @@ +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace LuYao.Toolkit.Tabs.Navs; + +public partial class NavGroup +{ + public string Title { get; set; } + public NavItem[] Items { get; set; } + public static IReadOnlyCollection GetAll() => JsonConvert.DeserializeObject>(StringZipper.Unzip(Data)); +} diff --git a/LuYao.Toolkit.Core/Tabs/Navs/NavGroup.g.cs b/LuYao.Toolkit.Core/Tabs/Navs/NavGroup.g.cs new file mode 100644 index 0000000..7a4e7ec --- /dev/null +++ b/LuYao.Toolkit.Core/Tabs/Navs/NavGroup.g.cs @@ -0,0 +1,6 @@ +namespace LuYao.Toolkit.Tabs.Navs; + +public partial class NavGroup +{ + private const string Data = "data:text/x-deflate;ascii85,<~Q'Z>ddo[=)^IkAA=3?054uhR^0&Y#=W/Rsl1QF+TH7=t5aWtR.md*]L'WRB!;@n+'+DML&>le.2/Mm9(be6STq%`TK.C:PCAf6=pD@ZF?cFN-9cb9)Qo^oHsLHJX#7QuG`TBN6V4?r8EjS;qE!SMPUIart]q8=MiZ(]E(iNd?nNF0s82fJ!^Fn'SPnuZ\"V$\"%\"Ul*eXd688;V;[0!XOu4oAV<>,D#S!.06Rh*(f6_,-%V8jmDg(aKtRMXmf*CH)X\"lV#JV;`l[T/2S?G':.<;=e)lJRL3BjgU,du2[5#^#$TS\"ikDkPs];bt;n?=*m2ef.YQA5YI>4O]OW4:er8))d'\"]d.PBAiKH?]GfrjEl;f&mTs\"?oHLTS6a#%:QQoLE>G`ICb0f8S'R5;%O^bs^7Lb2g!qSFF]K,8RR`?6#7\"p]a;(bII6mShc!>cr`/2BPCl5;^[,XUB-r8ETJ[H,sQ&Ml;5gGZo=fjB7VrfSL#ITZM>>]4C2E%.uO^T@9OP@Z\"*('^%N/FO7ho!oGQhupf]K9']!FlcM4,-&>9\\h8k>2[U^'&jVLQ8XSWS,]Ou/-tcIV2t-H$GN$M)JDpEAj(YZRE\"dBp\"%B-qF^9[=jn_$2I\\+\\JAXOphE'KJbJQdRY@N3XhF>pNjarX8(=[>]G'?@enWF,h+gda+m0.:Gl:2'_?QB5]%LQK6C?p=g*]gOJn-1P,mofq$i6O@;qLnmX`_5Y#ru[:JP(20b#K!o^j:2oNjjbVK&j*cT#/P>A1e1f5lF$)kW[1SWnmRK2VUOHJ6:P5OCG]jZE$chft;'VUXs8%Fjm.<\"!%EPXPGp(1K^/j-*P8%_C=E^/8[Uf#Qs(^^`V,mF,8-P]ijD7?u$_drs<*L3dU9tK$`#N*_^3je%np<;s*&WAB,Z\"_9EXgh8cUUA_HI%BY1rO;1-G(FA8p!._M&MDr'3h*<=eXg\"JE-gH&2U#coDXQi=QE(-`r1$9DgGbn#Q\"5^29OaPQ!nFSqM"; +} diff --git a/LuYao.Toolkit.Core/Tabs/Navs/NavItem.cs b/LuYao.Toolkit.Core/Tabs/Navs/NavItem.cs new file mode 100644 index 0000000..0779e1f --- /dev/null +++ b/LuYao.Toolkit.Core/Tabs/Navs/NavItem.cs @@ -0,0 +1,10 @@ +namespace LuYao.Toolkit.Tabs.Navs; + +public class NavItem +{ + public string Title { get; set; } + public string Icon { get; set; } + public string Url { get; set; } + public string Favicon { get; set; } + public string Description { get; set; } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Core/Tabs/Tab.cs b/LuYao.Toolkit.Core/Tabs/Tab.cs new file mode 100644 index 0000000..37b34cc --- /dev/null +++ b/LuYao.Toolkit.Core/Tabs/Tab.cs @@ -0,0 +1,22 @@ +using LuYao.Toolkit.Views; + +namespace LuYao.Toolkit.Tabs; + +public class Tab +{ + public string Icon { get; } + public string IconArchived { get; } + public string Title { get; } + public string View { get; } + private Tab(string view, string title, string icon, string archived = null) + { + View = view; + Title = title; + Icon = IconArchived = icon; + if (!string.IsNullOrWhiteSpace(archived)) IconArchived = archived; + } + public static Tab Explorer { get; } = new Tab(ViewNames.Tabs.Explorer.Index, "浏览", Icons.Apps); + public static Tab Session { get; } = new Tab(ViewNames.Tabs.Session.Index, "会话", Icons.Chat); + public static Tab Navs { get; } = new Tab(ViewNames.Tabs.Navs.Index, "导航", Icons.Web); + public static Tab Rdp { get; } = new Tab(ViewNames.Tabs.Rdp.Index, "远程", Icons.RemoteDesktop); +} diff --git a/LuYao.Toolkit.Core/Themes/ThemeMode.cs b/LuYao.Toolkit.Core/Themes/ThemeMode.cs new file mode 100644 index 0000000..da4eba1 --- /dev/null +++ b/LuYao.Toolkit.Core/Themes/ThemeMode.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Themes; + +public enum ThemeMode +{ + Light = 1, + Dark = 2, +} diff --git a/LuYao.Toolkit.Core/Update/UpdateConfig.cs b/LuYao.Toolkit.Core/Update/UpdateConfig.cs new file mode 100644 index 0000000..872027d --- /dev/null +++ b/LuYao.Toolkit.Core/Update/UpdateConfig.cs @@ -0,0 +1,30 @@ +using LuYao.IO.Updating; +using NewLife.Configuration; +using System; +using System.Net.Http; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Update; + +public class UpdateConfig : Config +{ + public UpdateConfig() => NextCheckUpdate = DateTime.Now; + public static string Endpoint => "https://luyao.coderbusy.com/update"; + public DateTime NextCheckUpdate { get; set; } + public string GetDataUrl() + { + return $"{Endpoint.Trim('/')}/data.xml?t={DateTimeOffset.Now.ToUnixTimeSeconds()}"; + } + public async Task GetLastVersion() + { + using (var http = new HttpClient()) + { + var xml = await http.GetStringAsync(GetDataUrl()); + return UpdatePackageHelper.Deserialize(xml); + } + } + public void ResetNextCheckTime() + { + NextCheckUpdate = DateTime.Now.AddDays(1); + } +} diff --git a/LuYao.Toolkit.Core/Validators/Extensions.cs b/LuYao.Toolkit.Core/Validators/Extensions.cs new file mode 100644 index 0000000..9d2e34f --- /dev/null +++ b/LuYao.Toolkit.Core/Validators/Extensions.cs @@ -0,0 +1,15 @@ +using FluentValidation; +using System; + +namespace LuYao.Toolkit.Validators; +public static class Extensions +{ + public static IRuleBuilderOptions IPAddress(this IRuleBuilder ruleBuilder) + { + return ruleBuilder.SetValidator(new IPAddressValidator()); + } + public static IRuleBuilderOptions NetworkPort(this IRuleBuilder ruleBuilder) + { + return ruleBuilder.SetValidator(new NetworkPortValidator()); + } +} diff --git a/LuYao.Toolkit.Core/Validators/IPAddressValidator.cs b/LuYao.Toolkit.Core/Validators/IPAddressValidator.cs new file mode 100644 index 0000000..01199c4 --- /dev/null +++ b/LuYao.Toolkit.Core/Validators/IPAddressValidator.cs @@ -0,0 +1,17 @@ +using FluentValidation; +using FluentValidation.Validators; +using System.Net; + +namespace LuYao.Toolkit.Validators; + +public class IPAddressValidator : PropertyValidator +{ + public override string Name => "IPAddressValidator"; + + public override bool IsValid(ValidationContext context, string value) + { + if (value == null) return true; + if (IPAddress.TryParse(value, out IPAddress ipAddress)) return true; + return false; + } +} diff --git a/LuYao.Toolkit.Core/Validators/NetworkPortValidator.cs b/LuYao.Toolkit.Core/Validators/NetworkPortValidator.cs new file mode 100644 index 0000000..3417bf9 --- /dev/null +++ b/LuYao.Toolkit.Core/Validators/NetworkPortValidator.cs @@ -0,0 +1,22 @@ +using FluentValidation; +using FluentValidation.Validators; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Validators; + +public class NetworkPortValidator : PropertyValidator +{ + public override string Name => "NetworkPortValidator"; + + public override bool IsValid(ValidationContext context, string value) + { + if (value == null) return true; + if (int.TryParse(value, out var port) == false) return false; + if (port < 1 || port > 65535) return false; + return true; + } +} diff --git a/LuYao.Toolkit.Core/Views/ViewNameAttribute.cs b/LuYao.Toolkit.Core/Views/ViewNameAttribute.cs new file mode 100644 index 0000000..932edb2 --- /dev/null +++ b/LuYao.Toolkit.Core/Views/ViewNameAttribute.cs @@ -0,0 +1,14 @@ +using System; + +namespace LuYao.Toolkit.Views; + +[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] +public class ViewNameAttribute : Attribute +{ + public string Name { get; } + + public ViewNameAttribute(string name) + { + Name = name; + } +} diff --git a/LuYao.Toolkit.Core/Views/ViewNames.cs b/LuYao.Toolkit.Core/Views/ViewNames.cs new file mode 100644 index 0000000..50ec7fa --- /dev/null +++ b/LuYao.Toolkit.Core/Views/ViewNames.cs @@ -0,0 +1,113 @@ +namespace LuYao.Toolkit.Views; + +public static class ViewNames +{ + public static class Tabs + { + public static class Session + { + public const string Index = $"{nameof(Tabs)}.{nameof(Session)}.{nameof(Index)}"; + } + public static class Explorer + { + public const string Index = $"{nameof(Tabs)}.{nameof(Explorer)}.{nameof(Index)}"; + } + public static class Rdp + { + public const string Index = $"{nameof(Tabs)}.{nameof(Rdp)}.{nameof(Index)}"; + } + public static class Docs + { + public const string Index = $"{nameof(Tabs)}.{nameof(Docs)}.{nameof(Index)}"; + } + public static class Navs + { + public const string Index = $"{nameof(Tabs)}.{nameof(Navs)}.{nameof(Index)}"; + } + } + public static class Channels + { + public static class Gens + { + public const string GenGuid = $"{nameof(Channels)}.{nameof(Gens)}.{nameof(GenGuid)}"; + public const string GenPassword = $"{nameof(Channels)}.{nameof(Gens)}.{nameof(GenPassword)}"; + public const string GenAesKey = $"{nameof(Channels)}.{nameof(Gens)}.{nameof(GenAesKey)}"; + public const string GenRsaKey = $"{nameof(Channels)}.{nameof(Gens)}.{nameof(GenRsaKey)}"; + public const string GenXCodeEntity = $"{nameof(Channels)}.{nameof(Gens)}.{nameof(GenXCodeEntity)}"; + public const string GenLinesByRange = $"{nameof(Channels)}.{nameof(Gens)}.{nameof(GenLinesByRange)}"; + } + public static class Networks + { + public const string IPLookup = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(IPLookup)}"; + public const string Ping = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(Ping)}"; + public const string Whois = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(Whois)}"; + public const string UserAgentParser = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(UserAgentParser)}"; + public const string UrlAnalyzer = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(UrlAnalyzer)}"; + public const string RemoteDesktopManager = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(RemoteDesktopManager)}"; + public const string TrafficMonitor = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(TrafficMonitor)}"; + public const string HttpProxyChecker = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(HttpProxyChecker)}"; + public static class PortProxy + { + public const string Index = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(PortProxy)}.{nameof(Index)}"; + public const string Detail = $"{nameof(Channels)}.{nameof(Networks)}.{nameof(PortProxy)}.{nameof(Detail)}"; + } + } + public static class Converters + { + public const string UnixTimestamp = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(UnixTimestamp)}"; + public const string RsaKeyConvert = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(RsaKeyConvert)}"; + public const string IndentJson = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(IndentJson)}"; + public const string IndentXml = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(IndentXml)}"; + public const string HexConvert = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(HexConvert)}"; + public const string TranslateXmlByXsl = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(TranslateXmlByXsl)}"; + public const string TranslateJsonByJs = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(TranslateJsonByJs)}"; + public const string TranslateJsonByLiquid = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(TranslateJsonByLiquid)}"; + public const string ColorConverter = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(ColorConverter)}"; + public const string JsonToCSharp = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(JsonToCSharp)}"; + public const string JsonToCsv = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(JsonToCsv)}"; + public const string PostmanConverter = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(PostmanConverter)}"; + public const string YamlToJson = $"{nameof(Channels)}.{nameof(Converters)}.{nameof(YamlToJson)}"; + } + public static class Texts + { + public const string GoogleTranslate = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(GoogleTranslate)}"; + public const string TextJoin = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(TextJoin)}"; + public const string LogReader = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(LogReader)}"; + public const string FullHalfConvert = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(FullHalfConvert)}"; + public const string CsvReader = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(CsvReader)}"; + public const string RegexEvaluator = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(RegexEvaluator)}"; + public const string YoudaoDictionary = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(YoudaoDictionary)}"; + public const string HashCalculator = $"{nameof(Channels)}.{nameof(Texts)}.{nameof(HashCalculator)}"; + } + public static class Encodings + { + public const string StringZipper = $"{nameof(Channels)}.{nameof(Encodings)}.{nameof(StringZipper)}"; + public const string UrlEncode = $"{nameof(Channels)}.{nameof(Encodings)}.{nameof(UrlEncode)}"; + public const string HtmlEncode = $"{nameof(Channels)}.{nameof(Encodings)}.{nameof(HtmlEncode)}"; + public const string Ascii85Encode = $"{nameof(Channels)}.{nameof(Encodings)}.{nameof(Ascii85Encode)}"; + public const string Base64Encode = $"{nameof(Channels)}.{nameof(Encodings)}.{nameof(Base64Encode)}"; + public const string Base62Encode = $"{nameof(Channels)}.{nameof(Encodings)}.{nameof(Base62Encode)}"; + public const string Base16Encode = $"{nameof(Channels)}.{nameof(Encodings)}.{nameof(Base16Encode)}"; + } + public static class Files + { + public const string DetectFileEncodeing = $"{nameof(Channels)}.{nameof(Files)}.{nameof(DetectFileEncodeing)}"; + public const string HashFile = $"{nameof(Channels)}.{nameof(Files)}.{nameof(HashFile)}"; + } + public static class Images + { + public const string ImageToIcon = $"{nameof(Channels)}.{nameof(Images)}.{nameof(ImageToIcon)}"; + public const string GifSplitter = $"{nameof(Channels)}.{nameof(Images)}.{nameof(GifSplitter)}"; + public const string ImageToBase64 = $"{nameof(Channels)}.{nameof(Images)}.{nameof(ImageToBase64)}"; + public const string Base64ToImage = $"{nameof(Channels)}.{nameof(Images)}.{nameof(Base64ToImage)}"; + } + public static class CrossBorder + { + public const string MercadoToWorldFirst = $"{nameof(Channels)}.{nameof(CrossBorder)}.{nameof(MercadoToWorldFirst)}"; + } + public static class Other + { + public const string SystemToolkit = $"{nameof(Channels)}.{nameof(Other)}.{nameof(SystemToolkit)}"; + } + } +} diff --git a/LuYao.Toolkit.Extensions/LuYao.Toolkit.Extensions.csproj b/LuYao.Toolkit.Extensions/LuYao.Toolkit.Extensions.csproj new file mode 100644 index 0000000..ee52ec3 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao.Toolkit.Extensions.csproj @@ -0,0 +1,20 @@ + + + + + net7.0 + + latest + + + + + + + + + ..\libs\LuYao.Common.dll + + + + diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdRunner.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdRunner.cs new file mode 100644 index 0000000..770d88f --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdRunner.cs @@ -0,0 +1,42 @@ +using NewLife; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; + +namespace LuYao.Toolkit.PortProxy; + +public static class CmdRunner +{ + public static string Execute(string cmd) + { + var proc = Process.Start(new ProcessStartInfo + { + FileName = "cmd", + UseShellExecute = false, + RedirectStandardInput = true, + RedirectStandardOutput = true, + CreateNoWindow = true, + }); + proc.Start(); + + proc.StandardInput.WriteLine($"{cmd} & exit"); + var output = proc.StandardOutput.ReadToEnd(); + + return output; + } + + public static void Run(List cmd) + { + if (cmd == null || cmd.Count <= 0) return; + var proc = Process.Start(new ProcessStartInfo + { + FileName = "cmd.exe", + Arguments = $"/C {cmd.Join("&")}", + UseShellExecute = true, + CreateNoWindow = false, + WindowStyle = ProcessWindowStyle.Normal, + Verb = "runas", + }); + if (proc != null) proc.WaitForExit(); + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdUtil.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdUtil.cs new file mode 100644 index 0000000..da367e7 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/CmdUtil.cs @@ -0,0 +1,83 @@ +using LuYao.Toolkit.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; + +namespace LuYao.Toolkit.PortProxy; + +public static class CmdUtil +{ + private static Regex GetRegex(string fromType, string toType) + { + return new Regex($@"{fromType}[^:]*:[^\n]+?{toType}[^:]*:\r\n\r\n.+?\r\n--------------- ---------- --------------- ----------\r\n(.+?)\r\n\r\n", RegexOptions.Singleline); + } + + private static readonly Dictionary RegexList = new Dictionary() + { + ["ipv4 to ipv4"] = GetRegex("ipv4", "ipv4"), + ["ipv4 to ipv6"] = GetRegex("ipv4", "ipv6"), + ["ipv6 to ipv4"] = GetRegex("ipv6", "ipv4"), + ["ipv6 to ipv6"] = GetRegex("ipv6", "ipv6"), + }; + + private static readonly Regex LineRegex = new(@"^(.*?)\s{1,}(.*?)\s{1,}(.*?)\s{1,}(.*?)$"); + + public static PortProxyRule[] GetProxies() + { + var output = CmdRunner.Execute("netsh interface portproxy show all"); + var types = new[] + { + new ProxyType("ipv4", "ipv4"), + new ProxyType("ipv4", "ipv6"), + new ProxyType("ipv6", "ipv4"), + new ProxyType("ipv6", "ipv6"), + }; + + var list = new List(); + foreach (var type in types) + { + var regex = RegexList[$"{type.From} to {type.To}"]; + var settings = output.ExtractFirst(regex); + var lines = settings?.Split(new[] { Environment.NewLine }, StringSplitOptions.None); + + if (lines is not null) + { + foreach (var line in lines) + { + if (line.TryResolve(LineRegex, out var parts)) + { + var realListenPort = parts[2].First(); + var realConnectPort = parts[4].First(); + + _ = int.TryParse(realListenPort, out var listenPort); + _ = int.TryParse(realConnectPort, out var connectPort); + + list.Add(new PortProxyRule + { + Type = type.Type, + ListenOn = parts[1].First(), + ListenPort = listenPort.ToString(), + ConnectTo = parts[3].First(), + ConnectPort = connectPort.ToString(), + }); + } + } + } + } + + return list.ToArray(); + } + + public static string GenAddOrUpdateProxyCommand(PortProxyRule rule) + { + return $"netsh interface portproxy add {rule.Type} listenaddress={rule.ListenOn} listenport={rule.ListenPort} connectaddress={rule.ConnectTo} connectport={rule.ConnectPort}"; + //CmdRunner.Run($"netsh interface portproxy add {rule.Type} listenaddress={rule.ListenOn} listenport={rule.ListenPort} connectaddress={rule.ConnectTo} connectport={rule.ConnectPort}"); + } + + public static string GenDeleteProxyCommand(PortProxyRule rule) + { + //CmdRunner.Run($"netsh interface portproxy delete {rule.Type} listenaddress={rule.ListenOn} listenport={rule.ListenPort}"); + return $"netsh interface portproxy delete {rule.Type} listenaddress={rule.ListenOn} listenport={rule.ListenPort}"; + } +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/ProxyType.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/ProxyType.cs new file mode 100644 index 0000000..52e048d --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/PortProxy/ProxyType.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.PortProxy; + +public class ProxyType +{ + public ProxyType(string from, string to) + { + From = from; + To = to; + } + + public string From { get; set; } + public string To { get; set; } + public string Type + { + get + { + if (From == "ipv4" && To == "ipv4") return "v4tov4"; + if (From == "ipv4" && To == "ipv6") return "v4tov6"; + if (From == "ipv6" && To == "ipv4") return "v6tov4"; + if (From == "ipv6" && To == "ipv6") return "v6tov6"; + throw new NotSupportedException(); + } + } + +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AudioRedirection.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AudioRedirection.cs new file mode 100644 index 0000000..7d25597 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AudioRedirection.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public enum AudioRedirection +{ + [Description("在此计算机上播放")] + PlayOnClient, + [Description("在远程计算机上播放")] + PlayOnRemote, + [Description("不要播放")] + PlayNoSound +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AuthenticationLevel.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AuthenticationLevel.cs new file mode 100644 index 0000000..50b88e5 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/AuthenticationLevel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public enum AuthenticationLevel +{ + [Description("链接并且不显示警告")] + Connect, + [Description("不链接")] + DoNotConnect, + [Description("显示警告")] + WarnMe +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/ColorDepth.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/ColorDepth.cs new file mode 100644 index 0000000..5aa52c5 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/ColorDepth.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public enum ColorDepth +{ + [Description("256色")] + Depth8Bit = 8, + [Description("增强色(15位)")] + Depth15Bit = 0xF, + [Description("增强色(16位)")] + Depth16Bit = 0x10, + [Description("真彩色(24位)")] + Depth24Bit = 24, + [Description("最高质量(32位)")] + Depth32Bit = 0x20 +} + diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/DesktopSize.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/DesktopSize.cs new file mode 100644 index 0000000..871cea6 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/DesktopSize.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public enum DesktopSize +{ + [Description("640 x 480")] + X640Y480, + [Description("800 x 600")] + X800Y600, + [Description("1024 x 768")] + X1024Y768, + [Description("1280 x 1024")] + X1280Y1024, + [Description("自定义")] + Custom +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AddRdpConnectionEvent.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AddRdpConnectionEvent.cs new file mode 100644 index 0000000..b3d0609 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AddRdpConnectionEvent.cs @@ -0,0 +1,4 @@ +using Prism.Events; + +namespace LuYao.Toolkit.Rdm.Events; +public class AddRdpConnectionEvent : PubSubEvent { } diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AfterRdmSettingEvent.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AfterRdmSettingEvent.cs new file mode 100644 index 0000000..435635b --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/AfterRdmSettingEvent.cs @@ -0,0 +1,5 @@ +using Prism.Events; + +namespace LuYao.Toolkit.Rdm.Events; + +public class AfterRdmSettingEvent : PubSubEvent { } diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEvent.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEvent.cs new file mode 100644 index 0000000..9fcb6cf --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEvent.cs @@ -0,0 +1,5 @@ +using Prism.Events; + +namespace LuYao.Toolkit.Rdm.Events; + +public class EditRdpConnectionEvent : PubSubEvent { } diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEventPayload.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEventPayload.cs new file mode 100644 index 0000000..20e02f1 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/EditRdpConnectionEventPayload.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Rdm.Events; + +public class EditRdpConnectionEventPayload +{ + public EditRdpConnectionEventPayload(Guid id) + { + this.Id = id; + } + public Guid Id { get; } +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdmSettingEvent.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdmSettingEvent.cs new file mode 100644 index 0000000..ec29d92 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdmSettingEvent.cs @@ -0,0 +1,8 @@ +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Rdm.Events; + +public class OpenRdmSettingEvent : PubSubEvent { } diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEvent.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEvent.cs new file mode 100644 index 0000000..04d9a06 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEvent.cs @@ -0,0 +1,12 @@ +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm.Events; + +public class OpenRdpConnectionEvent : PubSubEvent +{ +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEventPayload.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEventPayload.cs new file mode 100644 index 0000000..034da63 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/OpenRdpConnectionEventPayload.cs @@ -0,0 +1,9 @@ +using System; + +namespace LuYao.Toolkit.Rdm.Events; + +public class OpenRdpConnectionEventPayload +{ + public OpenRdpConnectionEventPayload(Guid id) => this.Id = id; + public Guid Id { get; } +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/RdpConnectionChangedEvent.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/RdpConnectionChangedEvent.cs new file mode 100644 index 0000000..e894805 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/Events/RdpConnectionChangedEvent.cs @@ -0,0 +1,5 @@ +using Prism.Events; + +namespace LuYao.Toolkit.Rdm.Events; + +public class RdpConnectionChangedEvent : PubSubEvent { } diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/IRdpConnection.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/IRdpConnection.cs new file mode 100644 index 0000000..904443b --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/IRdpConnection.cs @@ -0,0 +1,41 @@ +using System; + +namespace LuYao.Toolkit.Rdm; + +public interface IRdpConnection +{ + string Name { get; } + //常规 + String Host { get; } + Int32 Port { get; } + String Domain { get; } + String Username { get; } + String Password { get; } + Boolean ConnectToConsole { get; } + + //显示 + Int32 DisplayWidth { get; } + Int32 DisplayHeight { get; } + Boolean AutoExpand { get; } + Boolean SmartSizing { get; } + ColorDepth ColorDepth { get; } + + //本地资源 + AudioRedirection AudioSetting { get; } + KeyboardRedirection KeyboardSetting { get; } + Boolean RedirectDisks { get; } + Boolean RedirectPorts { get; } + Boolean RedirectPrinters { get; } + Boolean RedirectSmartCards { get; } + + //体验 + Boolean BitmapCaching { get; } + Boolean AllowWallpaper { get; } + Boolean AllowThemes { get; } + Boolean AllowContents { get; } + Boolean AllowAnimation { get; } + + //高级 + AuthenticationLevel AuthenticationLevel { get; } + Boolean EnableCredSspSupport { get; } +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/KeyboardRedirection.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/KeyboardRedirection.cs new file mode 100644 index 0000000..5550af5 --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/KeyboardRedirection.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public enum KeyboardRedirection +{ + [Description("在这台计算机上")] + OnLocal, + [Description("在远程计算机上")] + OnRemote +} diff --git a/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/RdpConnectionValidator.cs b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/RdpConnectionValidator.cs new file mode 100644 index 0000000..e83d79a --- /dev/null +++ b/LuYao.Toolkit.Extensions/LuYao/Toolkit/Rdm/RdpConnectionValidator.cs @@ -0,0 +1,19 @@ +using FluentValidation; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public class RdpConnectionValidator : AbstractValidator +{ + public static RdpConnectionValidator Instance { get; } = new RdpConnectionValidator(); + public RdpConnectionValidator() + { + RuleFor(i => i.Name).NotEmpty().WithName("连接名称"); + RuleFor(i => i.Host).NotEmpty().WithName("主机"); + RuleFor(i => i.Port).GreaterThan(0).LessThan(65535).WithName("端口"); + } +} diff --git a/LuYao.Toolkit.Extensions/Newtonsoft/Json/Linq/JsonFlattenExtensions.cs b/LuYao.Toolkit.Extensions/Newtonsoft/Json/Linq/JsonFlattenExtensions.cs new file mode 100644 index 0000000..c17fa46 --- /dev/null +++ b/LuYao.Toolkit.Extensions/Newtonsoft/Json/Linq/JsonFlattenExtensions.cs @@ -0,0 +1,185 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; + +namespace Toolkit.Newtonsoft.Json.Linq; + +public static class JsonFlattenExtensions +{ + /// + /// Flattens a JObject to a Dictionary.null, "", [] and {} are preserved by default + /// + /// JObject to flatten + /// Set to false to ignore JSON properties that are null, "", [] and {} when flattening + public static IDictionary Flatten(this JObject jsonObject, bool includeNullAndEmptyValues = true) + { + return jsonObject + .Descendants() + .Where(p => !p.Any()) + .Aggregate(new Dictionary(), (properties, jToken) => + { + var value = (jToken as JValue)?.Value; + + if (!includeNullAndEmptyValues) + { + if (value?.Equals("") == false) + { + properties.Add(jToken.Path, value); + } + + return properties; + } + + var strVal = jToken.Value()?.ToString().Trim(); + if (strVal?.Equals("[]") == true) + { + value = Enumerable.Empty(); + } + else if (strVal?.Equals("{}") == true) + { + value = new object(); + } + + properties.Add(jToken.Path, value); + + return properties; + }); + } + + /// + /// Unflattens an already flattened JSON Dictionary to its original JSON structure + /// + /// Dictionary to unflatten + public static JObject Unflatten(this IDictionary flattenedJsonKeyValues) + { + JContainer result = null; + var setting = new JsonMergeSettings + { + MergeArrayHandling = MergeArrayHandling.Merge + }; + + foreach (var pathValue in flattenedJsonKeyValues) + { + if (result == null) + { + result = UnflattenSingle(pathValue); + } + else + { + result.Merge(UnflattenSingle(pathValue), setting); + } + } + return result as JObject; + } + + /// + /// Get an item from the dictionary and cast it to a type. + /// + /// + /// + /// + /// + public static T Get(this IDictionary dictionary, string key) => (T)dictionary[key]; + + /// + /// Update an item in the dictionary + /// + /// + /// + /// + public static void Set(this IDictionary dictionary, string key, object value) => dictionary[key] = value; + + /// + /// Try get an item from the dictionary and cast it to a type. + /// + /// + /// + /// + /// + /// + public static bool TryGet(this IDictionary dictionary, string key, out T value) + { + object result; + if (dictionary.TryGetValue(key, out result) && result is T) + { + value = (T)result; + return true; + } + value = default(T); + return false; + } + + private static JContainer UnflattenSingle(KeyValuePair keyValue) + { + var path = keyValue.Key; + var value = keyValue.Value != null ? JToken.FromObject(keyValue.Value) : null; + var pathSegments = SplitPath(path); + + JContainer lastItem = null; + //build from leaf to root + foreach (var pathSegment in pathSegments.Reverse()) + { + if (!IsJsonArray(pathSegment)) + { + var obj = new JObject(); + if (lastItem == null) + { + obj.Add(pathSegment, value); + } + else + { + obj.Add(pathSegment, lastItem); + } + lastItem = obj; + + continue; + } + + var array = new JArray(); + var index = GetArrayIndex(pathSegment); + array = FillEmpty(array, index); + array[index] = lastItem ?? value; + lastItem = array; + + } + return lastItem; + } + + private static IList SplitPath(string path) + { + var reg = path.IndexOf("['", StringComparison.Ordinal) > -1 + ? new Regex(@"(?!\.)([^\'\[\]]+)|(?!\[)(\d+)(?=\])") + : new Regex(@"(?!\.)([^. ^\[\]]+)|(?!\[)(\d+)(?=\])"); + + var result = new List(); + + foreach (Match match in reg.Matches(path)) + { + result.Add(match.Value); + } + + return result; + } + + private static JArray FillEmpty(JArray array, int index) + { + for (var i = 0; i <= index; i++) + { + array.Add(null); + } + return array; + } + + private static bool IsJsonArray(string pathSegment) => int.TryParse(pathSegment, out var x); + + private static int GetArrayIndex(string pathSegment) + { + if (int.TryParse(pathSegment, out var result)) + { + return result; + } + throw new Exception($"Unable to parse array index: {pathSegment}"); + } +} diff --git a/LuYao.Toolkit.Extensions/Youdao/YoudaoDictionary.cs b/LuYao.Toolkit.Extensions/Youdao/YoudaoDictionary.cs new file mode 100644 index 0000000..f06ba27 --- /dev/null +++ b/LuYao.Toolkit.Extensions/Youdao/YoudaoDictionary.cs @@ -0,0 +1,98 @@ +using HtmlAgilityPack; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Xml.Linq; +using System.Xml.XPath; + +namespace Youdao; + +public static class YoudaoDictionary +{ + public static async Task> SuggestAsync(HttpClient http, string input) + { + if (string.IsNullOrWhiteSpace(input)) throw new ArgumentNullException(nameof(input)); + var url = $"https://dict.youdao.com/suggest?type=DESKDICT&num=4&ver=2.0&le=eng&q={HttpUtility.UrlEncode(input)}"; + using (var response = await http.GetAsync(url)) + { + response.EnsureSuccessStatusCode(); + var xml = await response.ReadAsHtmlAsync(); + var ret = new List(); + var doc = XDocument.Parse(xml); + foreach (var node in doc.XPathSelectElements("//item")) + { + var title = node.Element("title"); + var explain = node.Element("explain"); + var result_num = node.Element("result_num"); + if (title == null || explain == null) continue; + var item = new YouDaoSuggestItem + { + Title = title.Value, + Explain = explain.Value, + }; + if (result_num != null && Int32.TryParse(result_num.Value, out var num)) + { + item.ResultNum = num; + } + ret.Add(item); + } + return ret; + } + } + public static async Task QueryAsync(HttpClient http, string input) + { + if (string.IsNullOrWhiteSpace(input)) throw new ArgumentNullException(nameof(input)); + var url = $"https://m.youdao.com/dict?le=eng&q={HttpUtility.UrlEncode(input.Trim())}"; + using (var response = await http.GetAsync(url)) + { + response.EnsureSuccessStatusCode(); + var html = await response.ReadAsHtmlAsync(); + var doc = new HtmlDocument(); + doc.LoadHtml(html); + var empty = doc.DocumentNode.SelectSingleNode("//p[@class=\"empty-content\"]"); + if (empty != null) throw new Exception(HtmlEntity.DeEntitize(empty.InnerText).Trim()); + var ret = new YoudaoWord(input.Trim()); + + var phonetics = doc.DocumentNode.SelectNodes("//*[@class=\"phonetic\"]"); + if (phonetics != null) + { + foreach (var text in phonetics) + { + var o = text.ParentNode; + var type = (o.SelectSingleNode("text()")?.InnerText ?? string.Empty).Trim(); + var source = text.ParentNode.SelectSingleNode("a"); + if (!string.IsNullOrWhiteSpace(type) && source != null) + { + ret.Phonetic.Add(new YoudaoPhonetic + { + Type = type, + Text = text.InnerText.Trim(), + Source = source.GetAttributeValue("data-rel", string.Empty) + }); + } + } + } + var items = doc.DocumentNode.SelectNodes("//*[@id=\"ec\"]/ul/li"); + if (items != null) + { + foreach (var item in items) + { + ret.Paraphrase.Add(HtmlEntity.DeEntitize(item.InnerText).Trim()); + } + } + var subs = doc.DocumentNode.SelectNodes("//div[@class=\"sub\"]/p"); + if (subs != null) + { + foreach (var sub in subs) + { + ret.Variant.Add(HtmlEntity.DeEntitize(sub.InnerText).Trim()); + } + } + if (ret.IsEmpty) throw new Exception("查询结果为空"); + return ret; + } + } +} diff --git a/LuYao.Toolkit.Extensions/Youdao/YoudaoPhonetic.cs b/LuYao.Toolkit.Extensions/Youdao/YoudaoPhonetic.cs new file mode 100644 index 0000000..09ec86a --- /dev/null +++ b/LuYao.Toolkit.Extensions/Youdao/YoudaoPhonetic.cs @@ -0,0 +1,8 @@ +namespace Youdao; + +public class YoudaoPhonetic +{ + public string Type { get; set; } + public string Text { get; set; } + public string Source { get; set; } +} \ No newline at end of file diff --git a/LuYao.Toolkit.Extensions/Youdao/YoudaoSuggestItem.cs b/LuYao.Toolkit.Extensions/Youdao/YoudaoSuggestItem.cs new file mode 100644 index 0000000..b7f4520 --- /dev/null +++ b/LuYao.Toolkit.Extensions/Youdao/YoudaoSuggestItem.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Youdao; + +public class YouDaoSuggestItem +{ + public string Title { get; set; } + public string Explain { get; set; } + public int ResultNum { get; set; } + public override string ToString() => this.Title; +} \ No newline at end of file diff --git a/LuYao.Toolkit.Extensions/Youdao/YoudaoWord.cs b/LuYao.Toolkit.Extensions/Youdao/YoudaoWord.cs new file mode 100644 index 0000000..e3830dd --- /dev/null +++ b/LuYao.Toolkit.Extensions/Youdao/YoudaoWord.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Youdao; +public class YoudaoWord +{ + public YoudaoWord(string word) + { + Word = string.IsNullOrWhiteSpace(word) ? throw new ArgumentNullException(nameof(word)) : word; + } + public bool IsEmpty => Paraphrase.Count == 0; + public string Word { get; } + public List Paraphrase { get; } = new List(); + public List Variant { get; } = new List(); + public List Phonetic { get; } = new List(); +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/ColorConverterViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/ColorConverterViewModel.cs new file mode 100644 index 0000000..236a109 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/ColorConverterViewModel.cs @@ -0,0 +1,104 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Text.RegularExpressions; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class ColorConverterViewModel : ViewModelBase +{ + private static readonly ColorConverter converter = new ColorConverter(); + private static Regex RgbColorRegex = new Regex("RGB\\((?[\\d\\s]+),(?[\\d\\s]+),(?[\\d\\s]+)\\)", RegexOptions.IgnoreCase); + private static Regex ArgbColorRegex = new Regex("ARGB\\((?[\\d\\s]+),(?[\\d\\s]+),(?[\\d\\s]+),(?[\\d\\s]+)\\)", RegexOptions.IgnoreCase); + + [INotifyPropertyChanged] + public partial class CodeItem + { + public CodeItem(string title, Func format) + { + this.Title = title; + this._format = format; + } + private Func _format; + public string Title { get; } + [ObservableProperty] + private string _code; + public void Read(Color color) => this.Code = _format(color); + [RelayCommand] + public void Copy() => Services.ClipboardService.CopyText(this.Code); + } + + public ColorConverterViewModel() + { + Items = new List() + { + new CodeItem("HEX",c=> "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2")), + new CodeItem("RGB",c=>$"{c.R},{c.G},{c.B}"), + new CodeItem("ARGB",c=>$"{c.A},{c.R},{c.G},{c.B}"), + new CodeItem("CSS RGB",c=>$"rgb({c.R},{c.G},{c.B})"), + new CodeItem("CSS ARGB",c=>$"argb({c.A},{c.R},{c.G},{c.B})"), + new CodeItem("C# RGB",c=>$"Color.FromRgb({c.R},{c.G},{c.B});"), + new CodeItem("C# ARGB",c=>$"Color.FromArgb({c.A},{c.R},{c.G},{c.B});"), + new CodeItem("C# Brush RGB",c=>$"new SolidColorBrush(Color.FromRgb({c.R},{c.G},{c.B}));"), + new CodeItem("C# Brush ARGB",c=>$"new SolidColorBrush(Color.FromArgb({c.A},{c.R},{c.G},{c.B}));"), + }; + if (!string.IsNullOrWhiteSpace(Input)) this.OnInputChanged(this.Input); + } + + [ViewStates.WatchViewState(nameof(Input))] + [ObservableProperty] + private string _input; + [ObservableProperty] + private string _fail; + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(Hex))] + private Color _color; + [ObservableProperty] + private bool _done = false; + public string Hex => GetHex(); + private string GetHex() + { + if (_color.IsEmpty) return "Transparent"; + var c = _color; + return "#" + c.A.ToString("X2") + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2"); + } + + public IReadOnlyCollection Items { get; } + + partial void OnInputChanged(string value) + { + this.Done = false; + this.Fail = String.Empty; + this.Color = Color.Empty; + try + { + if (!string.IsNullOrWhiteSpace(value)) + { + value = value.Trim(); + if (RgbColorRegex.IsMatch(value)) + { + value = RgbColorRegex.Replace(value, "$1,$2,$3"); + } + else if (ArgbColorRegex.IsMatch(value)) + { + value = ArgbColorRegex.Replace(value, "$1,$2,$3,$4"); + } + else if (value.Contains(" ")) + { + value = value.Replace(" ", ","); + } + var ret = converter.ConvertFromString(value); + if (ret == null) throw new Exception(); + this.Color = (Color)ret; + this.Done = true; + foreach (var item in this.Items) item.Read(this.Color); + } + } + catch (Exception) + { + this.Fail = "请输入 16 进制或 RGB 颜色值"; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/HexConvertViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/HexConvertViewModel.cs new file mode 100644 index 0000000..3675323 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/HexConvertViewModel.cs @@ -0,0 +1,71 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Converts; + +public enum HexConvertBaseType { [Description("二进制")] X2 = 2, [Description("八进制")] X8 = 8, [Description("十进制")] X10 = 10, [Description("十六进制")] X16 = 16 } + +public partial class HexConvertViewModel : ViewModelBase +{ + [INotifyPropertyChanged] + public partial class Item + { + public Item(HexConvertBaseType type) => this.Type = type; + public HexConvertBaseType Type { get; } + [ObservableProperty] + private string output; + [RelayCommand] + private void Copy() + { + Services.ClipboardService.CopyText(this.Output); + } + public void Read(string input, HexConvertBaseType from) + { + if (string.IsNullOrWhiteSpace(input)) + { + this.Output = string.Empty; + return; + } + try + { + var i = System.Convert.ToInt64(input, (int)from); + this.Output = System.Convert.ToString(i, (int)this.Type); + } + catch (Exception) + { + this.Output = "NaN"; + } + } + } + [ObservableProperty] + private string input; + [ObservableProperty] + private HexConvertBaseType type = HexConvertBaseType.X10; + public IReadOnlyList Items { get; } = new List + { + new Item(HexConvertBaseType.X2), + new Item(HexConvertBaseType.X8), + new Item(HexConvertBaseType.X10), + new Item(HexConvertBaseType.X16), + }; + + partial void OnInputChanged(string value) => Convert(); + partial void OnTypeChanged(HexConvertBaseType value) => Convert(); + + private void Convert() + { + var str = this.Input; + var from = this.Type; + foreach (var item in this.Items) + { + item.Read(str, from); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/IndentJsonViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/IndentJsonViewModel.cs new file mode 100644 index 0000000..277a469 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/IndentJsonViewModel.cs @@ -0,0 +1,138 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using CommunityToolkit.Mvvm.Input; +using System.IO; +using System.Text; +using System; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class IndentJsonViewModel : ViewModelBase, IFileDragDropTarget +{ + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(SaveCommand))] + private string _content; + + [ObservableProperty] + private string _fileName; + + [RelayCommand] + private void Beautify() + { + if (string.IsNullOrWhiteSpace(Content)) return; + try + { + var str = this.Content; + str = StringZipper.Unzip(str); + var sb = new StringBuilder(); + using (var sr = new StringReader(str)) + using (var sw = new StringWriter(sb)) + { + JsonReader r = new JsonTextReader(sr); + JsonWriter w = new JsonTextWriter(sw) { Formatting = Formatting.Indented }; + while (r.Read()) w.WriteToken(r); + } + this.Content = sb.ToString(); + } + catch (System.Exception e) + { + Services.NotifyService.Warning(e); + } + } + + [RelayCommand] + private void Uglify() + { + try + { + if (string.IsNullOrWhiteSpace(Content)) return; + var str = this.Content; + str = StringZipper.Unzip(str); + var sb = new StringBuilder(); + using (var sr = new StringReader(str)) + using (var sw = new StringWriter(sb)) + { + JsonReader r = new JsonTextReader(sr); + JsonWriter w = new JsonTextWriter(sw) { Formatting = Formatting.None }; + while (r.Read()) w.WriteToken(r); + } + this.Content = sb.ToString(); + } + catch (System.Exception e) + { + Services.NotifyService.Warning(e); + } + } + + [RelayCommand] + private void Copy() + { + if (string.IsNullOrWhiteSpace(Content)) return; + Services.ClipboardService.CopyText(Content); + } + + [RelayCommand] + private void Paste() + { + var text = Services.ClipboardService.GetText(); + if (string.IsNullOrWhiteSpace(text)) return; + Content = text; + } + + [RelayCommand] + private void Escape() + { + if (string.IsNullOrWhiteSpace(this.Content)) return; + this.Content = this.Content.Replace("\\", "\\\\").Replace("\"", "\\\""); + } + + [RelayCommand] + private void Unescape() + { + if (string.IsNullOrWhiteSpace(this.Content)) return; + this.Content = this.Content.Replace("\\\\", "\\").Replace("\\\"", "\""); + } + + [RelayCommand] + private void Clear() + { + this.Content = string.Empty; + } + private bool CanSave() => !string.IsNullOrWhiteSpace(this.Content); + + [RelayCommand(CanExecute = nameof(CanSave))] + private void Save() + { + if (string.IsNullOrWhiteSpace(this.Content)) return; + var dialog = Services.FileDialogService.CreateSaveFileDialog(); + dialog.FileName = this.FileName; + dialog.Title = "保存 JSON 文件"; + dialog.Filter = "JSON|*.json|所有文件|*.*"; + if (!string.IsNullOrWhiteSpace(dialog.FileName)) + { + dialog.InitialDirectory = Path.GetDirectoryName(dialog.FileName); + } + else + { + dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + } + if (dialog.ShowDialog()) + { + File.WriteAllText(dialog.FileName, this.Content, Encoding.UTF8); + Services.NotifyService.Success("保存成功"); + } + } + public void OnFilesDropped(string group, string[] filepaths) + { + if (group == "Json") + { + if (filepaths == null || filepaths.Length == 0) return; + var fn = filepaths[0]; + var encoding = Services.FileService.GetEncoding(fn); + if (encoding == null) throw new System.Exception("编码识别失败,可能不是文本文件。"); + this.Content = File.ReadAllText(fn, encoding); + this.FileName = fn; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/IndentXmlViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/IndentXmlViewModel.cs new file mode 100644 index 0000000..079ca09 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/IndentXmlViewModel.cs @@ -0,0 +1,121 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.IO; +using System.Text; +using System.Xml; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class IndentXmlViewModel : ViewModelBase, IFileDragDropTarget +{ + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(SaveCommand))] + private string _content; + + [ObservableProperty] + private string _fileName; + + [RelayCommand] + private void Beautify() + { + if (string.IsNullOrWhiteSpace(Content)) return; + try + { + var str = this.Content; + str = StringZipper.Unzip(str); + XmlDocument doc = new XmlDocument(); + doc.LoadXml(str); + var sb = new StringBuilder(); + using (var w = XmlWriter.Create(sb, new XmlWriterSettings { Indent = true, IndentChars = "\t" })) + { + doc.Save(w); + } + this.Content = sb.ToString(); + } + catch (System.Exception e) + { + Services.NotifyService.Warning(e); + } + } + [RelayCommand] + private void Uglify() + { + if (string.IsNullOrWhiteSpace(Content)) return; + try + { + var str = this.Content; + str = StringZipper.Unzip(str); + XmlDocument doc = new XmlDocument(); + doc.LoadXml(str); + var sb = new StringBuilder(); + using (var w = XmlWriter.Create(sb, new XmlWriterSettings { Indent = false, IndentChars = "\t" })) + { + doc.Save(w); + } + this.Content = sb.ToString(); + } + catch (System.Exception e) + { + Services.NotifyService.Warning(e); + } + } + + [RelayCommand] + private void Copy() + { + if (string.IsNullOrWhiteSpace(Content)) return; + Services.ClipboardService.CopyText(Content); + } + + [RelayCommand] + private void Paste() + { + var text = Services.ClipboardService.GetText(); + if (string.IsNullOrWhiteSpace(text)) return; + Content = text; + } + + [RelayCommand] + private void Clear() + { + this.Content = string.Empty; + } + + private bool CanSave() => !string.IsNullOrWhiteSpace(this.Content); + + [RelayCommand(CanExecute = nameof(CanSave))] + private void Save() + { + if (string.IsNullOrWhiteSpace(this.Content)) return; + var dialog = Services.FileDialogService.CreateSaveFileDialog(); + dialog.FileName = this.FileName; + dialog.Title = "保存 XML 文件"; + dialog.Filter = "XML|*.xml|所有文件|*.*"; + if (!string.IsNullOrWhiteSpace(dialog.FileName)) + { + dialog.InitialDirectory = Path.GetDirectoryName(dialog.FileName); + } + else + { + dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + } + if (dialog.ShowDialog()) + { + File.WriteAllText(dialog.FileName, this.Content, Encoding.UTF8); + Services.NotifyService.Success("保存成功"); + } + } + public void OnFilesDropped(string group, string[] filepaths) + { + if (group == "XML") + { + if (filepaths == null || filepaths.Length == 0) return; + var fn = filepaths[0]; + var encoding = Services.FileService.GetEncoding(fn); + if (encoding == null) throw new System.Exception("编码识别失败,可能不是文本文件。"); + this.Content = File.ReadAllText(fn, encoding); + this.FileName = fn; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharp.res.js b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharp.res.js new file mode 100644 index 0000000..0daaa08 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharp.res.js @@ -0,0 +1,85 @@ +/*[GUID("561A6F5BC8E745439266885631CD20BE")]*/ +String.prototype.format = function () { + var args = arguments; + return this.replace(/\{(\d+)\}/g, + function (m, i) { + return args[i]; + }); +} + +String.prototype.trim = function () { + return this.replace(/(^\s*)|(\s*$)/g, ""); +} + +var keywords = ["abstract", "as", "base", "bool", "break", "byte", "case", "catch", "char", "checked", "class", "const", "continue", "decimal", "default", "delegate", "do", "double", "else", "enum", "event", "explicit", "extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", "in", "in (generic", "modifier)", "int", "interface", "internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "", "override", "params", "private", "protected", "public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", "struct", "switch", "this", "throw", "true", "try", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "virtual", "void", "volatile", "while", "add", "alias", "ascending", "descending", "dynamic", "from", "get", "global", "group", "into", "join", "let", "orderby", "partial", "remove", "select", "set"]; + +function isKeyWords(keyw) { + keyw = keyw.toLowerCase(); + for (var i = 0; i < keywords.length; i++) { + if (keyw == keywords[i]) { + return true; + } + } + return false; +} + +JSON2CSharp = { + _allClass: [], + _genClassCode: function (obj, name) { + var clas = "public class {0}\r\n{\r\n".format(name || "Root"); + for (var n in obj) { + var v = obj[n]; + n = n.trim(); + if (isKeyWords(n)) { + n = "@" + n; + } + clas += " {0} public {1} {2} { get; set; }
".format(this._genComment(v), this._genTypeByProp(n, v), n); + } + clas += "}
"; + this._allClass.push(clas); + return this._allClass.join("
"); + }, + _genTypeByProp: function (name, val) { + switch (Object.prototype.toString.apply(val)) { + case "[object Number]": + { + return val.toString().indexOf(".") > -1 ? "double" : "int"; + } + case "[object Date]": + { + return "DateTime"; + } + case "[object Object]": + { + name = name.substring(0, 1).toUpperCase() + name.substring(1); + this._genClassCode(val, name); + return name; + } + case "[object Array]": + { + return "List<{0}>".format(this._genTypeByProp(name + "Item", val[0])); + } + case "[object Boolean]": + { + return "bool"; + } + default: + { + var d = Date.parse(val); + //ڸʽ + if (isNaN(d) == false) return 'DateTime'; + return "string"; + } + } + }, + _genComment: function (val) { + //return ""; + var commm = typeof (val) == "string" && /.*[\u4e00-\u9fa5]+.*$/.test(val) ? val : ""; + if (commm.length > 0) return "/// <summary>\r\n /// " + commm + "\r\n /// </summary>\r\n"; + return ""; + }, + convert: function (jsonObj) { + this._allClass = []; + return this._genClassCode(jsonObj); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpDemo.res.json b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpDemo.res.json new file mode 100644 index 0000000..b1945aa --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpDemo.res.json @@ -0,0 +1,21 @@ +{ + "animals": { + "dog": [ + { + "name": "Rufus", + "breed": "labrador", + "count": 1, + "twoFeet": false + }, + { + "name": "Marty", + "breed": "whippet", + "count": 1, + "twoFeet": false + } + ], + "cat": { + "name": "Matilda" + } + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpViewModel.cs new file mode 100644 index 0000000..75d13bb --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCSharpViewModel.cs @@ -0,0 +1,72 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Jint; +using LuYao.Toolkit.Resources; +using Newtonsoft.Json.Linq; +using System; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class JsonToCSharpViewModel : ViewModelBase +{ + [ObservableProperty] + private string _json; + [ObservableProperty] + private string _cSharp; + + [RelayCommand] + private void Convert() + { + if (string.IsNullOrWhiteSpace(this.Json)) + { + this.CSharp = "JSON 不能为空"; + return; + } + if (!Format()) return; + try + { + using (var engine = new Engine()) + { + var js = AppResources.Channels_Converts_JsonToCSharp_JS; + engine.Evaluate(js); + engine.SetValue("str", this.Json); + var value = engine.Evaluate(@"var t = JSON.parse(str), e = JSON2CSharp.convert(t);e = e.replace(//g, '\n'); return e;"); + var output = value.AsString(); + output = System.Web.HttpUtility.HtmlDecode(output); + this.CSharp = output; + } + } + catch (Exception e) + { + this.CSharp = e.Message; + } + } + private bool Format() + { + try + { + var token = JToken.Parse(this.Json); + this.Json = token.ToString(Newtonsoft.Json.Formatting.Indented); + return true; + } + catch (Exception e) + { + this.CSharp = "JSON 格式不正确:" + Environment.NewLine + e.Message; + return false; + } + } + [RelayCommand] + private void Demo() + { + this.Json = AppResources.Channels_Converts_JsonToCSharpDemo_JSON; + this.Format(); + } + [RelayCommand] + private void Clear() => this.Json = String.Empty; + [RelayCommand] + private void Copy() + { + if (string.IsNullOrWhiteSpace(this.CSharp)) return; + Services.ClipboardService.CopyText(this.CSharp); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsv.res.js b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsv.res.js new file mode 100644 index 0000000..1b561a4 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsv.res.js @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using Terser v5.10.0. + * Original file: /npm/json2csv@5.0.7/dist/json2csv.umd.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).json2csv={})}(this,(function(t){"use strict";var e;function r(){}function n(){n.init.call(this)}function i(t){return void 0===t._maxListeners?n.defaultMaxListeners:t._maxListeners}function o(t,e,r){if(e)t.call(r);else for(var n=t.length,i=p(t,n),o=0;o0&&u.length>s){u.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+u.length+" "+e+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=t,f.type=e,f.count=u.length,h=f,"function"==typeof console.warn?console.warn(h):console.log(h)}}else u=a[e]=n,++t._eventsCount;return t}function c(t,e,r){var n=!1;function i(){t.removeListener(e,i),n||(n=!0,r.apply(t,arguments))}return i.listener=r,i}function l(t){var e=this._events;if(e){var r=e[t];if("function"==typeof r)return 1;if(r)return r.length}return 0}function p(t,e){for(var r=new Array(e);e--;)r[e]=t[e];return r}r.prototype=Object.create(null),n.EventEmitter=n,n.usingDomains=!1,n.prototype.domain=void 0,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.init=function(){this.domain=null,n.usingDomains&&e.active&&e.Domain,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new r,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},n.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||isNaN(t))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=t,this},n.prototype.getMaxListeners=function(){return i(this)},n.prototype.emit=function(t){var e,r,n,i,f,c,l,p="error"===t;if(c=this._events)p=p&&null==c.error;else if(!p)return!1;if(l=this.domain,p){if(e=arguments[1],!l){if(e instanceof Error)throw e;var d=new Error('Uncaught, unspecified "error" event. ('+e+")");throw d.context=e,d}return e||(e=new Error('Uncaught, unspecified "error" event')),e.domainEmitter=this,e.domain=l,e.domainThrown=!1,l.emit("error",e),!1}if(!(r=c[t]))return!1;var g="function"==typeof r;switch(n=arguments.length){case 1:o(r,g,this);break;case 2:s(r,g,this,arguments[1]);break;case 3:a(r,g,this,arguments[1],arguments[2]);break;case 4:u(r,g,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),f=1;f0;)if(n[s]===e||n[s].listener&&n[s].listener===e){a=n[s].listener,o=s;break}if(o<0)return this;if(1===n.length){if(n[0]=void 0,0==--this._eventsCount)return this._events=new r,this;delete i[t]}else!function(t,e){for(var r=e,n=r+1,i=t.length;n0?Reflect.ownKeys(this._events):[]};var d="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},g=[],y=[],v="undefined"!=typeof Uint8Array?Uint8Array:Array,b=!1;function w(){b=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,r=t.length;e>18&63]+g[i>>12&63]+g[i>>6&63]+g[63&i]);return o.join("")}function _(t){var e;b||w();for(var r=t.length,n=r%3,i="",o=[],s=16383,a=0,u=r-n;au?u:a+s));return 1===n?(e=t[r-1],i+=g[e>>2],i+=g[e<<4&63],i+="=="):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=g[e>>10],i+=g[e>>4&63],i+=g[e<<2&63],i+="="),o.push(i),o.join("")}function S(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,f=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-f)-1,p>>=-f,f+=a;f>0;o=256*o+t[e+c],c+=l,f-=8);for(s=o&(1<<-f)-1,o>>=-f,f+=n;f>0;s=256*s+t[e+c],c+=l,f-=8);if(0===o)o=1-h;else{if(o===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=h}return(p?-1:1)*s*Math.pow(2,o-n)}function E(t,e,r,n,i,o){var s,a,u,h=8*o-i-1,f=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=f):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(s++,u/=2),s+c>=f?(a=0,s=f):s+c>=1?(a=(e*u-1)*Math.pow(2,i),s+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<0;t[r+p]=255&s,p+=d,s/=256,h-=8);t[r+p-d]|=128*g}var R={}.toString,A=Array.isArray||function(t){return"[object Array]"==R.call(t)};function k(){return T.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function O(t,e){if(k()=k())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+k().toString(16)+" bytes");return 0|t}function M(t){return!(null==t||!t._isBuffer)}function x(t,e){if(M(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return ut(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return ht(t).length;default:if(n)return ut(t).length;e=(""+e).toLowerCase(),n=!0}}function U(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return K(this,e,r);case"utf8":case"utf-8":return $(this,e,r);case"ascii":return V(this,e,r);case"latin1":case"binary":return Q(this,e,r);case"base64":return H(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function I(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function D(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=T.from(e,n)),M(e))return 0===e.length?-1:N(t,e,r,n,i);if("number"==typeof e)return e&=255,T.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):N(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function N(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function h(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var f=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var c=!0,l=0;li&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function H(t,e,r){return 0===e&&r===t.length?_(t):_(t.slice(e,r))}function $(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:h>223?3:h>191?2:1;if(i+c<=r)switch(c){case 1:h<128&&(f=h);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&h)<<6|63&o)>127&&(f=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&h)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(f=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&h)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(f=u)}null===f?(f=65533,c=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),i+=c}return function(t){var e=t.length;if(e<=G)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),""},T.prototype.compare=function(t,e,r,n,i){if(!M(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),u=this.slice(n,i),h=t.slice(e,r),f=0;fi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return q(this,t,e,r);case"utf8":case"utf-8":return Y(this,t,e,r);case"ascii":return F(this,t,e,r);case"latin1":case"binary":return z(this,t,e,r);case"base64":return W(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return J(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var G=4096;function V(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function tt(t,e,r,n,i,o){if(!M(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function et(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function rt(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function nt(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function it(t,e,r,n,i){return i||nt(t,0,r,4),E(t,e,r,n,23,4),r+4}function ot(t,e,r,n,i){return i||nt(t,0,r,8),E(t,e,r,n,52,8),r+8}T.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},T.prototype.readUInt8=function(t,e){return e||X(t,1,this.length),this[t]},T.prototype.readUInt16LE=function(t,e){return e||X(t,2,this.length),this[t]|this[t+1]<<8},T.prototype.readUInt16BE=function(t,e){return e||X(t,2,this.length),this[t]<<8|this[t+1]},T.prototype.readUInt32LE=function(t,e){return e||X(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},T.prototype.readUInt32BE=function(t,e){return e||X(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},T.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||X(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},T.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||X(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},T.prototype.readInt8=function(t,e){return e||X(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},T.prototype.readInt16LE=function(t,e){e||X(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},T.prototype.readInt16BE=function(t,e){e||X(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},T.prototype.readInt32LE=function(t,e){return e||X(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},T.prototype.readInt32BE=function(t,e){return e||X(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},T.prototype.readFloatLE=function(t,e){return e||X(t,4,this.length),S(this,t,!0,23,4)},T.prototype.readFloatBE=function(t,e){return e||X(t,4,this.length),S(this,t,!1,23,4)},T.prototype.readDoubleLE=function(t,e){return e||X(t,8,this.length),S(this,t,!0,52,8)},T.prototype.readDoubleBE=function(t,e){return e||X(t,8,this.length),S(this,t,!1,52,8)},T.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||tt(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},T.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,1,255,0),T.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},T.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,2,65535,0),T.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):et(this,t,e,!0),e+2},T.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,2,65535,0),T.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):et(this,t,e,!1),e+2},T.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,4,4294967295,0),T.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):rt(this,t,e,!0),e+4},T.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,4,4294967295,0),T.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):rt(this,t,e,!1),e+4},T.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);tt(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},T.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);tt(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},T.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,1,127,-128),T.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},T.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,2,32767,-32768),T.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):et(this,t,e,!0),e+2},T.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,2,32767,-32768),T.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):et(this,t,e,!1),e+2},T.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,4,2147483647,-2147483648),T.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):rt(this,t,e,!0),e+4},T.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||tt(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),T.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):rt(this,t,e,!1),e+4},T.prototype.writeFloatLE=function(t,e,r){return it(this,t,e,!0,r)},T.prototype.writeFloatBE=function(t,e,r){return it(this,t,e,!1,r)},T.prototype.writeDoubleLE=function(t,e,r){return ot(this,t,e,!0,r)},T.prototype.writeDoubleBE=function(t,e,r){return ot(this,t,e,!1,r)},T.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!T.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function ht(t){return function(t){var e,r,n,i,o,s;b||w();var a=t.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");o="="===t[a-2]?2:"="===t[a-1]?1:0,s=new v(3*a/4-o),n=o>0?a-4:a;var u=0;for(e=0,r=0;e>16&255,s[u++]=i>>8&255,s[u++]=255&i;return 2===o?(i=y[t.charCodeAt(e)]<<2|y[t.charCodeAt(e+1)]>>4,s[u++]=255&i):1===o&&(i=y[t.charCodeAt(e)]<<10|y[t.charCodeAt(e+1)]<<4|y[t.charCodeAt(e+2)]>>2,s[u++]=i>>8&255,s[u++]=255&i),s}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(st,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function ft(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function ct(t){return null!=t&&(!!t._isBuffer||lt(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&<(t.slice(0,0))}(t))}function lt(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function pt(){throw new Error("setTimeout has not been defined")}function dt(){throw new Error("clearTimeout has not been defined")}var gt=pt,yt=dt;function vt(t){if(gt===setTimeout)return setTimeout(t,0);if((gt===pt||!gt)&&setTimeout)return gt=setTimeout,setTimeout(t,0);try{return gt(t,0)}catch(e){try{return gt.call(null,t,0)}catch(e){return gt.call(this,t,0)}}}"function"==typeof d.setTimeout&&(gt=setTimeout),"function"==typeof d.clearTimeout&&(yt=clearTimeout);var bt,wt=[],mt=!1,_t=-1;function St(){mt&&bt&&(mt=!1,bt.length?wt=bt.concat(wt):_t=-1,wt.length&&Et())}function Et(){if(!mt){var t=vt(St);mt=!0;for(var e=wt.length;e;){for(bt=wt,wt=[];++_t1)for(var r=1;r=i)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}})),s=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Nt(e)?r.showHidden=e:e&&Vt(r,e),Ft(r.showHidden)&&(r.showHidden=!1),Ft(r.depth)&&(r.depth=2),Ft(r.colors)&&(r.colors=!1),Ft(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=Mt),Ut(r,t,r.depth)}function Mt(t,e){var r=Bt.styles[e];return r?"["+Bt.colors[r][0]+"m"+t+"["+Bt.colors[r][1]+"m":t}function xt(t,e){return t}function Ut(t,e,r){if(t.customInspect&&e&&$t(e.inspect)&&e.inspect!==Bt&&(!e.constructor||e.constructor.prototype!==e)){var n=e.inspect(r,t);return Yt(n)||(n=Ut(t,n,r)),n}var i=function(t,e){if(Ft(e))return t.stylize("undefined","undefined");if(Yt(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(n=e,"number"==typeof n)return t.stylize(""+e,"number");var n;if(Nt(e))return t.stylize(""+e,"boolean");if(qt(e))return t.stylize("null","null")}(t,e);if(i)return i;var o=Object.keys(e),s=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(o);if(t.showHidden&&(o=Object.getOwnPropertyNames(e)),Ht(e)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return It(e);if(0===o.length){if($t(e)){var a=e.name?": "+e.name:"";return t.stylize("[Function"+a+"]","special")}if(zt(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(Jt(e))return t.stylize(Date.prototype.toString.call(e),"date");if(Ht(e))return It(e)}var u,h,f="",c=!1,l=["{","}"];(u=e,Array.isArray(u)&&(c=!0,l=["[","]"]),$t(e))&&(f=" [Function"+(e.name?": "+e.name:"")+"]");return zt(e)&&(f=" "+RegExp.prototype.toString.call(e)),Jt(e)&&(f=" "+Date.prototype.toUTCString.call(e)),Ht(e)&&(f=" "+It(e)),0!==o.length||c&&0!=e.length?r<0?zt(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special"):(t.seen.push(e),h=c?function(t,e,r,n,i){for(var o=[],s=0,a=e.length;s60)return r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1];return r[0]+e+" "+t.join(", ")+" "+r[1]}(h,f,l)):l[0]+f+l[1]}function It(t){return"["+Error.prototype.toString.call(t)+"]"}function Dt(t,e,r,n,i,o){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),Qt(n,i)||(s="["+i+"]"),a||(t.seen.indexOf(u.value)<0?(a=qt(r)?Ut(t,u.value,null):Ut(t,u.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),Ft(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function Nt(t){return"boolean"==typeof t}function qt(t){return null===t}function Yt(t){return"string"==typeof t}function Ft(t){return void 0===t}function zt(t){return Wt(t)&&"[object RegExp]"===Gt(t)}function Wt(t){return"object"==typeof t&&null!==t}function Jt(t){return Wt(t)&&"[object Date]"===Gt(t)}function Ht(t){return Wt(t)&&("[object Error]"===Gt(t)||t instanceof Error)}function $t(t){return"function"==typeof t}function Gt(t){return Object.prototype.toString.call(t)}function Vt(t,e){if(!e||!Wt(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}function Qt(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Kt(){this.head=null,this.tail=null,this.length=0}Bt.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},Bt.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},Kt.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},Kt.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},Kt.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},Kt.prototype.clear=function(){this.head=this.tail=null,this.length=0},Kt.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},Kt.prototype.concat=function(t){if(0===this.length)return T.alloc(0);if(1===this.length)return this.head.data;for(var e=T.allocUnsafe(t>>>0),r=this.head,n=0;r;)r.data.copy(e,n),n+=r.data.length,r=r.next;return e};var Zt=T.isEncoding||function(t){switch(t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Xt(t){switch(this.encoding=(t||"utf8").toLowerCase().replace(/[-_]/,""),function(t){if(t&&!Zt(t))throw new Error("Unknown encoding: "+t)}(t),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=ee;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=re;break;default:return void(this.write=te)}this.charBuffer=new T(6),this.charReceived=0,this.charLength=0}function te(t){return t.toString(this.encoding)}function ee(t){this.charReceived=t.length%2,this.charLength=this.charReceived?2:0}function re(t){this.charReceived=t.length%3,this.charLength=this.charReceived?3:0}Xt.prototype.write=function(t){for(var e="";this.charLength;){var r=t.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&i<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var n=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,n),n-=this.charReceived);var i;n=(e+=t.toString(this.encoding,0,n)).length-1;if((i=e.charCodeAt(n))>=55296&&i<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,n)}return e},Xt.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var r=t[t.length-e];if(1==e&&r>>5==6){this.charLength=2;break}if(e<=2&&r>>4==14){this.charLength=3;break}if(e<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=e},Xt.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;e+=n.slice(0,r).toString(i)}return e},oe.ReadableState=ie;var ne=function(t){if(Ft(jt)&&(jt=""),t=t.toUpperCase(),!Pt[t])if(new RegExp("\\b"+t+"\\b","i").test(jt)){Pt[t]=function(){var e=Lt.apply(null,arguments);console.error("%s %d: %s",t,0,e)}}else Pt[t]=function(){};return Pt[t]}("stream");function ie(t,e){t=t||{},this.objectMode=!!t.objectMode,e instanceof Be&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,n=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Kt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(this.decoder=new Xt(t.encoding),this.encoding=t.encoding)}function oe(t){if(!(this instanceof oe))return new oe(t);this._readableState=new ie(t,this),this.readable=!0,t&&"function"==typeof t.read&&(this._read=t.read),n.call(this)}function se(t,e,r,n,i){var o=function(t,e){var r=null;ct(e)||"string"==typeof e||null==e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));return r}(e,r);if(o)t.emit("error",o);else if(null===r)e.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,he(t)}(t,e);else if(e.objectMode||r&&r.length>0)if(e.ended&&!i){var s=new Error("stream.push() after EOF");t.emit("error",s)}else if(e.endEmitted&&i){var a=new Error("stream.unshift() after end event");t.emit("error",a)}else{var u;!e.decoder||i||n||(r=e.decoder.write(r),u=!e.objectMode&&0===r.length),i||(e.reading=!1),u||(e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&he(t))),function(t,e){e.readingMore||(e.readingMore=!0,Rt(ce,t,e))}(t,e)}else i||(e.reading=!1);return function(t){return!t.ended&&(t.needReadable||t.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=ae?t=ae:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function he(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(ne("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?Rt(fe,t):fe(t))}function fe(t){ne("emit readable"),t.emit("readable"),de(t)}function ce(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;to.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0===(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=T.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;for(;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0===(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e);return n}(t,e.buffer,e.decoder),r);var r}function ye(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,Rt(ve,e,t))}function ve(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function be(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return ne("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?ye(this):he(this),null;if(0===(t=ue(t,e))&&e.ended)return 0===e.length&&ye(this),null;var n,i=e.needReadable;return ne("need readable",i),(0===e.length||e.length-t0?ge(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&ye(this)),null!==n&&this.emit("data",n),n},oe.prototype._read=function(t){this.emit("error",new Error("not implemented"))},oe.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,ne("pipe count=%d opts=%j",n.pipesCount,e);var i=!e||!1!==e.end?s:h;function o(t){ne("onunpipe"),t===r&&h()}function s(){ne("onend"),t.end()}n.endEmitted?Rt(i):r.once("end",i),t.on("unpipe",o);var a=function(t){return function(){var e=t._readableState;ne("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&t.listeners("data").length&&(e.flowing=!0,de(t))}}(r);t.on("drain",a);var u=!1;function h(){ne("cleanup"),t.removeListener("close",p),t.removeListener("finish",d),t.removeListener("drain",a),t.removeListener("error",l),t.removeListener("unpipe",o),r.removeListener("end",s),r.removeListener("end",h),r.removeListener("data",c),u=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||a()}var f=!1;function c(e){ne("ondata"),f=!1,!1!==t.write(e)||f||((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==be(n.pipes,t))&&!u&&(ne("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,f=!0),r.pause())}function l(e){ne("onerror",e),g(),t.removeListener("error",l),0===function(t,e){return t.listeners(e).length}(t,"error")&&t.emit("error",e)}function p(){t.removeListener("finish",d),g()}function d(){ne("onfinish"),t.removeListener("close",p),g()}function g(){ne("unpipe"),r.unpipe(t)}return r.on("data",c),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",l),t.once("close",p),t.once("finish",d),t.emit("pipe",r),n.flowing||(ne("pipe resume"),r.resume()),t},oe.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this)),this;if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Se.prototype._write=function(t,e,r){r(new Error("not implemented"))},Se.prototype._writev=null,Se.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,Te(t,e),r&&(e.finished?Rt(r):t.once("finish",r));e.ended=!0,t.writable=!1}(this,n,r)},Ot(Be,oe);for(var Ce=Object.keys(Se.prototype),je=0;je-1},jr.prototype.set=function(t,e){var r=this.__data__,n=Br(r,t);return n<0?r.push([t,e]):r[n][1]=e,this},Pr.prototype.clear=function(){this.__data__={hash:new Cr,map:new(kr||jr),string:new Cr}},Pr.prototype.delete=function(t){return Ur(this,t).delete(t)},Pr.prototype.get=function(t){return Ur(this,t).get(t)},Pr.prototype.has=function(t){return Ur(this,t).has(t)},Pr.prototype.set=function(t,e){return Ur(this,t).set(t,e),this};var Dr=qr((function(t){var e;t=null==(e=t)?"":function(t){if("string"==typeof t)return t;if(zr(t))return Lr?Lr.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}(e);var r=[];return ar.test(t)&&r.push(""),t.replace(ur,(function(t,e,n,i){r.push(n?i.replace(hr,"$1"):e||t)})),r}));function Nr(t){if("string"==typeof t||zr(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function qr(t,e){if("function"!=typeof t||e&&"function"!=typeof e)throw new TypeError("Expected a function");var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var s=t.apply(this,n);return r.cache=o.set(i,s),s};return r.cache=new(qr.Cache||Pr),r}qr.Cache=Pr;var Yr=Array.isArray;function Fr(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function zr(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==Sr.call(t)}var Wr=function(t,e,r){var n=null==t?void 0:Mr(t,e);return void 0===n?r:n};var Jr=function t(e,r,n){var i=Array.isArray(r)?r:r.split("."),o=Ke(i),s=o[0],a=o.slice(1);return He({},e,Je({},s,i.length>1?t(e[s]||{},a,n):n))},Hr=function t(e,r){var n=Array.isArray(r)?r:r.split("."),i=Ke(n),o=i[0],s=i.slice(1);return"object"!==Ye(e[o])?e:1===n.length?Object.keys(e).filter((function(t){return t!==o})).reduce((function(t,r){return Object.assign(t,Je({},r,e[r]))}),{}):Object.keys(e).reduce((function(r,n){return He({},r,Je({},n,n!==o?e[n]:t(e[o],s)))}),{})},$r=function(t,e){var r=!0;return t.reduce((function(t,n){return null==n&&(n=""),r?(r=!1,"".concat(n)):"".concat(t).concat(e).concat(n)}),"")},Gr=function(t,e){try{return t.push.apply(t,Ze(e)),t}catch(r){return t.concat(e)}},Vr=function(t,e,r){return void 0===t[e]?r:t[e]},Qr=$r,Kr=Gr,Zr=function(){function t(e){Fe(this,t),this.opts=this.preprocessOpts(e)}return We(t,[{key:"preprocessOpts",value:function(t){var e=Object.assign({},t);return e.transforms=Array.isArray(e.transforms)?e.transforms:e.transforms?[e.transforms]:[],e.delimiter=e.delimiter||",",e.eol=e.eol||tr,e.quote="string"==typeof e.quote?e.quote:'"',e.escapedQuote="string"==typeof e.escapedQuote?e.escapedQuote:"".concat(e.quote).concat(e.quote),e.header=!1!==e.header,e.includeEmptyRows=e.includeEmptyRows||!1,e.withBOM=e.withBOM||!1,e}},{key:"preprocessFieldsInfo",value:function(t){var e=this;return t.map((function(t){if("string"==typeof t)return{label:t,value:t.includes(".")||t.includes("[")?function(r){return Wr(r,t,e.opts.defaultValue)}:function(r){return Vr(r,t,e.opts.defaultValue)}};if("object"===Ye(t)){var r="default"in t?t.default:e.opts.defaultValue;if("string"==typeof t.value)return{label:t.label||t.value,value:t.value.includes(".")||t.value.includes("[")?function(e){return Wr(e,t.value,r)}:function(e){return Vr(e,t.value,r)}};if("function"==typeof t.value){var n=t.label||t.value.name||"",i={label:n,default:r};return{label:n,value:function(e){var n=t.value(e,i);return null==n?r:n}}}}throw new Error("Invalid field info option. "+JSON.stringify(t))}))}},{key:"getHeader",value:function(){var t=this;return Qr(this.opts.fields.map((function(e){return t.processValue(e.label)})),this.opts.delimiter)}},{key:"preprocessRow",value:function(t){return this.opts.transforms.reduce((function(t,e){return t.map((function(t){return e(t)})).reduce(Kr,[])}),[t])}},{key:"processRow",value:function(t){var e=this;if(t){var r=this.opts.fields.map((function(r){return e.processCell(t,r)}));if(this.opts.includeEmptyRows||!r.every((function(t){return void 0===t})))return Qr(r,this.opts.delimiter)}}},{key:"processCell",value:function(t,e){return this.processValue(e.value(t))}},{key:"processValue",value:function(t){if(null!=t){var e=Ye(t);if("boolean"!==e&&"number"!==e&&"string"!==e){if(void 0===(t=JSON.stringify(t)))return;'"'===t[0]&&(t=t.replace(/^"(.+)"$/,"$1"))}return"string"==typeof t&&(this.opts.excelStrings?(t.includes(this.opts.quote)&&(t=t.replace(new RegExp(this.opts.quote,"g"),"".concat(this.opts.escapedQuote).concat(this.opts.escapedQuote))),t='"=""'.concat(t,'"""')):(t.includes(this.opts.quote)&&(t=t.replace(new RegExp(this.opts.quote,"g"),this.opts.escapedQuote)),t="".concat(this.opts.quote).concat(t).concat(this.opts.quote))),t}}}]),t}(),Xr=$r,tn=Gr,en=function(t){function e(t){var r;return Fe(this,e),(r=Qe(this,Ge(e).call(this,t))).opts.fields&&(r.opts.fields=r.preprocessFieldsInfo(r.opts.fields)),r}return $e(e,t),We(e,[{key:"parse",value:function(t){var e=this.preprocessData(t);this.opts.fields||(this.opts.fields=e.reduce((function(t,e){return Object.keys(e).forEach((function(e){t.includes(e)||t.push(e)})),t}),[]),this.opts.fields=this.preprocessFieldsInfo(this.opts.fields));var r=this.opts.header?this.getHeader():"",n=this.processData(e);return(this.opts.withBOM?"\ufeff":"")+r+(r&&n?this.opts.eol:"")+n}},{key:"preprocessData",value:function(t){var e=this,r=Array.isArray(t)?t:[t];if(!this.opts.fields&&(0===r.length||"object"!==Ye(r[0])))throw new Error('Data should not be empty or the "fields" option should be included');return 0===this.opts.transforms.length?r:r.map((function(t){return e.preprocessRow(t)})).reduce(tn,[])}},{key:"processData",value:function(t){var e=this;return Xr(t.map((function(t){return e.processRow(t)})).filter((function(t){return t})),this.opts.eol)}}]),e}(Zr),rn={},nn=rn.LEFT_BRACE=1,on=rn.RIGHT_BRACE=2,sn=rn.LEFT_BRACKET=3,an=rn.RIGHT_BRACKET=4,un=rn.COLON=5,hn=rn.COMMA=6,fn=rn.TRUE=7,cn=rn.FALSE=8,ln=rn.NULL=9,pn=rn.STRING=10,dn=rn.NUMBER=11,gn=rn.START=17,yn=rn.STOP=18,vn=rn.TRUE1=33,bn=rn.TRUE2=34,wn=rn.TRUE3=35,mn=rn.FALSE1=49,_n=rn.FALSE2=50,Sn=rn.FALSE3=51,En=rn.FALSE4=52,Rn=rn.NULL1=65,An=rn.NULL2=66,kn=rn.NULL3=67,On=rn.NUMBER1=81,Tn=rn.NUMBER3=83,Ln=rn.STRING1=97,Cn=rn.STRING2=98,jn=rn.STRING3=99,Pn=rn.STRING4=100,Bn=rn.STRING5=101,Mn=rn.STRING6=102,xn=rn.VALUE=113,Un=rn.KEY=114,In=rn.OBJECT=129,Dn=rn.ARRAY=130,Nn="\\".charCodeAt(0),qn="/".charCodeAt(0),Yn="\b".charCodeAt(0),Fn="\f".charCodeAt(0),zn="\n".charCodeAt(0),Wn="\r".charCodeAt(0),Jn="\t".charCodeAt(0),Hn=65536;function $n(){this.tState=gn,this.value=void 0,this.string=void 0,this.stringBuffer=T.alloc?T.alloc(Hn):new T(Hn),this.stringBufferOffset=0,this.unicode=void 0,this.highSurrogate=void 0,this.key=void 0,this.mode=void 0,this.stack=[],this.state=xn,this.bytes_remaining=0,this.bytes_in_sequence=0,this.temp_buffs={2:new T(2),3:new T(3),4:new T(4)},this.offset=-1}$n.toknam=function(t){for(var e=Object.keys(rn),r=0,n=e.length;r=Hn&&(this.string+=this.stringBuffer.toString("utf8"),this.stringBufferOffset=0),this.stringBuffer[this.stringBufferOffset++]=t},Gn.appendStringBuf=function(t,e,r){var n=t.length;"number"==typeof e&&(n="number"==typeof r?r<0?t.length-e+r:r-e:t.length-e),n<0&&(n=0),this.stringBufferOffset+n>Hn&&(this.string+=this.stringBuffer.toString("utf8",0,this.stringBufferOffset),this.stringBufferOffset=0),t.copy(this.stringBuffer,this.stringBufferOffset,e,r),this.stringBufferOffset+=n},Gn.write=function(t){var e;"string"==typeof t&&(t=new T(t));for(var r=0,n=t.length;r=48&&e<64)this.string=String.fromCharCode(e),this.tState=Tn;else if(32!==e&&9!==e&&10!==e&&13!==e)return this.charError(t,r)}else if(this.tState===Ln)if(e=t[r],this.bytes_remaining>0){for(var i=0;i=128){if(e<=193||e>244)return this.onError(new Error("Invalid UTF-8 character at position "+r+" in state "+$n.toknam(this.tState)));if(e>=194&&e<=223&&(this.bytes_in_sequence=2),e>=224&&e<=239&&(this.bytes_in_sequence=3),e>=240&&e<=244&&(this.bytes_in_sequence=4),this.bytes_in_sequence+r>t.length){for(var o=0;o<=t.length-1-r;o++)this.temp_buffs[this.bytes_in_sequence][o]=t[r+o];this.bytes_remaining=r+this.bytes_in_sequence-t.length,r=t.length-1}else this.appendStringBuf(t,r,r+this.bytes_in_sequence),r=r+this.bytes_in_sequence-1}else if(34===e)this.tState=gn,this.string+=this.stringBuffer.toString("utf8",0,this.stringBufferOffset),this.stringBufferOffset=0,this.onToken(pn,this.string),this.offset+=T.byteLength(this.string,"utf8")+1,this.string=void 0;else if(92===e)this.tState=Cn;else{if(!(e>=32))return this.charError(t,r);this.appendStringChar(e)}else if(this.tState===Cn)if(34===(e=t[r]))this.appendStringChar(e),this.tState=Ln;else if(92===e)this.appendStringChar(Nn),this.tState=Ln;else if(47===e)this.appendStringChar(qn),this.tState=Ln;else if(98===e)this.appendStringChar(Yn),this.tState=Ln;else if(102===e)this.appendStringChar(Fn),this.tState=Ln;else if(110===e)this.appendStringChar(zn),this.tState=Ln;else if(114===e)this.appendStringChar(Wn),this.tState=Ln;else if(116===e)this.appendStringChar(Jn),this.tState=Ln;else{if(117!==e)return this.charError(t,r);this.unicode="",this.tState=jn}else if(this.tState===jn||this.tState===Pn||this.tState===Bn||this.tState===Mn){if(!((e=t[r])>=48&&e<64||e>64&&e<=70||e>96&&e<=102))return this.charError(t,r);if(this.unicode+=String.fromCharCode(e),this.tState++===Mn){var s=parseInt(this.unicode,16);this.unicode=void 0,void 0!==this.highSurrogate&&s>=56320&&s<57344?(this.appendStringBuf(new T(String.fromCharCode(this.highSurrogate,s))),this.highSurrogate=void 0):void 0===this.highSurrogate&&s>=55296&&s<56320?this.highSurrogate=s:(void 0!==this.highSurrogate&&(this.appendStringBuf(new T(String.fromCharCode(this.highSurrogate))),this.highSurrogate=void 0),this.appendStringBuf(new T(String.fromCharCode(s)))),this.tState=Ln}}else if(this.tState===On||this.tState===Tn)switch(e=t[r]){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 46:case 101:case 69:case 43:case 45:this.string+=String.fromCharCode(e),this.tState=Tn;break;default:this.tState=gn;var a=Number(this.string);if(isNaN(a))return this.charError(t,r);this.string.match(/[0-9]+/)==this.string&&a.toString()!=this.string?this.onToken(pn,this.string):this.onToken(dn,a),this.offset+=this.string.length-1,this.string=void 0,r--}else if(this.tState===vn){if(114!==t[r])return this.charError(t,r);this.tState=bn}else if(this.tState===bn){if(117!==t[r])return this.charError(t,r);this.tState=wn}else if(this.tState===wn){if(101!==t[r])return this.charError(t,r);this.tState=gn,this.onToken(fn,!0),this.offset+=3}else if(this.tState===mn){if(97!==t[r])return this.charError(t,r);this.tState=_n}else if(this.tState===_n){if(108!==t[r])return this.charError(t,r);this.tState=Sn}else if(this.tState===Sn){if(115!==t[r])return this.charError(t,r);this.tState=En}else if(this.tState===En){if(101!==t[r])return this.charError(t,r);this.tState=gn,this.onToken(cn,!1),this.offset+=4}else if(this.tState===Rn){if(117!==t[r])return this.charError(t,r);this.tState=An}else if(this.tState===An){if(108!==t[r])return this.charError(t,r);this.tState=kn}else if(this.tState===kn){if(108!==t[r])return this.charError(t,r);this.tState=gn,this.onToken(ln,null),this.offset+=3}},Gn.onToken=function(t,e){},Gn.parseError=function(t,e){this.tState=yn,this.onError(new Error("Unexpected "+$n.toknam(t)+(e?"("+JSON.stringify(e)+")":"")+" in state "+$n.toknam(this.state)))},Gn.push=function(){this.stack.push({value:this.value,key:this.key,mode:this.mode})},Gn.pop=function(){var t=this.value,e=this.stack.pop();this.value=e.value,this.key=e.key,this.mode=e.mode,this.emit(t),this.mode||(this.state=xn)},Gn.emit=function(t){this.mode&&(this.state=hn),this.onValue(t)},Gn.onValue=function(t){},Gn.onToken=function(t,e){if(this.state===xn)if(t===pn||t===dn||t===fn||t===cn||t===ln)this.value&&(this.value[this.key]=e),this.emit(e);else if(t===nn)this.push(),this.value?this.value=this.value[this.key]={}:this.value={},this.key=void 0,this.state=Un,this.mode=In;else if(t===sn)this.push(),this.value?this.value=this.value[this.key]=[]:this.value=[],this.key=0,this.mode=Dn,this.state=xn;else if(t===on){if(this.mode!==In)return this.parseError(t,e);this.pop()}else{if(t!==an)return this.parseError(t,e);if(this.mode!==Dn)return this.parseError(t,e);this.pop()}else if(this.state===Un)if(t===pn)this.key=e,this.state=un;else{if(t!==on)return this.parseError(t,e);this.pop()}else if(this.state===un){if(t!==un)return this.parseError(t,e);this.state=xn}else{if(this.state!==hn)return this.parseError(t,e);if(t===hn)this.mode===Dn?(this.key++,this.state=xn):this.mode===In&&(this.state=Un);else{if(!(t===an&&this.mode===Dn||t===on&&this.mode===In))return this.parseError(t,e);this.pop()}}},$n.C=rn;var Vn=$n,Qn=function(t){function e(t,r){var n;return Fe(this,e),n=Qe(this,Ge(e).call(this,r)),Object.getOwnPropertyNames(Zr.prototype).forEach((function(t){return n[t]=Zr.prototype[t]})),n.opts=n.preprocessOpts(t),n._data="",n._hasWritten=!1,n._readableState.objectMode?n.initObjectModeParse():n.opts.ndjson?n.initNDJSONParse():n.initJSONParser(),n.opts.withBOM&&n.push("\ufeff"),n.opts.fields&&(n.opts.fields=n.preprocessFieldsInfo(n.opts.fields),n.pushHeader()),n}return $e(e,t),We(e,[{key:"initObjectModeParse",value:function(){var t=this;this.parser={write:function(e){t.pushLine(e)},getPendingData:function(){}}}},{key:"initNDJSONParse",value:function(){var t=this;this.parser={_data:"",write:function(e){this._data+=e.toString();var r=this._data.split("\n").map((function(t){return t.trim()})).filter((function(t){return""!==t})),n=!1;r.forEach((function(e,i){try{t.pushLine(JSON.parse(e))}catch(o){i===r.length-1?n=!0:(o.message="Invalid JSON (".concat(e,")"),t.emit("error",o))}})),this._data=n?this._data.slice(this._data.lastIndexOf("\n")):""},getPendingData:function(){return this._data}}}},{key:"initJSONParser",value:function(){var t=this;this.parser=new Vn,this.parser.onValue=function(e){this.stack.length===this.depthToEmit&&t.pushLine(e)},this.parser._onToken=this.parser.onToken,this.parser.onToken=function(e,r){t.parser._onToken(e,r),0!==this.stack.length||t.opts.fields||this.mode===Vn.C.ARRAY||this.mode===Vn.C.OBJECT||this.onError(new Error('Data should not be empty or the "fields" option should be included')),1===this.stack.length&&(void 0===this.depthToEmit&&(this.depthToEmit=this.mode===Vn.C.ARRAY?1:0),0!==this.depthToEmit&&1===this.stack.length&&(this.value=void 0))},this.parser.getPendingData=function(){return this.value},this.parser.onError=function(e){e.message.includes("Unexpected")&&(e.message="Invalid JSON (".concat(e.message,")")),t.emit("error",e)}}},{key:"_transform",value:function(t,e,r){this.parser.write(t),r()}},{key:"_flush",value:function(t){this.parser.getPendingData()&&t(new Error("Invalid data received from stdin",this.parser.getPendingData())),t()}},{key:"pushHeader",value:function(){if(this.opts.header){var t=this.getHeader();this.emit("header",t),this.push(t),this._hasWritten=!0}}},{key:"pushLine",value:function(t){var e=this,r=this.preprocessRow(t);this._hasWritten||(this.opts.fields=this.opts.fields||this.preprocessFieldsInfo(Object.keys(r[0])),this.pushHeader()),r.forEach((function(t){var r=e.processRow(t,e.opts);void 0!==r&&(e.emit("line",r),e.push(e._hasWritten?e.opts.eol+r:r),e._hasWritten=!0)}))}}]),e}(qe.Transform),Kn=Qn,Zn=qe.Transform,Xn=$r,ti=function(){function t(e,r){Fe(this,t),this.input=new Zn(r),this.input._read=function(){},this.transform=new Kn(e,r),this.processor=this.input.pipe(this.transform)}return We(t,[{key:"fromInput",value:function(t){if(this._input)throw new Error("Async parser already has an input.");return this._input=t,this.input=this._input.pipe(this.processor),this}},{key:"throughTransform",value:function(t){if(this._output)throw new Error("Can't add transforms once an output has been added.");return this.processor=this.processor.pipe(t),this}},{key:"toOutput",value:function(t){if(this._output)throw new Error("Async parser already has an output.");return this._output=t,this.processor=this.processor.pipe(t),this}},{key:"promise",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return new Promise((function(r,n){if(e){var i=[];t.processor.on("data",(function(t){return i.push(t.toString())})).on("finish",(function(){return r(Xn(i,""))})).on("error",(function(t){return n(t)}))}else t.processor.on("finish",(function(){return r()})).on("error",(function(t){return n(t)}))}))}}]),t}(),ei=ti;var ri=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.objects,r=void 0===e||e,n=t.arrays,i=void 0!==n&&n,o=t.separator,s=void 0===o?".":o;function a(t,e,n){return Object.keys(t).forEach((function(o){var u=n?"".concat(n).concat(s).concat(o):o,h=t[o];r&&"object"===Ye(h)&&null!==h&&!Array.isArray(h)&&"[object Function]"!==Object.prototype.toString.call(h.toJSON)&&Object.keys(h).length||i&&Array.isArray(h)?a(h,e,u):e[u]=h})),e}return function(t){return a(t,{})}},ni=Jr,ii=Hr,oi=Gr;function si(t,e){return Object.keys(t).reduce((function(r,n){var i=e?"".concat(e,".").concat(n):n,o=t[n];return"object"===Ye(o)&&null!==o&&!Array.isArray(o)&&"[object Function]"!==Object.prototype.toString.call(o.toJSON)&&Object.keys(o).length?r=r.concat(si(o,i)):Array.isArray(o)&&(r.push(i),r=r.concat(o.map((function(t){return si(t,i)})).reduce(oi,[]).filter((function(t,e,r){return r.indexOf(t)!==e})))),r}),[])}var ai=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.paths,r=void 0===e?void 0:e,n=t.blankOut,i=void 0!==n&&n;function o(t,e){return t.map((function(t){var r=Wr(t,e);return Array.isArray(r)?r.length?r.map((function(r,n){return ni(i&&n>0?{}:t,e,r)})):ii(t,e):t})).reduce(oi,[])}return r=Array.isArray(r)?r:r?[r]:void 0,function(t){return(r||si(t)).reduce(o,[t])}},ui=qe.Readable,hi=en,fi=ei,ci=Kn,li=function(t,e){return new en(e).parse(t)},pi=function(t,e,r){try{t instanceof ui||(r=Object.assign({},r,{objectMode:!0}));var n=new ei(e,r),i=n.promise();return Array.isArray(t)?(t.forEach((function(t){return n.input.push(t)})),n.input.push(null)):t instanceof ui?n.fromInput(t):(n.input.push(t),n.input.push(null)),i}catch(t){return Promise.reject(t)}},di={flatten:ri,unwind:ai},gi={Parser:hi,AsyncParser:fi,Transform:ci,parse:li,parseAsync:pi,transforms:di};t.AsyncParser=fi,t.Parser=hi,t.Transform=ci,t.default=gi,t.parse=li,t.parseAsync=pi,t.transforms=di,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=/sm/ef9dc7d5fd5685a1d9971a986235276b4d0c415af23e0a5c859ea55f1d3aee90.map \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvDemo.res.json b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvDemo.res.json new file mode 100644 index 0000000..f521007 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvDemo.res.json @@ -0,0 +1,52 @@ +[ + { + "album": "The White Stripes", + "year": 1999, + "US_peak_chart_post": "-" + }, + { + "album": "De Stijl", + "year": 2000, + "US_peak_chart_post": "-" + }, + { + "album": "White Blood Cells", + "year": 2001, + "US_peak_chart_post": 61 + }, + { + "album": "Elephant", + "year": 2003, + "US_peak_chart_post": 6 + }, + { + "album": "Get Behind Me Satan", + "year": 2005, + "US_peak_chart_post": 3 + }, + { + "album": "Icky Thump", + "year": 2007, + "US_peak_chart_post": 2 + }, + { + "album": "Under Great White Northern Lights", + "year": 2010, + "US_peak_chart_post": 11 + }, + { + "album": "Live in Mississippi", + "year": 2011, + "US_peak_chart_post": "-" + }, + { + "album": "Live at the Gold Dollar", + "year": 2012, + "US_peak_chart_post": "-" + }, + { + "album": "Nine Miles from the White City", + "year": 2013, + "US_peak_chart_post": "-" + } +] \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvViewModel.cs new file mode 100644 index 0000000..add22f8 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/JsonToCsvViewModel.cs @@ -0,0 +1,71 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Jint; +using LuYao.Toolkit.Resources; +using Newtonsoft.Json.Linq; +using System; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class JsonToCsvViewModel : ViewModelBase +{ + [ObservableProperty] + private string _json; + + [ObservableProperty] + private string _csv; + [RelayCommand] + private void Convert() + { + if (string.IsNullOrWhiteSpace(this.Json)) + { + this.Csv = "JSON 不能为空"; + return; + } + if (!Format()) return; + try + { + using (var engine = new Engine()) + { + var js = AppResources.Channels_Converts_JsonToCsv_JS; + engine.Evaluate(js); + engine.SetValue("str", this.Json); + var value = engine.Evaluate("var t = JSON.parse(str);var opts = {transforms:[ json2csv.transforms.flatten()]};var parser = new json2csv.Parser(opts);return parser.parse(t);"); + var output = value.AsString(); + this.Csv = output; + } + } + catch (Exception e) + { + this.Csv = e.Message; + } + } + private bool Format() + { + try + { + var token = JToken.Parse(this.Json); + this.Json = token.ToString(Newtonsoft.Json.Formatting.Indented); + return true; + } + catch (Exception e) + { + this.Csv = "JSON 格式不正确:" + Environment.NewLine + e.Message; + return false; + } + } + [RelayCommand] + private void Demo() + { + this.Json = AppResources.Channels_Converts_JsonToCsvDemo_JSON; + this.Format(); + } + [RelayCommand] + private void Clear() => this.Json = String.Empty; + [RelayCommand] + private void Copy() + { + if (string.IsNullOrWhiteSpace(this.Csv)) return; + Services.ClipboardService.CopyText(this.Csv); + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/PostmanConverterViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/PostmanConverterViewModel.cs new file mode 100644 index 0000000..5cbaddc --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/PostmanConverterViewModel.cs @@ -0,0 +1,129 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.IO; +using System.Text; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class PostmanConverterViewModel : ViewModelBase +{ + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(UrlToPostmanCommand))] + [NotifyCanExecuteChangedFor(nameof(PostmanToUrlCommand))] + [NotifyCanExecuteChangedFor(nameof(JsonToPostmanCommand))] + [NotifyCanExecuteChangedFor(nameof(PostmanToJsonCommand))] + private string input; + + [ObservableProperty] + private string output; + + private bool CanUrlToPostman() + { + if (string.IsNullOrWhiteSpace(this.Input)) return false; + return true; + } + private bool CanPostmanToUrl() + { + if (string.IsNullOrWhiteSpace(this.Input)) return false; + + return true; + } + private bool CanJsonToPostman() + { + if (string.IsNullOrWhiteSpace(this.Input)) return false; + try + { + JObject.Parse(this.Input); + } + catch (Exception) + { + return false; + } + return true; + } + + [RelayCommand(CanExecute = nameof(CanUrlToPostman))] + private void UrlToPostman() + { + var qs = System.Web.HttpUtility.ParseQueryString(this.Input ?? string.Empty); + var sb = new StringBuilder(); + for (int i = 0; i < qs.Count; i++) + { + var key = qs.GetKey(i); + var value = qs.Get(i); + sb.AppendFormat("{0}:{1}", key, value); + sb.AppendLine(); + } + this.Output = sb.ToString(); + } + + [RelayCommand(CanExecute = nameof(CanPostmanToUrl))] + private void PostmanToUrl() + { + var items = (this.Input ?? String.Empty).Split('\n'); + var qs = System.Web.HttpUtility.ParseQueryString(string.Empty); + foreach (var item in items) + { + if (string.IsNullOrWhiteSpace(item)) continue; + if (item.IndexOf(':') < 0) continue; + var pairs = item.Split(':'); + var key = pairs[0].Trim(); + if (string.IsNullOrWhiteSpace(key)) continue; + var value = string.Join(':', pairs, 1, pairs.Length - 1).Trim(); + qs.Add(key, value); + } + this.Output = qs.ToString(); + } + [RelayCommand(CanExecute = nameof(CanJsonToPostman))] + private void JsonToPostman() + { + var obj = JObject.Parse(this.Input); + var sb = new StringBuilder(); + foreach (var p in obj.Properties()) + { + sb.AppendFormat("{0}:{1}", p.Name, p.Value); + sb.AppendLine(); + } + this.Output = sb.ToString(); + } + private bool CanPostmanToJson() + { + if (string.IsNullOrWhiteSpace(this.Input)) return false; + return true; + } + + [RelayCommand(CanExecute = nameof(CanPostmanToJson))] + private void PostmanToJson() + { + var sb = new StringBuilder(); + using (var sw = new StringWriter(sb)) + using (var json = new JsonTextWriter(sw)) + { + json.Formatting = Formatting.Indented; + json.WriteStartObject(); + var items = (this.Input ?? String.Empty).Split('\n'); + foreach (var item in items) + { + if (string.IsNullOrWhiteSpace(item)) continue; + if (item.IndexOf(':') < 0) continue; + var pairs = item.Split(':'); + var key = pairs[0].Trim(); + if (string.IsNullOrWhiteSpace(key)) continue; + var value = string.Join(':', pairs, 1, pairs.Length - 1).Trim(); + json.WritePropertyName(key); + json.WriteValue(value); + } + json.WriteEndObject(); + } + this.Output = sb.ToString(); + } + [RelayCommand] + private void Clear() + { + this.Input = string.Empty; + this.Output = string.Empty; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/RsaKeyConvertViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/RsaKeyConvertViewModel.cs new file mode 100644 index 0000000..cde7bca --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/RsaKeyConvertViewModel.cs @@ -0,0 +1,78 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class RsaKeyConvertViewModel : ViewModelBase +{ + [ObservableProperty] + private string _privateKey; + [ObservableProperty] + private string _output; + + private void Do(Func convert) + { + try + { + using (var rsa = CreateRsa()) + { + Output = convert(rsa); + } + } + catch (Exception e) + { + Output = e.Message; + } + } + [RelayCommand] + private void ToPkcs8() => Do(static rsa => Convert.ToBase64String(rsa.ExportPkcs8PrivateKey())); + [RelayCommand] + private void ToPkcs1() => Do(static rsa => Convert.ToBase64String(rsa.ExportRSAPrivateKey())); + [RelayCommand] + private void ToXml() => Do(static rsa => rsa.ToXmlString(true)); + [RelayCommand] + private void GetPublickKey() => Do(static rsa => Convert.ToBase64String(rsa.ExportRSAPublicKey())); + [RelayCommand] + private void GetPublickKeyXml() => Do(static rsa => rsa.ToXmlString(false)); + [RelayCommand] + private void CopyOutput() => Services.ClipboardService.CopyText(Output); + private RSA CreateRsa() + { + if (string.IsNullOrWhiteSpace(this.PrivateKey)) throw new Exception("私钥不能为空"); + // + var rsa = RSA.Create(); + if (this.PrivateKey.StartsWith("")) + { + rsa.FromXmlString(this.PrivateKey); + } + else + { + var key = this.PrivateKey; + if (Regex.IsMatch(key, @"^[-]+BEGIN")) + { + key = Regex.Match(key, @"(?<=KEY[-]+[\r\n]+)[\s\S]+(?=[\r\n]+[-]+END)").Value; + key = Regex.Replace(key, @"[\r\n]+", string.Empty); + } + var bytes = Convert.FromBase64String(key); + if (bytes.Length < 8) throw new Exception("私钥长度过短"); + switch (bytes[7]) + { + case 0x30://PKCS8 + rsa.ImportPkcs8PrivateKey(bytes, out _); + break; + case 0x02://PKCS1 + rsa.ImportRSAPrivateKey(bytes, out _); + break; + default: throw new Exception("仅支持 PKCS#1 和 PKCS#8 格式的 RSA 私钥。"); + } + } + return rsa; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByJsViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByJsViewModel.cs new file mode 100644 index 0000000..c987fd2 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByJsViewModel.cs @@ -0,0 +1,138 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Services; +using NewLife.Log; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Xsl; +using System.Xml; +using Newtonsoft.Json; +using Jint; +using Jint.Native; +using Jint.Native.Object; +using Jint.Native.Date; +using Jint.Native.Array; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class TranslateJsonByJsViewModel : ViewModelBase +{ + private IWatchToken _jsonWatchToken = null; + private IWatchToken _jsWatchToken = null; + + [ObservableProperty] + private string _jsonPath; + [ObservableProperty] + private string _jsPath; + [ObservableProperty] + private string _output = "准备就绪"; + [ObservableProperty] + private DateTime? _lastBuild; + private void FileWatchToken_Changed(object sender, FileSystemEventArgs e) + { + XTrace.WriteLine("自动重载:{0}", e.FullPath); + Translate(); + } + partial void OnJsonPathChanged(string value) + { + if (this._jsonWatchToken != null) this._jsonWatchToken.Dispose(); + this._jsonWatchToken = WatchFileService.Watch(value); + this._jsonWatchToken.Changed += this.FileWatchToken_Changed; + this.Translate(); + } + partial void OnJsPathChanged(string value) + { + if (this._jsWatchToken != null) this._jsWatchToken.Dispose(); + this._jsWatchToken = WatchFileService.Watch(value); + this._jsWatchToken.Changed += this.FileWatchToken_Changed; + this.Translate(); + } + [RelayCommand] + private void Translate() + { + if (string.IsNullOrWhiteSpace(JsPath)) + { + Output = "请选择 Js 文件"; + return; + } + + try + { + string json = String.Empty; + if (!string.IsNullOrWhiteSpace(JsonPath)) json = FileService.ReadAllText(JsonPath); + var js = FileService.ReadAllText(JsPath); + using (var e = new Engine()) + { + if (!string.IsNullOrWhiteSpace(json)) + { + JsonConvert.DeserializeObject(json); + e.Evaluate($"var model = {json};"); + } + var result = e.Evaluate(js); + this.Output = BuildOutput(result); + } + } + catch (Exception e) + { + Output = e.Message; + if (e is Jint.Runtime.JavaScriptException js) Output += Environment.NewLine + js.JavaScriptStackTrace; + } + finally + { + this.LastBuild = DateTime.Now; + } + } + private string BuildOutput(JsValue value) + { + if (value.IsObject()) + { + var sb = new StringBuilder(); + using (var sw = new StringWriter(sb)) + { + var w = new JsonTextWriter(sw) + { + Formatting = Newtonsoft.Json.Formatting.Indented + }; + Write(value, w); + return sb.ToString(); + } + } + return value.ToString(); + } + private static void Write(JsValue value, JsonWriter w) + { + switch (value) + { + case ArrayInstance array: + w.WriteStartArray(); + foreach (var item in array) Write(item, w); + w.WriteEndArray(); + break; + case JsDate date: w.WriteValue(date.ToDateTime()); break; + case JsNumber number: w.WriteRawValue(number.ToString()); break; + case JsBigInt bigInt: w.WriteValue(bigInt.ToObject()); break; + case JsBoolean boolean: w.WriteValue(boolean.ToObject()); break; + case ObjectInstance instance: + w.WriteStartObject(); + foreach (var item in instance.GetOwnProperties()) + { + w.WritePropertyName(item.Key.ToString()); + Write(item.Value.Value, w); ; + } + w.WriteEndObject(); + break; + case JsString str: w.WriteValue(str.ToString()); break; + default: w.WriteRawValue(value.ToString()); break; + } + } + public override void Destroy() + { + base.Destroy(); + this._jsonWatchToken?.Dispose(); + this._jsWatchToken?.Dispose(); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByLiquidViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByLiquidViewModel.cs new file mode 100644 index 0000000..ee8282c --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateJsonByLiquidViewModel.cs @@ -0,0 +1,98 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Fluid; +using LuYao.Toolkit.Services; +using Microsoft.Extensions.FileProviders; +using NewLife.Log; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.Encodings.Web; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class TranslateJsonByLiquidViewModel : ViewModelBase +{ + private TemplateOptions _templateOptions = new TemplateOptions(); + private FluidParser _fluidParser = new FluidParser(); + private IWatchToken _jsonWatchToken = null; + private IWatchToken _liquidWatchToken = null; + [ObservableProperty] + private string _jsonPath; + [ObservableProperty] + private string _liquidPath; + [ObservableProperty] + private string _output = "准备就绪"; + [ObservableProperty] + private DateTime? _lastBuild; + private void FileWatchToken_Changed(object sender, FileSystemEventArgs e) + { + XTrace.WriteLine("自动重载:{0}", e.FullPath); + Translate(); + } + partial void OnJsonPathChanged(string value) + { + if (this._jsonWatchToken != null) this._jsonWatchToken.Dispose(); + this._jsonWatchToken = WatchFileService.Watch(value); + this._jsonWatchToken.Changed += this.FileWatchToken_Changed; + this.Translate(); + } + partial void OnLiquidPathChanged(string value) + { + if (this._liquidWatchToken != null) this._liquidWatchToken.Dispose(); + this._liquidWatchToken = WatchFileService.Watch(value); + this._liquidWatchToken.Changed += this.FileWatchToken_Changed; + this.Translate(); + } + [RelayCommand] + private void Translate() + { + if (string.IsNullOrWhiteSpace(LiquidPath)) + { + Output = "请选择 Liquid 文件"; + return; + } + var model = new Dictionary(); + if (!string.IsNullOrWhiteSpace(this.JsonPath)) + { + try + { + var json = Services.FileService.ReadAllText(this.JsonPath); + JsonConvert.PopulateObject(json, model); + } + catch (Exception e) + { + this.Output = $"模型解析失败: {e.Message}"; + return; + } + } + try + { + var str = FileService.ReadAllText(this.LiquidPath); + var template = _fluidParser.Parse(str); + var dir = Path.GetDirectoryName(this.LiquidPath); + if (this._templateOptions.FileProvider is PhysicalFileProvider provider) + { + if (provider.Root != dir) + { + this._templateOptions.FileProvider = new PhysicalFileProvider(dir); + } + } + else + { + this._templateOptions.FileProvider = new PhysicalFileProvider(dir); + } + var context = new TemplateContext(model, this._templateOptions, true) { }; + Output = template.Render(context, HtmlEncoder.Default); + } + catch (ParseException e) + { + Output = e.Message; + } + catch (Exception e) + { + Output = e.Message; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateXmlByXslViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateXmlByXslViewModel.cs new file mode 100644 index 0000000..0e9c06c --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/TranslateXmlByXslViewModel.cs @@ -0,0 +1,109 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Services; +using Prism.Navigation; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Xsl; +using System.Xml; +using NewLife.Log; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class TranslateXmlByXslViewModel : ViewModelBase, IDestructible +{ + private IWatchToken _xmlWatchToken = null; + private IWatchToken _xslWatchToken = null; + + [ObservableProperty] + private string _xmlPath; + [ObservableProperty] + private string _xslPath; + [ObservableProperty] + private string _output = "准备就绪"; + [ObservableProperty] + private DateTime? _lastBuild; + + + private void FileWatchToken_Changed(object sender, FileSystemEventArgs e) + { + XTrace.WriteLine("自动重载:{0}", e.FullPath); + Translate(); + } + + partial void OnXmlPathChanged(string value) + { + if (this._xmlWatchToken != null) this._xmlWatchToken.Dispose(); + this._xmlWatchToken = WatchFileService.Watch(value); + this._xmlWatchToken.Changed += this.FileWatchToken_Changed; + this.Translate(); + } + + partial void OnXslPathChanged(string value) + { + if (this._xslWatchToken != null) this._xslWatchToken.Dispose(); + this._xslWatchToken = WatchFileService.Watch(value); + this._xslWatchToken.Changed += this.FileWatchToken_Changed; + this.Translate(); + } + + public override void Destroy() + { + base.Destroy(); + this._xmlWatchToken?.Dispose(); + this._xslWatchToken?.Dispose(); + } + + [RelayCommand] + private void Translate() + { + if (string.IsNullOrWhiteSpace(XmlPath)) + { + Output = "请选择 XML 文件"; + return; + } + if (string.IsNullOrWhiteSpace(XslPath)) + { + Output = "请选择 XSL 文件"; + return; + } + try + { + var xml = FileService.ReadAllText(XmlPath); + var xsl = new XslCompiledTransform(); + xsl.Load(this.XslPath); + using (var sr = File.OpenRead(XmlPath)) + { + using (var reader = XmlReader.Create(sr)) + { + using (var ms = new MemoryStream()) + { + using (var writer = XmlWriter.Create(ms, new XmlWriterSettings + { + Indent = true, + Encoding = Encoding.UTF8 + })) + { + xsl.Transform(reader, writer); + } + + ms.Seek(0, SeekOrigin.Begin); + Output = Encoding.UTF8.GetString(ms.ToArray()); + } + } + } + } + catch (Exception e) + { + Output = e.Message; + } + finally + { + this.LastBuild = DateTime.Now; + } + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/UnixTimestampViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/UnixTimestampViewModel.cs new file mode 100644 index 0000000..aefd3ce --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/UnixTimestampViewModel.cs @@ -0,0 +1,129 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Converts; +public enum UnixTimestampUnit +{ + Secound, + Millisecond +} +public partial class UnixTimestampViewModel : ViewModelBase +{ + public UnixTimestampViewModel() + { + this._toTimestampInput = DateTime.Now; + switch (this.Unit) + { + case UnixTimestampUnit.Secound: + this.ToTimeInput = DateTimeOffset.Now.ToUnixTimeSeconds(); + break; + case UnixTimestampUnit.Millisecond: + this.ToTimeInput = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + break; + default: throw new ArgumentOutOfRangeException(); + } + this.Update(); + this.RunUpdate(); + } + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Unit))] + private UnixTimestampUnit _unit = UnixTimestampUnit.Secound; + + [ObservableProperty] + private long _current; + + [ObservableProperty] + private bool _isRunning = true; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(AutoUpdate))] + private bool _autoUpdate = true; + + [RelayCommand] + private void Copy() + { + var i = this.Current; + if (i <= 0) return; + var txt = i.ToString(); + Services.ClipboardService.CopyText(txt); + } + [RelayCommand] + private void Start() => this.AutoUpdate = true; + [RelayCommand] + private void Stop() => this.AutoUpdate = false; + [RelayCommand] + private void Update() + { + switch (this.Unit) + { + case UnixTimestampUnit.Secound: + this.Current = DateTimeOffset.Now.ToUnixTimeSeconds(); + break; + case UnixTimestampUnit.Millisecond: + this.Current = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + break; + default: throw new ArgumentOutOfRangeException(); + } + } + + private async void RunUpdate() + { + var sleep = TimeSpan.FromMilliseconds(100); + while (IsRunning) + { + if (this.AutoUpdate) Update(); + await Task.Delay(sleep); + } + } + public override void Destroy() + { + base.Destroy(); + if (this.IsRunning) this.IsRunning = false; + } + + [ObservableProperty] + private long _toTimeInput; + [ObservableProperty] + private string _toTimeOutput; + [RelayCommand] + private void ToTime() + { + DateTimeOffset offset; + switch (this.Unit) + { + case UnixTimestampUnit.Secound: + offset = DateTimeOffset.FromUnixTimeSeconds(this.ToTimeInput); + break; + case UnixTimestampUnit.Millisecond: + offset = DateTimeOffset.FromUnixTimeMilliseconds(this.ToTimeInput); + break; + default: throw new ArgumentOutOfRangeException(); + } + var timezone = TimeZoneInfo.Local; + var d = TimeZoneInfo.ConvertTimeFromUtc(offset.DateTime, timezone); + this.ToTimeOutput = d.ToString("yyyy-MM-dd HH:mm:ss"); + } + + [ObservableProperty] + private DateTime _toTimestampInput; + [ObservableProperty] + private long? _toTimestampOutput; + [RelayCommand] + private void ToTimestamp() + { + var offset = new DateTimeOffset(this.ToTimestampInput, TimeZoneInfo.Local.BaseUtcOffset); + switch (this.Unit) + { + case UnixTimestampUnit.Secound: + this.ToTimestampOutput = offset.ToUnixTimeSeconds(); + break; + case UnixTimestampUnit.Millisecond: + this.ToTimestampOutput = offset.ToUnixTimeMilliseconds(); + break; + default: throw new ArgumentOutOfRangeException(); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Converts/YamlToJsonViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Converts/YamlToJsonViewModel.cs new file mode 100644 index 0000000..74c2cf1 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Converts/YamlToJsonViewModel.cs @@ -0,0 +1,51 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using System.Dynamic; +using System.IO; +using YamlDotNet.Serialization; + +namespace LuYao.Toolkit.Channels.Converts; + +public partial class YamlToJsonViewModel : ViewModelBase +{ + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(YamlToJsonCommand))] + [NotifyCanExecuteChangedFor(nameof(JsonToYamlCommand))] + private string input; + + [ObservableProperty] + private string output; + + private bool CanExecute() => !string.IsNullOrWhiteSpace(this.Input); + + [RelayCommand(CanExecute = nameof(CanExecute))] + private void YamlToJson() + { + using var r = new StringReader(this.Input); + var deserializer = new DeserializerBuilder().Build(); + var yamlObject = deserializer.Deserialize(r); + this.Output = JsonConvert.SerializeObject(yamlObject, Formatting.Indented); + } + + [RelayCommand(CanExecute = nameof(CanExecute))] + private void JsonToYaml() + { + var serializer = new SerializerBuilder().Build(); + var dyn = JsonConvert.DeserializeObject(this.Input, new ExpandoObjectConverter()); + this.Output = serializer.Serialize(dyn); + } + + [RelayCommand] + private void Clear() + { + this.Output = this.Input = string.Empty; + } + + [RelayCommand] + private void Copy() + { + Services.ClipboardService.CopyText(this.Output); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/CrossBorder/MercadoToWorldFirstViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/CrossBorder/MercadoToWorldFirstViewModel.cs new file mode 100644 index 0000000..f5347d9 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/CrossBorder/MercadoToWorldFirstViewModel.cs @@ -0,0 +1,326 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Services; +using OfficeOpenXml; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.CrossBorder; + +public partial class MercadoToWorldFirstViewModel : ViewModelBase +{ + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Input))] + [NotifyCanExecuteChangedFor(nameof(ConvertCommand))] + private string input; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Output))] + [NotifyCanExecuteChangedFor(nameof(ConvertCommand))] + private string output; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(OverwriteExistsFiles))] + private bool overwriteExistsFiles; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(AppendFileName))] + private bool appendFileName; + + [ObservableProperty] + private string log = "准备就绪"; + + private bool CanConvert() + { + if (string.IsNullOrWhiteSpace(this.Input)) return false; + if (string.IsNullOrWhiteSpace(this.Output)) return false; + return true; + } + + private void WriteLog(StringBuilder log, string message, params object[] args) + { + if (args != null && args.Length > 0) + { + log.AppendLine(string.Format(message, args)); + } + else + { + log.AppendLine(message); + } + this.Log = log.ToString(); + } + public class OutputLine + { + public string 订单编号; + public DateTime? 支付时间; + public decimal? 订单金额; + public string 商品标题; + public string 买家名称; + public string 收货地址; + + public string 币种 => "USD"; + public int 商品数量 => 1; + public bool IsEmpty() + { + if (string.IsNullOrWhiteSpace(this.订单编号) == false) return false; + if (this.支付时间 != null) return false; + if (this.订单金额 != null) return false; + if (string.IsNullOrWhiteSpace(this.商品标题) == false) return false; + if (string.IsNullOrWhiteSpace(this.买家名称) == false) return false; + if (string.IsNullOrWhiteSpace(this.收货地址) == false) return false; + return true; + } + } + + private void Write(string file, ExcelWorksheet sheet, List lines) + { + var fn = Path.GetFileNameWithoutExtension(file); + var ext = Path.GetExtension(file); + if (this.AppendFileName && !fn.StartsWith("【万里汇上传】")) + { + fn = $"【万里汇上传】{fn}"; + } + var target = Path.Combine(this.Output, $"{fn}{ext}"); + if (File.Exists(target)) + { + if (!this.OverwriteExistsFiles) throw new Exception($"目标文件已存在,请先删除或者选中【覆盖同名文件】。{Environment.NewLine}路径:{target}"); + File.Delete(target); + } + using (var fs = File.OpenWrite(target)) + using (var pkg = new ExcelPackage(fs)) + { + var sheets = pkg.Workbook.Worksheets; + var dist = sheets.Add(sheet.Name); + //write header + //write body + dist.SetValue("A1", "Order ID"); + dist.SetValue("B1", "Paid Date"); + dist.SetValue("C1", "Order Total"); + dist.SetValue("D1", "Currency Code"); + dist.SetValue("E1", "Product Title"); + dist.SetValue("F1", "Product Quantity"); + dist.SetValue("G1", "Buyer Name/Buyer ID"); + dist.SetValue("H1", "Shipping Address"); + + for (int i = 1; i <= 8; i++) + { + var style = dist.Cells[1, i].Style; + style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; + } + + //TODO:杂项信息 + + var line2 = new string[] { + @"本列填写内容:订单编号 + +填写具体要求: +最长可接受64个字符,超过将不会被计算到交易申报数据中", + @"本列填写内容:支付时间 + +填写具体要求: +1. 针对不同平台的时间格式要求不同,请参照以下平台的时间格式示例: +Tophatter:MM/dd/yyyy,06/21/2019 + +Cdiscount:dd/MM/yyyy HH:mm: ss,04 / 02 / 2020 12:37:50 + +Rakuten:dd / MM / yyyy - HH:mm,26 / 12 / 2019 - 14:50 + + 或 MM/ dd / yyyy hh: mm: ss aa,02 / 13 / 2020 12:19:20 PM + +FNAC:dd / MM / yyyy,14 / 12 / 2019 + +Etsy:MM / dd / yyyy,11 / 27 / 2019 + +Newegg:MM / dd / yyyy HH: mm: ss,12 / 26 / 2019 23:30:18 + +2.不在以上平台范围内的,时间格式要求: yyyy / mm / dd 或者mm / dd / yyyy,2022 / 01 / 31 或者 01 / 31 / 2022", + @"本列填写内容:订单总金额(非商品单价,请填写每笔交易的总金额) + +填写具体要求: +1.必须是数字 +2.可以有小数点,最多只支持小数点后两位,超过小数点后两位的数字将被截断且不计入额度统计", + @"本列填写内容:币种 + +填写具体要求: +1.仅支持大写 +2.且必须为三位字母代码 +例如: USD,EUR,GBP", + @"本列填写内容:商品标题 + +填写具体要求: +1.最长可接受512个字符,超过将不会被计算到交易申报数据中", + @"本列填写内容:商品数量 + +填写具体要求: +1.仅支持整数", + @"本列填写内容:买家名称 / 买家ID + +填写具体要求: +1.最长可接受128字符,超过将不会被计算到交易申报数据中", + @"本列填写内容:收货地址 + +填写具体要求: +1.最长可接受512个字符,超过将不会被计算到交易申报数据中" + }; + + var line3 = new string[] + { + "填写示例:2002021154repeat2020526", + @"填写示例:详见上表示例", + @"填写示例:15.21", + @"填写示例:EUR", + @"填写示例:Gilet pour chien/Harnais Chien- Noir taille XL --", + @"填写示例:1", + @"填写示例:M. Bouscailloux Loric 12 COURS MERCURE", + @"填写示例:FR" + }; + + for (int i = 1; i <= line2.Length; i++) + { + dist.SetValue(2, i, line2[i - 1]); + var style = dist.Cells[2, i].Style; + style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Top; + style.WrapText = true; + } + dist.Row(2).CustomHeight = true; + + for (int i = 1; i <= line3.Length; i++) + { + dist.SetValue(3, i, line3[i - 1]); + var style = dist.Cells[2, i].Style; + style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Top; + style.WrapText = true; + } + dist.Row(3).CustomHeight = true; + + for (int i = 0; i < lines.Count; i++) + { + var line = lines[i]; + var row = i + 4; + dist.SetValue($"A{row}", line.订单编号); + dist.SetValue($"B{row}", line.支付时间); + dist.SetValue($"C{row}", line.订单金额); + dist.SetValue($"D{row}", line.币种); + dist.SetValue($"E{row}", line.商品标题); + dist.SetValue($"F{row}", line.商品数量); + dist.SetValue($"G{row}", line.买家名称); + dist.SetValue($"H{row}", line.收货地址); + + dist.Cells[$"B{row}"].Style.Numberformat.Format = "dd/MM/yy"; + } + + for (int i = 1; i <= 8; i++) + { + dist.Column(i).AutoFit(40, 58); + } + pkg.Save(); + } + } + private void Convert(string[] files, StringBuilder log) + { + var regex = new Regex("((\\w+)(\\s)(\\d+),(\\s)(\\d+))", RegexOptions.None);//表达式对象 + var output = new List(); + foreach (var file in files) + { + WriteLog(log, "处理文件:{0}", Path.GetFileName(file)); + using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + using (var pkg = new ExcelPackage(fs)) + { + foreach (var sheet in pkg.Workbook.Worksheets) + { + WriteLog(log, "读取 Sheet : {0},行:{1},列:{2}。", sheet.Name, sheet.Dimension.Rows, sheet.Dimension.Columns); + output.Clear(); + for (int row = 4; row <= sheet.Dimension.Rows; row++) + { + var line = new OutputLine(); + for (int col = 1; col <= sheet.Dimension.Columns; col++) + { + var cell = sheet.Cells[row, col]; + switch (col) + { + case 1://Order # + line.订单编号 = cell.GetCellValue(); + break; + case 2://Order date + { + var str = cell.GetCellValue(); + if (!string.IsNullOrWhiteSpace(str) && regex.IsMatch(str)) + { + var dt = regex.Match(str).Groups[1].Value; + line.支付时间 = DateTime.Parse(dt).Date; + } + } + break; + case 17://Listing title + line.商品标题 = cell.GetCellValue(); + break; + case 19://Listing sale unit price (USD) + { + var str = cell.GetCellValue(); + if (!string.IsNullOrWhiteSpace(str) && decimal.TryParse(str, out var m)) + { + line.订单金额 = m; + } + } + break; + case 25://Buyer + line.买家名称 = cell.GetCellValue(); + break; + case 31://Country + line.收货地址 = cell.GetCellValue(); + break; + } + } + if (!line.IsEmpty()) output.Add(line); + } + + if (output.Count <= 0) + { + WriteLog(log, "未读取到有效数据,跳过。"); + continue; + } + else + { + WriteLog(log, "转换数据"); + Write(file, sheet, output); + WriteLog(log, "处理成功"); + break; + } + } + } + } + WriteLog(log, "处理完成"); + } + + [RelayCommand(CanExecute = nameof(CanConvert))] + private async Task Convert() + { + var log = new StringBuilder(); + try + { + if (!Directory.Exists(this.Input)) throw new Exception("美客多报表目录不存在!"); + if (!Directory.Exists(this.Output)) Directory.CreateDirectory(this.Output); + if (this.Input == this.Output) throw new Exception("两个目录不能相同"); + var files = Directory.GetFiles(this.Input, "*.xlsx"); + if (files.Length <= 0) throw new Exception("没有找到美客多报表文件,仅支持 xlsx 格式。"); + log.AppendLine($"找到 {files.Length} 个文件"); + await Task.Run(() => Convert(files, log)); + NotifyService.Success("转换成功!"); + } + catch (Exception e) + { + log.AppendLine(e.ToString()); + throw; + } + finally + { + this.Log = log.ToString(); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/Ascii85EncodeViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/Ascii85EncodeViewModel.cs new file mode 100644 index 0000000..6f90516 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/Ascii85EncodeViewModel.cs @@ -0,0 +1,48 @@ +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class Ascii85EncodeViewModel : EncodingViewModelBase +{ + [RelayCommand] + private void Encode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + var bytes = encoding.GetBytes(this.Input); + this.Output = StringZipper.Ascii85.Encode(bytes); + } + } + + [RelayCommand] + private void Decode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + try + { + var bytes = StringZipper.Ascii85.Decode(this.Input); + this.Output = encoding.GetString(bytes); + } + catch (Exception e) + { + this.Output = e.Message; + } + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/Base16EncodeViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/Base16EncodeViewModel.cs new file mode 100644 index 0000000..16b8a9e --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/Base16EncodeViewModel.cs @@ -0,0 +1,48 @@ +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class Base16EncodeViewModel : EncodingViewModelBase +{ + [RelayCommand] + private void Encode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + var bytes = encoding.GetBytes(this.Input); + this.Output = StringZipper.Base16.Encode(bytes); + } + } + + [RelayCommand] + private void Decode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + try + { + var bytes = StringZipper.Base16.Decode(this.Input); + this.Output = encoding.GetString(bytes); + } + catch (Exception e) + { + this.Output = e.Message; + } + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/Base62EncodeViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/Base62EncodeViewModel.cs new file mode 100644 index 0000000..d77ee4b --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/Base62EncodeViewModel.cs @@ -0,0 +1,48 @@ +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class Base62EncodeViewModel : EncodingViewModelBase +{ + [RelayCommand] + private void Encode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + var bytes = encoding.GetBytes(this.Input); + this.Output = StringZipper.Base62.Encode(bytes); + } + } + + [RelayCommand] + private void Decode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + try + { + var bytes = StringZipper.Base62.Decode(this.Input); + this.Output = encoding.GetString(bytes); + } + catch (Exception e) + { + this.Output = e.Message; + } + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/Base64EncodeViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/Base64EncodeViewModel.cs new file mode 100644 index 0000000..a6da883 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/Base64EncodeViewModel.cs @@ -0,0 +1,50 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class Base64EncodeViewModel : EncodingViewModelBase +{ + + [RelayCommand] + private void Encode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + var bytes = encoding.GetBytes(this.Input); + this.Output = Convert.ToBase64String(bytes); + } + } + + [RelayCommand] + private void Decode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + var encoding = this.GetEncoding(); + try + { + var bytes = Convert.FromBase64String(this.Input); + this.Output = encoding.GetString(bytes); + } + catch (Exception e) + { + this.Output = e.Message; + } + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/EncodingViewModelBase.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/EncodingViewModelBase.cs new file mode 100644 index 0000000..e97c4b3 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/EncodingViewModelBase.cs @@ -0,0 +1,37 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class EncodingViewModelBase : ViewModelBase +{ + public IReadOnlyCollection Encodings { get; } = new string[] { "UTF-8", "GB2312" }; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Encoding))] + protected string _encoding = "UTF-8"; + + protected Encoding GetEncoding() => System.Text.Encoding.GetEncoding(this.Encoding); + + [ObservableProperty] + private string _input; + [ObservableProperty] + private string _output; + + [RelayCommand] + protected virtual void Copy() + { + Services.ClipboardService.CopyText(this.Output); + } + + [RelayCommand] + protected virtual void Clear() + { + this.Output = this.Input = String.Empty; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/HtmlEncodeViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/HtmlEncodeViewModel.cs new file mode 100644 index 0000000..d73a993 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/HtmlEncodeViewModel.cs @@ -0,0 +1,37 @@ +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class HtmlEncodeViewModel : EncodingViewModelBase +{ + [RelayCommand] + private void Encode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + this.Output = System.Web.HttpUtility.HtmlEncode(this.Input); + } + } + + [RelayCommand] + private void Decode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + this.Output = System.Web.HttpUtility.HtmlDecode(this.Input); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/StringZipperViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/StringZipperViewModel.cs new file mode 100644 index 0000000..13234bc --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/StringZipperViewModel.cs @@ -0,0 +1,85 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class StringZipperViewModel : EncodingViewModelBase +{ + public IReadOnlyList Encoders { get; } = new string[] { + StringZipper.Base16.Identifier, + StringZipper.Base62.Identifier, + StringZipper.Base64.Identifier, + StringZipper.Ascii85.Identifier + }; + public IReadOnlyCollection Compressors { get; } = new[] + { + StringZipper.LzString.Identifier, + StringZipper.GZip.Identifier, + StringZipper.Deflate.Identifier, + StringZipper.Br.Identifier, + }; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Encoder))] + private string _encoder = "ascii85"; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Compressor))] + private string _compressor = "gzip"; + + [ObservableProperty] + private string _report; + + [RelayCommand] + private void Zip() + { + try + { + if (!StringZipper.TryGetComponent(this.Compressor, out var compressor)) + throw new Exception($"压缩算法未找到:{this.Compressor}"); + + if (!StringZipper.TryGetComponent(this.Encoder, out var encoder)) + throw new Exception($"编码格式未找到:{this.Encoder}"); + + this.Output = StringZipper.Zip(this.Input, compressor, encoder); + this.Report = this.GetReport(this.Input, this.Output); + } + catch (Exception e) + { + this.Output = e.Message; + this.Report = String.Empty; + } + } + + [RelayCommand] + private void Unzip() + { + try + { + this.Output = StringZipper.Unzip(this.Input); + this.Report = this.GetReport(this.Output, this.Input); + } + catch (Exception e) + { + this.Output = e.Message; + this.Report = String.Empty; + } + } + + protected override void Clear() + { + base.Clear(); + this.Report = String.Empty; + } + private string GetReport(string org, string zip) + { + var orgCount = System.Text.Encoding.UTF8.GetByteCount(org ?? String.Empty); + var zipCount = System.Text.Encoding.UTF8.GetByteCount(zip ?? String.Empty); + return $"压缩前:{orgCount} 压缩后:{zipCount} 压缩率:{1d * zipCount / orgCount:0.00%}"; + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Encodings/UrlEncodeViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Encodings/UrlEncodeViewModel.cs new file mode 100644 index 0000000..b01caff --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Encodings/UrlEncodeViewModel.cs @@ -0,0 +1,36 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Channels.Encodings; + +public partial class UrlEncodeViewModel : EncodingViewModelBase +{ + [RelayCommand] + private void Encode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + this.Output = Uri.EscapeDataString(this.Input); + } + } + + [RelayCommand] + private void Decode() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + } + else + { + this.Output = Uri.UnescapeDataString(this.Input); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Files/CrackingMdbPasswordViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Files/CrackingMdbPasswordViewModel.cs new file mode 100644 index 0000000..8c41b29 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Files/CrackingMdbPasswordViewModel.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Files; + +public partial class CrackingMdbPasswordViewModel : ViewModelBase +{ + private string GetPassword(string file) + { + // 未加密的文件0x42开始至0x61之前的每间隔一字节的数值 + byte[] baseByte = { 0xbe, 0xec, 0x65, 0x9c, 0xfe, 0x28, 0x2b, 0x8a, 0x6c, 0x7b, 0xcd, 0xdf, 0x4f, 0x13, 0xf7, 0xb1 }; + byte flagByte = 0x0c; // 标志 0x62 处的数值 + + using (var fs = File.OpenRead(file)) + { + if (fs.Length == 0) + { + return "文件为空"; + } + var password = string.Empty; + fs.Seek(0x14, SeekOrigin.Begin); + var ver = (byte)fs.ReadByte(); // 取得版本, 1为Access2000, 0为Access97 + fs.Seek(0x42, SeekOrigin.Begin); + var bs = new byte[33]; + if (fs.Read(bs, 0, 33) != 33) return "数据库格式不正确"; + + var flag = (byte)(bs[32] ^ flagByte); + for (var i = 0; i < 16; i++) + { + var b = (byte)(baseByte[i] ^ bs[i * 2]); + if (i % 2 == 0 && ver == 1) + { + b ^= flag; //Access 2000 + } + + if (b > 0) + { + password += (char)b; + } + } + + return password; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Files/DetectFileEncodeingViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Files/DetectFileEncodeingViewModel.cs new file mode 100644 index 0000000..55cf933 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Files/DetectFileEncodeingViewModel.cs @@ -0,0 +1,98 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Events; +using Prism.Events; +using System; +using System.Collections.ObjectModel; +using System.IO; +using System.Text; +using UtfUnknown; + +namespace LuYao.Toolkit.Channels.Files; + +public partial class DetectFileEncodeingViewModel : ViewModelBase, IFileDragDropTarget +{ + [INotifyPropertyChanged] + public partial class FileItem + { + public FileItem(FileInfo file) + { + this.Path = file.FullName; + this.Name = file.Name; + if (!file.Exists) return; + this.Length = file.Length; + this.ReadEncoding(); + } + [ObservableProperty] + private string _path; + [ObservableProperty] + private string _name; + [ObservableProperty] + public string _encoding; + [ObservableProperty] + private long _length; + private void ReadEncoding() + { + try + { + using FileStream stream = new FileStream(this.Path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + var r = CharsetDetector.DetectFromStream(stream, 4096); + if (r.Detected != null) this.Encoding = r.Detected.EncodingName; + } + catch (Exception) + { + Encoding = string.Empty; + } + } + } + + private IEventAggregator _eventAggregator; + + public DetectFileEncodeingViewModel(IEventAggregator eventAggregator) + { + _eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); + } + + [ObservableProperty] + private ObservableCollection _files = new ObservableCollection(); + + [RelayCommand] + private void OpenFiles() + { + var dialog = Services.FileDialogService.CreateOpenFileDialog(); + dialog.Title = "编码识别"; + dialog.Multiselect = true; + if (dialog.ShowDialog() != true) return; + AddFiles(dialog.FileNames); + + } + + [RelayCommand] + private void Clear() + { + this.Files.Clear(); + } + private void AddFiles(string[] files) + { + if (files == null || files.Length == 0) return; + Array.Reverse(files); + foreach (var file in files) + { + var info = new FileInfo(file); + var item = new FileItem(info); + Files.Insert(0, item); + } + } + + public void OnFilesDropped(string group, string[] filepaths) + { + AddFiles(filepaths); + } + + [RelayCommand] + private void Preview(FileItem file) + { + var payload = new PreviewFileAsStringEventPayload(file.Path, Encoding.GetEncoding(file.Encoding)); + this._eventAggregator.GetEvent().Publish(payload); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Files/HashFileViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Files/HashFileViewModel.cs new file mode 100644 index 0000000..c164b28 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Files/HashFileViewModel.cs @@ -0,0 +1,220 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Security.Cryptography; +using LuYao.Toolkit.Services; +using NewLife.Log; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Files; + +public partial class HashFileViewModel : ViewModelBase, IFileDragDropTarget +{ + public enum HashStatus { Pendding, Running, Success, Failure } + private static IDictionary Factory { get; } = new SortedDictionary(); + public static HashAlgorithm Create(string name) + { + if (Factory.TryGetValue(name, out var algorithm)) return algorithm.Create(); + return null; + } + + + + public interface IHashAlgorithmItem + { + string Name { get; } + bool IsSelected { get; set; } + HashAlgorithm Create(); + } + private partial class HashAlgorithmItem : ViewModelBase, IHashAlgorithmItem where T : HashAlgorithm + { + [ObservableProperty] + [ViewStates.WatchViewState(nameof(IsSelected))] + private bool _isSelected = false; + public HashAlgorithmItem(string name, Func factory) + { + this.Name = name; + Factory[name] = this; + _factory = factory; + } + private readonly Func _factory; + public string Name { get; private set; } + public HashAlgorithm Create() => _factory.Invoke(); + } + public partial class HashTask : ViewModelBase + { + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(Name))] + private string _fullName; + public string Name => Path.GetFileName(this.FullName); + [ObservableProperty] + private HashStatus _status; + [ObservableProperty] + private long _length; + [ObservableProperty] + private long _current; + [ObservableProperty] + private TimeSpan _cost; + [ObservableProperty] + private string _algorithm; + [ObservableProperty] + private string _result; + [ObservableProperty] + private long _speed; + + [RelayCommand] + private void Copy() + { + if (string.IsNullOrWhiteSpace(this.Result)) return; + ClipboardService.CopyText(this.Result); + } + public void Update(Stopwatch stopwatch) + { + var sec = stopwatch.ElapsedMilliseconds / 1000f; + if (sec <= 0) + { + this.Speed = 0; + return; + } + this.Speed = Convert.ToInt64(this.Current / sec); + } + } + public ObservableCollection HashAlgorithms { get; } + public ObservableCollection Tasks { get; } = new ObservableCollection(); + public HashFileViewModel() + { + this.HashAlgorithms = new ObservableCollection + { + new HashAlgorithmItem("CRC32",()=>new Crc32()), + new HashAlgorithmItem("MD5",()=>MD5.Create()), + new HashAlgorithmItem("SHA1",()=>SHA1.Create()), + new HashAlgorithmItem("SHA256",()=>SHA256.Create()), + new HashAlgorithmItem("SHA384",()=>SHA384.Create()), + }; + if (this.HashAlgorithms.All(i => i.IsSelected == false)) this.HashAlgorithms[1].IsSelected = true; + } + private Task _task = Task.CompletedTask; + private void LoadFiles(string[] files) + { + if (this.HashAlgorithms.All(i => i.IsSelected == false)) this.HashAlgorithms[0].IsSelected = true; + var names = this.HashAlgorithms.Where(i => i.IsSelected).Select(i => i.Name).ToList(); + + foreach (var file in files) + { + var info = new FileInfo(file); + if (info.Exists == false) continue; + foreach (var item in this.HashAlgorithms) + { + if (item.IsSelected == false) continue; + this.Tasks.Add(new HashTask + { + FullName = info.FullName, + Status = HashStatus.Pendding, + Length = info.Length, + Current = 0, + Cost = TimeSpan.Zero, + Algorithm = item.Name, + Result = String.Empty + }); + } + } + if (_task.IsCompleted) _task = Run(); + } + + [RelayCommand] + private void Open() + { + var dialog = FileDialogService.CreateOpenFileDialog(); + dialog.Multiselect = true; + dialog.Title = "选择需要校验的文件"; + if (dialog.ShowDialog()) + { + var files = dialog.FileNames; + if (files is { Length: > 0 }) this.LoadFiles(files); + } + } + + [RelayCommand] + private void Clear() + { + var forRemove = this.Tasks.Where(i => i.Status != HashStatus.Running).ToList(); + if (forRemove.Count > 0) + { + foreach (var item in forRemove) + { + if (item.Status == HashStatus.Running) continue; + this.Tasks.Remove(item); + } + } + } + public void OnFilesDropped(string group, string[] filepaths) + { + LoadFiles(filepaths); + } + private async Task Run() + { + var st = new Stopwatch(); + while (true) + { + var item = this.Tasks.FirstOrDefault(i => i.Status == HashStatus.Pendding); + if (item == null) break; + var runAt = DateTime.Now; + try + { + item.IsBusy = true; + item.Status = HashStatus.Running; + using (HashAlgorithm a = Create(item.Algorithm)) + { + using var fs = File.OpenRead(item.FullName); + var buffer = new byte[1024 * 1024]; + int read; + long total = 0; + var start = DateTime.Now; + var last = 0; + st.Restart(); + + while ((read = await fs.ReadAsync(buffer)) > 0) + { + a.TransformBlock(buffer, 0, read, buffer, 0); + total += read; + var now = Convert.ToInt32(1d * total / fs.Length * 1000); + if (last != now) + { + item.Current = total; + last = now; + item.Update(st); + } + } + + a.TransformFinalBlock(buffer, 0, read); + st.Stop(); + item.Update(st); + + item.Result = BitConverter.ToString(a.Hash) + .ToLowerInvariant() + .Replace("-", string.Empty); + + item.Current = total; + } + item.Status = HashStatus.Success; + } + catch (Exception e) + { + XTrace.WriteException(e); + item.Result = e.Message; + item.Status = HashStatus.Failure; + } + finally + { + item.Cost = DateTime.Now - runAt; + item.IsBusy = false; + } + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Gens/GenAesKeyViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Gens/GenAesKeyViewModel.cs new file mode 100644 index 0000000..40f253a --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Gens/GenAesKeyViewModel.cs @@ -0,0 +1,57 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; + +namespace LuYao.Toolkit.Channels.Gens; + +public partial class GenAesKeyViewModel : ViewModelBase +{ + public GenAesKeyViewModel() + { + this.LoadKeys(); + if (this.Keys.Count > 0) Gen(this.Keys.First()); + } + + [ObservableProperty] + private string _result; + public IReadOnlyCollection Keys { get; private set; } + private void LoadKeys() + { + var keys = new SortedSet(); + using (var aes = Aes.Create()) + { + foreach (var size in aes.LegalKeySizes) + { + for (int i = size.MinSize; i <= size.MaxSize; i += size.SkipSize) + { + if (keys.Contains(i)) + { + continue; + } + keys.Add(i); + } + } + } + Keys = keys; + } + [RelayCommand] + private void Gen(object len) => this.Result = GenerateAesKey(Convert.ToInt32(len)); + [RelayCommand] + private void Copy() + { + Services.ClipboardService.CopyText(this.Result); + } + private static string GenerateAesKey(int len) + { + using (var aes = Aes.Create()) + { + aes.KeySize = len; + aes.GenerateKey(); + return Convert.ToBase64String(aes.Key); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Gens/GenGuidViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Gens/GenGuidViewModel.cs new file mode 100644 index 0000000..f8505c9 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Gens/GenGuidViewModel.cs @@ -0,0 +1,79 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Channels.Gens; + +public partial class GenGuidViewModel : ViewModelBase +{ + [INotifyPropertyChanged] + public partial class GuidFormat + { + public GuidFormat(string name, Func format) + { + this.Name = name; + this.Formater = format; + } + public string Name { get; } + public Func Formater { get; } + [ObservableProperty] + private bool _isSelected; + } + private Guid _guid = Guid.Empty; + [ObservableProperty] + [ViewStates.WatchViewState(nameof(SelectedIndex))] + private int _selectedIndex; + public List Formats { get; } + [ObservableProperty] + private string _result; + public GenGuidViewModel() + { + this.Formats = new List + { + new GuidFormat("小写带横线", x => x.ToString("D").ToLowerInvariant()), + new GuidFormat("大写带横线", x => x.ToString("D").ToUpperInvariant()), + new GuidFormat("小写无横线", x => x.ToString("N").ToLowerInvariant()), + new GuidFormat("大写无横线", x => x.ToString("N").ToUpperInvariant()), + new GuidFormat("注册表格式", x => x.ToString("B")), + new GuidFormat("[GUID(\"xxxxxxx-xxxx ... xxxx\")]", x => $"[GUID(\"{x.ToString("D")}\")]"), + new GuidFormat("", x => $""), + new GuidFormat("Guid.Parse(\"xxxxxxx-xxxx ... xxxx\")", x => $"Guid.Parse(\"{x.ToString("D")}\")"), + new GuidFormat("BASE64",x=>Convert.ToBase64String(x.ToByteArray())) + }; + if (this.SelectedIndex >= this.Formats.Count) + { + this.SelectedIndex = 0; + } + this.Formats[this.SelectedIndex].IsSelected = true; + this.Gen(); + } + [RelayCommand] + private void Select(GuidFormat fmt) + { + for (int i = 0; i < this.Formats.Count; i++) + { + var item = this.Formats[i]; + if (item == fmt) + { + item.IsSelected = true; + this.SelectedIndex = i; + this.Result = item.Formater(this._guid); + } + else + { + item.IsSelected = false; + } + } + } + [RelayCommand] + private void Gen() + { + this._guid = Guid.NewGuid(); + var fmt = this.Formats.Find(i => i.IsSelected) ?? this.Formats[0]; + this.Result = fmt.Formater(this._guid); + } + [RelayCommand] + private void Copy() => Services.ClipboardService.CopyText(this.Result); +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Gens/GenLinesByRangeViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Gens/GenLinesByRangeViewModel.cs new file mode 100644 index 0000000..ccbcee8 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Gens/GenLinesByRangeViewModel.cs @@ -0,0 +1,60 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System.Text; + +namespace LuYao.Toolkit.Channels.Gens; + +public partial class GenLinesByRangeViewModel : ViewModelBase +{ + public GenLinesByRangeViewModel() => this.Execute(); + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Min))] + private int min = 1000; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Max))] + private int max = 1024; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Template))] + private string template = "http://www.baidu.com/s?w=${id}"; + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(CopyCommand))] + private string output; + + partial void OnMinChanged(int value) + { + this.Execute(); + } + partial void OnMaxChanged(int value) + { + this.Execute(); + } + partial void OnTemplateChanged(string value) + { + this.Execute(); + } + + void Execute() + { + if (string.IsNullOrWhiteSpace(this.Template)) + { + this.Output = string.Empty; + return; + } + var sb = new StringBuilder(); + for (int i = this.Min; i <= this.Max; i++) + { + sb.Append(this.Template.Replace("${id}", i.ToString())); + sb.AppendLine(); + } + this.Output = sb.ToString(); + } + private bool CanCopy => !string.IsNullOrWhiteSpace(Output); + [RelayCommand(CanExecute = nameof(CanCopy))] + private void Copy() + { + Services.ClipboardService.CopyText(this.Output); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Gens/GenPasswordViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Gens/GenPasswordViewModel.cs new file mode 100644 index 0000000..bd0184d --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Gens/GenPasswordViewModel.cs @@ -0,0 +1,75 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Security; +using LuYao.Toolkit.ViewStates; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; + +namespace LuYao.Toolkit.Channels.Gens; + +public partial class GenPasswordViewModel : ViewModelBase +{ + public GenPasswordViewModel() => Gen(); + + [ObservableProperty] + [WatchViewState(nameof(UseUpperCase))] + private bool useUpperCase = true; + [ObservableProperty] + [WatchViewState(nameof(UseNumber))] + private bool useNumber = true; + [ObservableProperty] + [WatchViewState(nameof(UseSymbols))] + private bool useSymbols = false; + [ObservableProperty] + [WatchViewState(nameof(Length))] + private int length = 10; + [ObservableProperty] + [WatchViewState(nameof(EasyToRead))] + private bool easyToRead = true; + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(Score))] + [NotifyCanExecuteChangedFor(nameof(GenCommand))] + private string result = string.Empty; + public PasswordScore Score => PasswordAdvisor.CheckStrength(this.result); + private StringBuilder builder = new StringBuilder(); + private static readonly Random Rnd = new Random(); + private static char[] Fallibility = new char[] { '0', 'o', 'O' }; + [RelayCommand] + private void Gen() + { + builder.Clear(); + var pool = new List { }; + pool.AddRange("abcdefghijklmnopqrstuvwxyz"); + if (useUpperCase) pool.AddRange("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); + if (useNumber) pool.AddRange("0123456789"); + if (useSymbols) pool.AddRange("!#$%&*@^"); + if (easyToRead) pool.RemoveAll(x => Array.IndexOf(Fallibility, x) >= 0); + + for (int i = 0; i < length; i++) + { + var next = Rnd.Next(0, pool.Count); + builder.Append(pool[next]); + } + + Result = builder.ToString(); + } + [RelayCommand(CanExecute = nameof(CanCopy))] + private void Copy() => Services.ClipboardService.CopyText(this.Result); + private bool CanCopy => !string.IsNullOrWhiteSpace(this.Result); + protected override void OnPropertyChanged(PropertyChangedEventArgs e) + { + base.OnPropertyChanged(e); + switch (e.PropertyName) + { + case nameof(UseUpperCase): + case nameof(UseNumber): + case nameof(UseSymbols): + case nameof(Length): + case nameof(EasyToRead): + this.Gen(); + break; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Gens/GenRsaKeyViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Gens/GenRsaKeyViewModel.cs new file mode 100644 index 0000000..8082eb0 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Gens/GenRsaKeyViewModel.cs @@ -0,0 +1,54 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Security.Cryptography; + +namespace LuYao.Toolkit.Channels.Gens; +public partial class GenRsaKeyViewModel : ViewModelBase +{ + public IReadOnlyCollection KeySizes { get; } = new SortedSet { 512, 1024, 2048, 4096 }; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(KeySize))] + private int _keySize = 1024; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(KeyFormat))] + private RsaKeyFormat _keyFormat = RsaKeyFormat.PKCS8; + + [ObservableProperty] + private string _privateKey; + [ObservableProperty] + private string _publicKey; + [RelayCommand] + private void Gen() + { + using (var rsa = RSA.Create(this.KeySize)) + { + var publicKey = rsa.ExportRSAPublicKey(); + this.PublicKey = Convert.ToBase64String(publicKey); + switch (this.KeyFormat) + { + case RsaKeyFormat.PKCS8: + this.PrivateKey = Convert.ToBase64String(rsa.ExportPkcs8PrivateKey()); + break; + case RsaKeyFormat.PKCS1: + this.PrivateKey = Convert.ToBase64String(rsa.ExportRSAPrivateKey()); + break; + case RsaKeyFormat.XML: + this.PrivateKey = rsa.ToXmlString(true); + this.PublicKey = rsa.ToXmlString(false); + break; + default: + this.PrivateKey = String.Empty; + break; + } + } + } + [RelayCommand] + private void Copy(string text) + { + Services.ClipboardService.CopyText(text); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Gens/GenXCodeEntityViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Gens/GenXCodeEntityViewModel.cs new file mode 100644 index 0000000..6e990dd --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Gens/GenXCodeEntityViewModel.cs @@ -0,0 +1,117 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Services; +using NewLife.Log; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using XCode.Code; +using XCode.DataAccessLayer; + +namespace LuYao.Toolkit.Channels.Gens; + +public partial class GenXCodeEntityViewModel : ViewModelBase +{ + [ObservableProperty] + private bool _fixModelFile = true; + [ObservableProperty] + private bool _chineseFileName = false; + [ObservableProperty] + [ViewStates.WatchViewState(nameof(XmlFileName))] + private string _xmlFileName; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(AutoFillDescription))] + private bool _autoFillDescription = false; + [ObservableProperty] + [ViewStates.WatchViewState(nameof(AutoFillToChinese))] + private bool _autoFillToChinese = false; + + [ObservableProperty] + private IList _tables; + [ObservableProperty] + private string _output; + + [RelayCommand] + private async Task Gen() + { + try + { + if (string.IsNullOrWhiteSpace(this.XmlFileName)) throw new Exception("XML 文件不能为空"); + if (!File.Exists(this.XmlFileName)) throw new Exception("XML 文件不存在"); + var sb = new StringBuilder(); + using (CreateLogger(sb)) + { + EntityBuilder.Debug = true; + ClassBuilder.Debug = true; + PathHelper.BasePath = Path.GetDirectoryName(this.XmlFileName); + var options = new BuilderOption { }; + var tables = ClassBuilder.LoadModels(this.XmlFileName, options, out var attrs); + if (this.AutoFillDescription) + { + foreach (var table in tables) + { + var cols = table.Columns.Where(i => String.IsNullOrWhiteSpace(i.Description)).ToList(); + if (cols.Count <= 0) continue; + if (this.AutoFillToChinese) + { + var names = cols.Select(i => i.Name).ToList(); + var values = await GoogleService.Translate("auto", "zh-cn", names); + for (int f = 0; f < values.Lines.Count; f++) + { + cols[f].Description = values.Lines[f]; + } + } + else + { + foreach (var col in cols) + { + col.Description = col.Name; + } + } + } + } + if (this.FixModelFile) EntityBuilder.FixModelFile(this.XmlFileName, options, attrs, tables); + if (string.IsNullOrWhiteSpace(options.Output)) + { + options.Output = Path.GetDirectoryName(this.XmlFileName); + } + else + { + options.Output = Path.Combine(Path.GetDirectoryName(this.XmlFileName), options.Output); + } + var i = EntityBuilder.BuildTables(tables, options, this.ChineseFileName); + sb.AppendLine($"生成成功,共 {i} 个。"); + this.Tables = tables; + Output = sb.ToString(); + } + } + catch (Exception e) + { + Tables = null; + Output = e.Message; + } + } + private IDisposable CreateLogger(StringBuilder sb) + { + var logger = XTrace.Log; + var next = new CompositeLog(logger, new ActionLog((fmt, arg) => + { + if (arg is { Length: > 0 }) + { + sb.AppendFormat(fmt, arg); + } + else + { + sb.Append(fmt); + } + sb.AppendLine(); + })); + XTrace.Log = next; + return new DisposeAction(() => { XTrace.Log = logger; }); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Gens/RsaKeyFormat.cs b/LuYao.Toolkit.ViewModels/Channels/Gens/RsaKeyFormat.cs new file mode 100644 index 0000000..3e33944 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Gens/RsaKeyFormat.cs @@ -0,0 +1,3 @@ +namespace LuYao.Toolkit.Channels.Gens; + +public enum RsaKeyFormat { PKCS8, PKCS1, XML } diff --git a/LuYao.Toolkit.ViewModels/Channels/Images/Base64ToImageViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Images/Base64ToImageViewModel.cs new file mode 100644 index 0000000..90a2833 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Images/Base64ToImageViewModel.cs @@ -0,0 +1,81 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using ImageMagick; +using LuYao.Toolkit.IO; +using System; +using System.IO; +using System.Text.RegularExpressions; + +namespace LuYao.Toolkit.Channels.Images; + +public partial class Base64ToImageViewModel : ViewModelBase +{ + private static Regex DataRegex = new Regex("^data:(?[\\w/]+);base64,(?[0-9a-zA-Z/+=]+)$", RegexOptions.Compiled);//表达式对象 + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(ConvertCommand))] + [NotifyCanExecuteChangedFor(nameof(ClearCommand))] + private string _input; + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(SaveCommand))] + private string _output = string.Empty; + + private IMagickFormatInfo _format = null; + + private bool CanConvert() => !string.IsNullOrWhiteSpace(this.Input); + [RelayCommand(CanExecute = nameof(CanConvert))] + private void Convert() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + this._format = null; + return; + } + var m = DataRegex.Match(this.Input); + if (m.Success == false) return; + var data = m.Groups["data"].Value; + var bytes = System.Convert.FromBase64String(data); + var fmt = ImageMagick.MagickFormatInfo.Create(bytes); + if (fmt == null) throw new System.Exception("图片格式不正确!"); + this._format = fmt; + var tmp = TempHelper.GetTempFileName(); + File.WriteAllBytes(tmp, bytes); + this.Output = tmp; + } + + private bool CanClear() => !string.IsNullOrWhiteSpace(this.Input); + [RelayCommand(CanExecute = nameof(CanClear))] + private void Clear() + { + this.Input = string.Empty; + this.Output = string.Empty; + } + + [RelayCommand] + private void Paste() + { + var txt = Services.ClipboardService.GetText(); + if (string.IsNullOrWhiteSpace(txt)) return; + this.Input = txt; + this.Convert(); + } + + private bool CanSave() => !string.IsNullOrWhiteSpace(this.Output); + [RelayCommand(CanExecute = nameof(CanSave))] + private void Save() + { + if (string.IsNullOrWhiteSpace(this.Output) || !File.Exists(this.Output) || this._format == null) return; + var ext = this._format.Format.ToString().ToLower(); + var dialog = Services.FileDialogService.CreateSaveFileDialog(); + dialog.Filter = $"图片|*.{ext}"; + dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + dialog.AddExtension = true; + dialog.Title = "保存图片"; + if (!dialog.ShowDialog()) return; + var fn = dialog.FileName; + if (string.IsNullOrWhiteSpace(Path.GetExtension(fn))) fn += "." + ext; + File.Copy(this.Output, fn, true); + Services.NotifyService.Success("图片保存成功"); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Images/GifSplitterViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Images/GifSplitterViewModel.cs new file mode 100644 index 0000000..8848f1a --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Images/GifSplitterViewModel.cs @@ -0,0 +1,108 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using ImageMagick; +using LuYao.Toolkit.IO; +using NewLife.Log; +using System; +using System.Collections.ObjectModel; +using System.IO; +using System.IO.Compression; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Images; + +public partial class GifSplitterViewModel : ViewModelBase +{ + public record Frame(int Index, string FileName) : IDisposable + { + public void Dispose() + { + if (File.Exists(this.FileName)) return; + File.Delete(this.FileName); + } + } + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(ClearCommand))] + [NotifyCanExecuteChangedFor(nameof(ExportCommand))] + private string _origin; + + + [ObservableProperty] + private ObservableCollection _frames = new ObservableCollection(); + + [RelayCommand] + private async Task OpenFile() + { + var dialog = Services.FileDialogService.CreateOpenFileDialog(); + dialog.Title = "打开 Gif 图片"; + dialog.Filter = "GIF|*.gif"; + dialog.Multiselect = false; + if (!dialog.ShowDialog()) return; + var fn = dialog.FileName; + var ext = MagickFormatInfo.Create(fn); + if (ext == null) throw new Exception("图片格式识别失败,请确认图片文件是否正确"); + if (ext.IsMultiFrame == false) throw new Exception("选择文件不是动画图片。"); + using var _ = this.Busy(); + this.Origin = fn; + using (var collection = new MagickImageCollection(fn)) + { + if (this.Frames.Count > 0) foreach (var frame in this.Frames) frame.Dispose(); + this.Frames.Clear(); + collection.Coalesce(); + for (int i = 0; i < collection.Count; i++) + { + IMagickImage item = collection[i]; + var tmp = TempHelper.GetTempFileName(); + await Task.Run(() => { item.Write(tmp, MagickFormat.Png); }); + Frames.Add(new Frame(i, tmp)); + } + } + } + private bool CanClear() => !string.IsNullOrWhiteSpace(this.Origin); + + [RelayCommand(CanExecute = nameof(CanClear))] + private void Clear() + { + this.Origin = String.Empty; + this.Frames.Clear(); + } + + [RelayCommand] + private void Save(Frame frame) + { + var dialog = Services.FileDialogService.CreateSaveFileDialog(); + dialog.Title = "保存图片帧"; + dialog.Filter = "PNG|*.png"; + dialog.AddExtension = true; + dialog.FileName = Path.GetFileNameWithoutExtension(this.Origin) + "_" + frame.Index + ".png"; + if (!dialog.ShowDialog()) return; + var fn = dialog.FileName; + if (string.IsNullOrWhiteSpace(Path.GetExtension(fn))) fn += ".png"; + File.Copy(frame.FileName, fn, true); + Services.NotifyService.Success("保存成功!"); + } + + private bool CanExport() => !string.IsNullOrWhiteSpace(this.Origin); + + [RelayCommand(CanExecute = nameof(CanExport))] + private void Export() + { + var dialog = Services.FileDialogService.CreateSaveFileDialog(); + dialog.Title = "导出所有帧"; + dialog.Filter = "压缩文件|*.zip"; + dialog.AddExtension = true; + dialog.FileName = Path.GetFileNameWithoutExtension(this.Origin) + ".zip"; + if (!dialog.ShowDialog()) return; + var fn = dialog.FileName; + if (string.IsNullOrWhiteSpace(Path.GetExtension(fn))) fn += ".zip"; + if (File.Exists(fn)) File.Delete(fn); + using (var zip = ZipFile.Open(fn, ZipArchiveMode.Create)) + { + foreach (var item in this.Frames) + { + zip.CreateEntryFromFile(item.FileName, $"{Path.GetFileNameWithoutExtension(this.Origin)}_{item.Index}.png"); + } + } + Services.NotifyService.Success("保存成功!"); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Images/ImageToBase64ViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Images/ImageToBase64ViewModel.cs new file mode 100644 index 0000000..02445ea --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Images/ImageToBase64ViewModel.cs @@ -0,0 +1,112 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using ImageMagick; +using LuYao.Toolkit.IO; +using LuYao.Toolkit.Services; +using System; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.IO; + +namespace LuYao.Toolkit.Channels.Images; + +public partial class ImageToBase64ViewModel : ViewModelBase, IFileDragDropTarget +{ + public record OutputFormat(string Title, Func Format); + public partial class OutputLine + { + public OutputLine(string title, string content) + { + this.Title = title; + this.Content = content; + } + public string Title { get; } + public string Content { get; } + [RelayCommand] + private void Copy() + { + ClipboardService.CopyText(this.Content); + } + } + + private static OutputFormat[] Formats = new OutputFormat[] + { + new OutputFormat("Base64:",static(fmt,str) => $"data:{fmt.MimeType};base64,{str}"), + new OutputFormat("CSS:",static(fmt,str) => $"background-image: url(data:{fmt.MimeType};base64,{str});"), + new OutputFormat("HTML:",static(fmt,str) => $""), + }; + + public void OnFilesDropped(string group, string[] filepaths) + { + if (filepaths is { Length: > 0 }) SetImage(filepaths[0]); + } + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(ClearCommand))] + private string _origin = string.Empty; + + partial void OnOriginChanged(string value) + { + if (string.IsNullOrWhiteSpace(value)) + { + this.Preview = null; + } + else if (File.Exists(value)) + { + var tmp = TempHelper.GetTempFileName(); + File.Copy(value, tmp, true); + this.Preview = tmp; + } + else + { + this.Preview = value; + } + } + + [ObservableProperty] + private string _preview = null; + + + public ObservableCollection Outputs { get; } = new ObservableCollection(); + + [RelayCommand] + private void OpenFile() + { + var dialog = FileDialogService.CreateOpenFileDialog(); + dialog.Title = "打开图片"; + dialog.Filter = "图片文件|*.jpg;*.png;*.bmp;*.gif;*.webp|所有文件|*.*"; + dialog.Multiselect = false; + if (!dialog.ShowDialog()) return; + var fn = dialog.FileName; + SetImage(fn); + } + private void SetImage(string filename) + { + this.Outputs.Clear(); + if (string.IsNullOrWhiteSpace(filename)) return; + if (!File.Exists(filename)) throw new Exception("原图不存在!"); + var bytes = File.ReadAllBytes(filename); + var fmt = MagickFormatInfo.Create(bytes); + if (fmt == null) throw new Exception("原图加载失败,可能是格式不正确!"); + this.Origin = filename; + var data = File.ReadAllBytes(this.Origin); + var str = Convert.ToBase64String(data); + foreach (var outputFormat in Formats) this.Outputs.Add(new OutputLine(outputFormat.Title, outputFormat.Format(fmt, str))); + } + + private bool CanClear() => !string.IsNullOrWhiteSpace(this.Origin); + [RelayCommand(CanExecute = nameof(CanClear))] + private void Clear() + { + this.Origin = string.Empty; + this.Outputs.Clear(); + } + + [RelayCommand] + private void Paste() + { + var img = ClipboardService.GetImage(); + if (string.IsNullOrWhiteSpace(img)) return; + this.SetImage(img); + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Images/ImageToIconViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Images/ImageToIconViewModel.cs new file mode 100644 index 0000000..09a7eed --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Images/ImageToIconViewModel.cs @@ -0,0 +1,88 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using ImageMagick; +using LuYao.Toolkit.Drawing; +using LuYao.Toolkit.IO; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; + +namespace LuYao.Toolkit.Channels.Images; + +public partial class ImageToIconViewModel : ViewModelBase +{ + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand))] + private string fileName; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X16))] private bool _x16 = true; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X24))] private bool _x24 = true; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X32))] private bool _x32 = true; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X48))] private bool _x48 = true; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X64))] private bool _x64 = true; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X96))] private bool _x96 = true; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X128))] private bool _x128 = true; + [ObservableProperty, NotifyCanExecuteChangedFor(nameof(ConvertCommand)), ViewStates.WatchViewState(nameof(X256))] private bool _x256 = true; + + private bool CanConvert() + { + if (string.IsNullOrWhiteSpace(this.FileName)) return false; + var width = GetWidth(); + if (width.Count <= 0) return false; + return true; + } + + private List GetWidth() + { + var ret = new List(); + + if (this.X16) ret.Add(16); + if (this.X24) ret.Add(24); + if (this.X32) ret.Add(32); + if (this.X48) ret.Add(48); + if (this.X64) ret.Add(64); + if (this.X96) ret.Add(96); + if (this.X128) ret.Add(128); + if (this.X256) ret.Add(256); + + return ret; + } + + [RelayCommand(CanExecute = nameof(CanConvert))] + private void Convert() + { + var widths = GetWidth(); + var dialog = Services.FileDialogService.CreateSaveFileDialog(); + dialog.Title = "保存图标"; + dialog.Filter = "图标|*.ico"; + dialog.FileName = Path.GetFileNameWithoutExtension(this.FileName) + ".ico"; + dialog.InitialDirectory = Path.GetDirectoryName(this.FileName); + dialog.DefaultExt = ".ico"; + if (dialog.ShowDialog()) + { + widths.Reverse(); + var files = new List(); + foreach (var w in widths) + { + var tmp = TempHelper.GetTempFileName() + ".png"; + using (var img = new MagickImage(this.FileName)) + { + img.Strip(); + img.Resize(w, w); + img.BackgroundColor = MagickColors.Transparent; + img.Format = MagickFormat.Png32; + img.Write(tmp); + } + files.Add(tmp); + } + if (files.Count > 0) + { + var images = files.Select(Image.FromFile).ToList(); + using (var fs = File.OpenWrite(dialog.FileName)) IconFactory.SavePngsAsIcon(images, fs); + images.ForEach(i => i.Dispose()); + files.ForEach(File.Delete); + Services.NotifyService.Success("图标转换成功"); + } + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/HttpProxyCheckerViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/HttpProxyCheckerViewModel.cs new file mode 100644 index 0000000..204afee --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/HttpProxyCheckerViewModel.cs @@ -0,0 +1,121 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Diagnostics; +using System.Net; +using System.Net.Http; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Networks +{ + public partial class HttpProxyCheckerViewModel : ViewModelBase + { + public enum ResponseStatus + { + Ready, + Running, + OK, + Fail + } + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(GetCommand))] + [ViewStates.WatchViewState(nameof(Host))] + private string _host = "127.0.0.1"; + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(GetCommand))] + [ViewStates.WatchViewState(nameof(Port))] + private int _port = 10809; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Username))] + private string _username; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Password))] + private string _password; + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(GetCommand))] + [ViewStates.WatchViewState(nameof(RequestUrl))] + private string _requestUrl = "https://www.coderbusy.com"; + + [ObservableProperty] + private ResponseStatus _status = ResponseStatus.Ready; + + [ObservableProperty] + private Exception _exception; + + [ObservableProperty] + private HttpResponseMessage _response; + + [ObservableProperty] + private string _responseText; + + [ObservableProperty] + private TimeSpan _cost = TimeSpan.Zero; + + + private bool CanGet() + { + if (string.IsNullOrWhiteSpace(this.Host)) return false; + if (this.Port < 1 && this.Port > 65535) return false; + if (string.IsNullOrWhiteSpace(this.RequestUrl)) return false; + if (!Uri.TryCreate(this.RequestUrl, UriKind.Absolute, out _)) return false; + return true; + } + + [RelayCommand(CanExecute = nameof(CanGet))] + private async Task Get() + { + using var _ = this.Busy(); + var sw = new Stopwatch(); + try + { + this.Status = ResponseStatus.Running; + var proxy = new WebProxy(this.Host, this.Port); + if (!string.IsNullOrWhiteSpace(this.Username)) proxy.Credentials = new NetworkCredential(this.Username, this.Password); + using var handler = new SocketsHttpHandler() + { + UseProxy = true, + Proxy = proxy, + AutomaticDecompression = DecompressionMethods.All, + SslOptions = new SslClientAuthenticationOptions + { + RemoteCertificateValidationCallback = this.RemoteCertificateValidationCallback, + }, + ConnectTimeout = TimeSpan.FromSeconds(10), + PooledConnectionLifetime = TimeSpan.FromSeconds(1000), + }; + using var http = new HttpClient(handler, true); + using var request = new HttpRequestMessage(HttpMethod.Get, this.RequestUrl); + request.AddCommonHeader(); + sw.Start(); + var response = await http.SendAsync(request); + var html = await response.ReadAsHtmlAsync(); + sw.Stop(); + this.Response = response; + this.ResponseText = html; + this.Status = ResponseStatus.OK; + } + catch (Exception e) + { + this.Exception = e; + this.Status = ResponseStatus.Fail; + } + finally + { + if (sw.IsRunning) sw.Stop(); + this.Cost = sw.Elapsed; + } + } + + private bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) + { + return true; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/IPLookupViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/IPLookupViewModel.cs new file mode 100644 index 0000000..c048e66 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/IPLookupViewModel.cs @@ -0,0 +1,362 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Net; +using NewLife; +using NewLife.Serialization; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using System.Xml.Serialization; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class IPLookupViewModel : ViewModelBase +{ + [ObservableObject] + public partial class IPLookupProvider + { + public IPLookupProvider(string name, Func> handler) + { + this.Name = name; + this.handler = handler; + } + [ObservableProperty] + private string name; + + [ObservableProperty] + private string result = string.Empty; + [ObservableProperty] + private string _IP = string.Empty; + private Func> handler; + public async Task Execute(string ip, CancellationToken cancellationToken) + { + this.IP = string.Empty; + this.Result = string.Empty; + if (string.IsNullOrWhiteSpace(ip)) return; + try + { + this.Result = "查询中"; + this.IP = ip; + var result = await this.handler(ip, cancellationToken); + if (this.IP == ip) Result = result; + } + catch (Exception ex) + { + if (this.IP == ip) Result = $"查询异常:{ex.Message}"; + } + } + } + + public IReadOnlyCollection Providers { get; } + public IPLookupViewModel() + { + this.Providers = new List + { + new IPLookupProvider("码农很忙",IPLookupPHandler), + new IPLookupProvider("淘宝", TaoBaoQueryHandler), + new IPLookupProvider("百度地图", BaiduLbsQueryHandler), + new IPLookupProvider("腾讯地图", TencentLbsQueryHandler), + new IPLookupProvider("高德地图", AmapQueryHandler), + new IPLookupProvider("太平洋电脑网", PcOnlineQueryHandler) + }; + } + + + private string _ipAddress; + public string IPAddress + { + get => this._ipAddress; + set + { + if (SetProperty(ref this._ipAddress, value)) this.QueryCommand.NotifyCanExecuteChanged(); + } + } + private CancellationTokenSource CancellationTokenSource; + [RelayCommand(CanExecute = nameof(CanQuery))] + private async Task Query() + { + if (string.IsNullOrWhiteSpace(this.IPAddress)) return; + if (this.CancellationTokenSource != null) + { + this.CancellationTokenSource.Cancel(); + this.CancellationTokenSource = null; + } + using (this.Busy()) + { + var tasks = new List(); + this.CancellationTokenSource = new CancellationTokenSource(); + foreach (var provider in this.Providers) tasks.Add(provider.Execute(this.IPAddress, this.CancellationTokenSource.Token)); + await Task.WhenAll(tasks); + } + } + private bool CanQuery() + { + if (string.IsNullOrWhiteSpace(this.IPAddress)) return false; + string[] splitValues = this.IPAddress.Split('.'); + if (splitValues.Length != 4) return false; + if (!System.Net.IPAddress.TryParse(this.IPAddress, out _)) return false; + return true; + } + private static HttpClient HttpClient = new HttpClient(); + [RelayCommand] + private async Task GetLocale() + { + using (var response = await HttpClient.GetAsync("https://ipv4.gdt.qq.com/get_client_ip")) + { + var str = await response.Content.ReadAsStringAsync(); + if (System.Net.IPAddress.TryParse(str, out var ip)) + { + this.IPAddress = ip.ToString(); + await Query(); + } + } + } + + #region 太平洋电脑网 + + private async Task PcOnlineQueryHandler(string ip, CancellationToken cancellationToken) + { + var url = $"http://whois.pconline.com.cn/ip.jsp?ip={ip}"; + var str = await HttpClient.GetStringAsync(url, cancellationToken); + return str.Trim(); + } + + #endregion + + #region 淘宝 + + public class TaoBaoResponse + { + [XmlElement("code")] public int Code { get; set; } + + [XmlElement("data")] public TaoBaoData Data { get; set; } + [XmlElement("msg")] public string Message { get; set; } + + public class TaoBaoData + { + [XmlElement("country")] public string Country { get; set; } + + [XmlElement("country_id")] public string CountryId { get; set; } + + [XmlElement("area")] public string Area { get; set; } + + [XmlElement("area_id")] public string AreaId { get; set; } + + [XmlElement("region")] public string Region { get; set; } + + [XmlElement("region_id")] public string RegionId { get; set; } + + [XmlElement("city")] public string City { get; set; } + + [XmlElement("city_id")] public string CityId { get; set; } + + [XmlElement("county")] public string County { get; set; } + + [XmlElement("county_id")] public string CountyId { get; set; } + + [XmlElement("isp")] public string Isp { get; set; } + + [XmlElement("isp_id")] public string IspId { get; set; } + + [XmlElement("ip")] public string Ip { get; set; } + } + } + + private async Task TaoBaoQueryHandler(string ip, CancellationToken cancellationToken) + { + var url = $"http://ip.taobao.com/outGetIpInfo?ip={ip}&accessKey=alibaba-inc"; + var json = await HttpClient.GetStringAsync(url, cancellationToken); + json = json + .Replace("xx", string.Empty) + .Replace("XX", string.Empty); + + var r = json.ToJsonEntity(); + if (r.Code == 0) + { + var data = r.Data; + var list = new List + { + data.Country, + data.Region, + data.City, + data.Isp + }; + list.RemoveAll(string.IsNullOrWhiteSpace); + return list.Join(" "); + } + + return r.Message; + } + + #endregion + + #region 高德地图 + + public class AmapResponse + { + [XmlElement("status")] public int Status { get; set; } + + [XmlElement("info")] public string Info { get; set; } + + [XmlElement("infocode")] public string Infocode { get; set; } + + [XmlElement("country")] public string Country { get; set; } + + [XmlElement("province")] public string Province { get; set; } + + [XmlElement("city")] public string City { get; set; } + + [XmlElement("district")] public string District { get; set; } + + [XmlElement("isp")] public string Isp { get; set; } + + [XmlElement("location")] public string Location { get; set; } + + [XmlElement("ip")] public string Ip { get; set; } + + public override string ToString() + { + if (Status != 1) + { + return Info; + } + + var list = new List + { + Country, + Province, + City, + District, + Isp + }; + list.RemoveAll(string.IsNullOrWhiteSpace); + return list.Join(" "); + } + } + + private async Task AmapQueryHandler(string ip, CancellationToken cancellationToken) + { + var key = "0f48c54461148ea1e670b676cbd1700b"; + var url = $"https://restapi.amap.com/v5/ip?key={key}&ip={ip}&type=4"; + var json = await HttpClient.GetStringAsync(url, cancellationToken); + var obj = json.ToJsonEntity(); + return obj.ToString(); + } + + #endregion + + #region 百度地图 + + public class BaiduResponse + { + [XmlElement("address")] public string Address { get; set; } + + [XmlElement("status")] public int Status { get; set; } + + [XmlElement("message")] public string Message { get; set; } + } + + private async Task BaiduLbsQueryHandler(string ip, CancellationToken cancellationToken) + { + const string ak = "yBaSv2qHR4r540yBDWGPpC1bLZYK17ni"; + var url = $"http://api.map.baidu.com/location/ip?ak={ak}&ip={ip}"; + var json = await HttpClient.GetStringAsync(url, cancellationToken); + var obj = json.ToJsonEntity(); + if (obj.Status != 0) + { + return obj.Message; + } + + return obj.Address; + } + + #endregion + + #region 腾讯地图 + + public partial class TencentLbsResponse + { + public class Location2 + { + [XmlElement("lat")] public double Lat { get; set; } + + [XmlElement("lng")] public double Lng { get; set; } + } + } + + public partial class TencentLbsResponse + { + public class AdInfo + { + [XmlElement("nation")] public string Nation { get; set; } + + [XmlElement("province")] public string Province { get; set; } + + [XmlElement("city")] public string City { get; set; } + + [XmlElement("district")] public string District { get; set; } + + [XmlElement("adcode")] public int AdCode { get; set; } + } + } + + public partial class TencentLbsResponse + { + public class Result2 + { + [XmlElement("ip")] public string Ip { get; set; } + + [XmlElement("location")] public Location2 Location { get; set; } + + [XmlElement("ad_info")] public AdInfo AdInfo { get; set; } + } + } + + public partial class TencentLbsResponse + { + [XmlElement("status")] public int Status { get; set; } + + [XmlElement("message")] public string Message { get; set; } + + [XmlElement("result")] public Result2 Result { get; set; } + + public override string ToString() + { + if (Status != 0) + { + return Message; + } + + var list = new List(); + if (Result != null && Result.AdInfo != null) + { + var info = Result.AdInfo; + list.Add(info.Nation); + list.Add(info.Province); + list.Add(info.City); + list.Add(info.District); + list.RemoveAll(string.IsNullOrWhiteSpace); + } + + return list.Join(" "); + } + } + + private async Task TencentLbsQueryHandler(string ip, CancellationToken cancellationToken) + { + var key = "TAOBZ-YQ3KU-R4NVU-BT4IA-2P2MF-RDBVJ"; + var url = $"https://apis.map.qq.com/ws/location/v1/ip?ip={ip}&key={key}"; + var json = await HttpClient.GetStringAsync(url, cancellationToken); + var e = json.ToJsonEntity(); + return e.ToString(); + } + + #endregion + + private static Task IPLookupPHandler(string ip, CancellationToken cancellationToken) + { + return Task.FromResult(IPLookup.Instance.Search(ip)); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/PingViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/PingViewModel.cs new file mode 100644 index 0000000..3429eb6 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/PingViewModel.cs @@ -0,0 +1,111 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class PingViewModel : ViewModelBase +{ + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(PingCommand))] + private string _input; + + + [ObservableProperty] + private string _output; + private bool CanPing => !string.IsNullOrWhiteSpace(this.Input); + + [RelayCommand(AllowConcurrentExecutions = false, CanExecute = nameof(CanPing))] + private async Task Ping() + { + var options = new PingOptions { DontFragment = true }; + const string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + byte[] buffer = Encoding.ASCII.GetBytes(data); + const int timeout = 1000 * 5; + var input = this.Input; + this.Output = String.Empty; + var sb = new StringBuilder(); + string ip = string.Empty; + var total = 0; + var times = new List(); + using (var sender = new Ping()) + { + for (int i = 0; i < 4; i++) + { + if (i > 0) await Task.Delay(TimeSpan.FromSeconds(1)); + try + { + if (string.IsNullOrWhiteSpace(ip)) + { + ip = await GetIPAddress(input); + if (ip != input) + { + sb.AppendLine($"正在 Ping {input} [{ip}] 具有 {buffer.Length} 字节的数据:"); + } + else + { + sb.AppendLine($"正在 Ping {input} 具有 {buffer.Length} 字节的数据:"); + } + } + var reply = await sender.SendPingAsync(ip, timeout, buffer, options); + if (reply.Status == IPStatus.Success) + { + sb.AppendLine($"来自 {reply.Address} 的回复: 字节={reply.Buffer.Length} 时间={reply.RoundtripTime}ms TTL={reply.Options.Ttl}"); + times.Add(reply.RoundtripTime); + } + else + { + sb.AppendLine(reply.Status.ToString()); + } + } + catch (Exception e) + { + sb.AppendLine(GetMessage(e)); + break; + } + finally + { + this.Output = sb.ToString(); + total++; + } + } + } + if (!string.IsNullOrWhiteSpace(ip)) + { + sb.AppendLine(); + sb.AppendFormat("{0} 的 Ping 统计信息:", ip); + sb.AppendLine(); + sb.AppendFormat( + " 数据包: 已发送 = {0},已接收 = {1},丢失 = {2} ({3:0.##%} 丢失),", + total, + times.Count, + total - times.Count, + 1d * (total - times.Count) / total + ); + sb.AppendLine(); + if (times.Count > 0) + { + sb.AppendLine("往返行程的估计时间(以毫秒为单位):"); + sb.AppendFormat(" 最短 = {0}ms,最长 = {1}ms,平均 = {2}ms", times.Min(), times.Max(), times.Average()); + sb.AppendLine(); + } + } + this.Output = sb.ToString(); + } + private async Task GetIPAddress(string host) + { + foreach (var item in await Dns.GetHostAddressesAsync(host)) return item.ToString(); + return "127.0.0.1"; + } + private static string GetMessage(Exception e) + { + while (e.InnerException != null) e = e.InnerException; + return e.Message; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/DetailViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/DetailViewModel.cs new file mode 100644 index 0000000..605a611 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/DetailViewModel.cs @@ -0,0 +1,175 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using FluentValidation; +using LuYao.Toolkit.Entities; +using LuYao.Toolkit.Events; +using LuYao.Toolkit.PortProxy; +using LuYao.Toolkit.UI; +using NewLife; +using Prism.Events; +using Prism.Regions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Networks.PortProxy; + +public partial class DetailViewModel : DetailViewModelBase +{ + private IEventAggregator _eventAggregator; + + public DetailViewModel(IEventAggregator eventAggregator) + { + _eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); + _eventAggregator.GetEvent>().Subscribe(this.OnDelete); + } + + private void OnDelete(PortProxyRule obj) + { + if (this.IsNew) return; + if (obj.Id != this.Detail.Id) return; + this.MasterDetailViewModel.IsShowDetail = false; + } + + public override bool IsNavigationTarget(NavigationContext navigationContext) + { + return true; + } + + public override void OnNavigatedFrom(NavigationContext navigationContext) + { + } + + public override void OnNavigatedTo(NavigationContext navigationContext) + { + base.OnNavigatedTo(navigationContext); + if (navigationContext.Parameters.TryGetValue("Id", out var id)) + { + this.Id = id; + } + else + { + this.Id = 0; + } + this.Reload(); + } + + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(IsNew))] + [NotifyCanExecuteChangedFor(nameof(RefreshCommand))] + private int _id; + public bool IsNew => Id == default; + + [ObservableProperty] + private PortProxyItem _detail; + + [ObservableProperty] + private IReadOnlyList _groups = new List(); + + [ObservableProperty] + private IReadOnlyList _connectTos = new List(); + + public IReadOnlyDictionary Types { get; } = new SortedDictionary + { + {"","(自动)" }, + {"v4tov4","v4tov4" }, + {"v4tov6","v4tov6" }, + {"v6tov4","v6tov4" }, + {"v6tov6","v6tov6" } + }; + + private void Reload() + { + this.Detail = new PortProxyItem + { + ListenOn = "*", + IsEnabled = true, + Type = string.Empty + }; + if (!this.IsNew) + { + var e = PortProxyRule.FindByKey(this.Id); + if (e == null) throw new Exception($"Id 为 {this.Id} 的数据不存在"); + this.Detail.Read(e); + } + + this.Groups = PortProxyRule.GetGroups(); + this.ConnectTos = PortProxyRule.GetConnectTos(); + } + private bool IsIPv6(string ip) + { + if (string.IsNullOrWhiteSpace(ip)) return false; + if (IPAddress.TryParse(ip, out var addr) == false) return false; + return addr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6; + } + + private string GetPassType(string listenOn, string connectTo) + { + var from = IsIPv6(listenOn) ? "v6" : "v4"; + var to = IsIPv6(connectTo) ? "v6" : "v4"; + return $"{from}to{to}"; + } + + private bool CanRefresh() + { + return this.IsNew == false; + } + + [RelayCommand(CanExecute = nameof(CanRefresh))] + private void Refresh() + { + this.Reload(); + } + + [RelayCommand] + private void Save() + { + PortProxyItemValidator.Instance.ValidateAndThrow(this.Detail); + var isEnabled = true; + this.Detail.Type = GetPassType(this.Detail.ListenOn, this.Detail.ConnectTo); + var cmd = new List(); + PortProxyRule e; + if (this.IsNew) + { + e = new PortProxyRule { }; + } + else + { + e = PortProxyRule.FindByKeyForEdit(this.Id); + if (e == null) throw new Exception($"Id 为 {this.Id} 的数据不存在"); + cmd.Add(CmdUtil.GenDeleteProxyCommand(e)); + var sysProxies = CmdUtil.GetProxies(); + var find = false; + foreach (var item in sysProxies) + { + if (item.EqualsWithKeys(e)) + { + find = true; + break; + } + } + if (find == false) + { + isEnabled = false; + } + } + this.Detail.Write(e); + e.Save(); + cmd.Add(CmdUtil.GenAddOrUpdateProxyCommand(e)); + if (isEnabled && cmd.Count > 0) CmdRunner.Run(cmd); + if (this.IsNew) + { + this._eventAggregator.GetEvent>().Publish(e); + this.Id = e.Id; + } + else + { + this._eventAggregator.GetEvent>().Publish(e); + } + this.Reload(); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/IndexViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/IndexViewModel.cs new file mode 100644 index 0000000..a110d6d --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/IndexViewModel.cs @@ -0,0 +1,196 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Entities; +using LuYao.Toolkit.Events; +using LuYao.Toolkit.PortProxy; +using LuYao.Toolkit.Regions; +using LuYao.Toolkit.UI; +using LuYao.Toolkit.Views; +using Prism.Events; +using Prism.Regions; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Windows.Data; +using XCode; + +namespace LuYao.Toolkit.Channels.Networks.PortProxy; +public partial class IndexViewModel : MasterDetailViewModelBase, INavigationAware, IMasterDetailViewModel +{ + private readonly IRegionManager _regionManager; + private readonly IEventAggregator _eventAggregator; + + public IndexViewModel(IRegionManager regionManager, IEventAggregator eventAggregator) + { + _regionManager = regionManager ?? throw new System.ArgumentNullException(nameof(regionManager)); + _eventAggregator = eventAggregator ?? throw new System.ArgumentNullException(nameof(eventAggregator)); + _eventAggregator.GetEvent>().Subscribe(this.OnPortProxyRuleAny); + _eventAggregator.GetEvent>().Subscribe(this.OnPortProxyRuleAny); + this.Reload(); + } + + private void OnPortProxyRuleAny(PortProxyRule obj) + { + this.Reload(); + } + + [ObservableProperty] + public ObservableCollection _proxies = new ObservableCollection(); + + [ObservableProperty] + private PortProxyItem _current; + + partial void OnCurrentChanged(PortProxyItem value) + { + if (value != null) + { + var p = CreateNavigationParameters(); + p.Add("Id", value.Id); + this.IsShowDetail = true; + this._regionManager.RequestNavigate(RegionNames.PortProxyDetailRegion, ViewNames.Channels.Networks.PortProxy.Detail, p); + } + } + protected override void OnHideDetail() + { + this.Current = null; + } + + [RelayCommand] + private void Create() + { + this.IsShowDetail = true; + var p = CreateNavigationParameters(); + this._regionManager.RequestNavigate(RegionNames.PortProxyDetailRegion, ViewNames.Channels.Networks.PortProxy.Detail, p); + } + + private void Reload() + { + var proxies = new ObservableCollection(); + var sysProxies = CmdUtil.GetProxies(); + var dbRules = PortProxyRule.FindAll(); + var groups = new SortedSet(); + foreach (var r in dbRules) + { + if (!string.IsNullOrWhiteSpace(r.GroupName)) { groups.Add(r.GroupName); } + var item = new PortProxyItem(); + item.Read(r); + var matched = sysProxies.FirstOrDefault(f => f.EqualsWithKeys(r)); + item.IsEnabled = matched != null; + proxies.Add(item); + } + if (groups.Count > 0) + { + var cvs = CollectionViewSource.GetDefaultView(proxies); + foreach (var item in proxies) + { + if (string.IsNullOrWhiteSpace(item.GroupName)) item.GroupName = "默认"; + } + cvs.GroupDescriptions.Add(new PropertyGroupDescription(nameof(PortProxyItem.GroupName))); + } + this.Proxies = proxies; + } + + [RelayCommand] + private void RefreshProxyList() + { + var proxies = CmdUtil.GetProxies(); + var rules = PortProxyRule.FindAll(); + foreach (var proxy in proxies) + { + var matchedRule = rules.FirstOrDefault(r => r.EqualsWithKeys(proxy)); + if (matchedRule != null) proxy.Id = matchedRule.Id; + } + + var pendingAdds = proxies.Where(x => x.IsValid && x.Id == 0).ToList(); + if (pendingAdds.Count > 0) pendingAdds.Save(true); + + this.Reload(); + } + + public void OnNavigatedTo(NavigationContext navigationContext) + { + this.Reload(); + } + + public bool IsNavigationTarget(NavigationContext navigationContext) + { + return true; + } + + public void OnNavigatedFrom(NavigationContext navigationContext) + { + } + + + private IList Cast(IEnumerable items) + { + var set = new SortedSet(); + + foreach (PortProxyItem item in items) + { + if (item == null) continue; + set.Add(item.Id); + } + + return PortProxyRule.FindAllByIds(set); + } + + [RelayCommand] + private void Enable(IEnumerable arg) + { + var items = Cast(arg); + if (items.Count == 0) + { + Services.NotifyService.Warning("请先选择需要启用的转发规则!"); + return; + } + var cmds = new List(); + foreach (var item in items) + { + cmds.Add(CmdUtil.GenAddOrUpdateProxyCommand(item)); + } + CmdRunner.Run(cmds); + this.Reload(); + } + [RelayCommand] + private void Disable(IEnumerable arg) + { + var items = Cast(arg); + if (items.Count == 0) + { + Services.NotifyService.Warning("请先选择需要禁用的转发规则!"); + return; + } + var cmds = new List(); + foreach (var item in items) + { + cmds.Add(CmdUtil.GenDeleteProxyCommand(item)); + } + CmdRunner.Run(cmds); + this.Reload(); + } + [RelayCommand] + private void Delete(IEnumerable arg) + { + var items = Cast(arg); + if (items.Count == 0) + { + Services.NotifyService.Warning("请先选择需要删除的转发规则!"); + return; + } + var cmds = new List(); + foreach (var item in items) + { + cmds.Add(CmdUtil.GenDeleteProxyCommand(item)); + } + CmdRunner.Run(cmds); + var e = this._eventAggregator.GetEvent>(); + foreach (var item in items) + { + item.Delete(); + e.Publish(item); + } + this.Reload(); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItem.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItem.cs new file mode 100644 index 0000000..b85348b --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItem.cs @@ -0,0 +1,53 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using LuYao.Toolkit.Entities; +using System; +using System.Text.RegularExpressions; + +namespace LuYao.Toolkit.Channels.Networks.PortProxy; + +public partial class PortProxyItem : ObservableObject +{ + [ObservableProperty] + private int id; + [ObservableProperty] + private string groupName; + [ObservableProperty] + private bool isEnabled; + [ObservableProperty] + private string type; + [ObservableProperty] + private string listenOn; + [ObservableProperty] + private string listenPort; + [ObservableProperty] + private string connectTo; + [ObservableProperty] + private string connectPort; + [ObservableProperty] + private string comment; + + public void Read(PortProxyRule rule) + { + this.Id = rule.Id; + this.GroupName = rule.GroupName; + this.Comment = rule.Comment; + this.Type = rule.Type; + this.ListenOn = rule.ListenOn; + this.ListenPort = rule.ListenPort; + this.ConnectTo = rule.ConnectTo; + this.ConnectPort = rule.ConnectPort; + + } + + public void Write(PortProxyRule rule) + { + if (rule.Id != this.Id) throw new ArgumentException(nameof(rule)); + rule.GroupName = this.GroupName; + rule.Comment = this.Comment; + rule.Type = this.Type; + rule.ListenOn = this.ListenOn; + rule.ListenPort = this.ListenPort; + rule.ConnectTo = this.ConnectTo; + rule.ConnectPort = this.ConnectPort; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItemValidator.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItemValidator.cs new file mode 100644 index 0000000..cbb14b6 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/PortProxy/PortProxyItemValidator.cs @@ -0,0 +1,30 @@ +using FluentValidation; +using LuYao.Toolkit.Validators; + +namespace LuYao.Toolkit.Channels.Networks.PortProxy; +public class PortProxyItemValidator : AbstractValidator +{ + public static PortProxyItemValidator Instance { get; } = new PortProxyItemValidator(); + public PortProxyItemValidator() + { + RuleFor(i => i.ListenOn) + .NotEmpty() + .WithName("监听地址"); + + RuleFor(i => i.ListenPort) + .NotEmpty() + .NetworkPort() + .WithName("监听端口"); + + RuleFor(i => i.ConnectTo) + .NotEmpty() + .IPAddress() + .NotEqual(i => i.ListenOn) + .WithName("转发地址"); + + RuleFor(i => i.ConnectPort) + .NotEmpty() + .NetworkPort() + .WithName("转发端口"); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/RemoteDesktopManagerViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/RemoteDesktopManagerViewModel.cs new file mode 100644 index 0000000..0e80d9f --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/RemoteDesktopManagerViewModel.cs @@ -0,0 +1,313 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using CsvHelper; +using CsvHelper.Configuration; +using LuYao.Toolkit.Rdm; +using LuYao.Toolkit.Rdm.Events; +using LuYao.Toolkit.Services; +using NewLife.Configuration; +using Prism.Events; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using XCode; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class RemoteDesktopManagerViewModel : ViewModelBase +{ + [INotifyPropertyChanged] + public partial class SearchInput + { + public SearchInput(RemoteDesktopManagerViewModel vm) + { + this.vm = vm ?? throw new ArgumentNullException(nameof(vm)); + } + private RemoteDesktopManagerViewModel vm; + [ObservableProperty] + private RdpGroup _group = RdpGroup.All; + + [ObservableProperty] + private string _keyword; + partial void OnGroupChanged(RdpGroup value) + { + vm.Search(); + } + } + private readonly IEventAggregator eventAggregator; + public RemoteDesktopManagerViewModel(IEventAggregator eventAggregator) + { + this.eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); + this._input = new SearchInput(this); + this.eventAggregator.GetEvent().Subscribe(OnRdoConnectionChanged); + this.eventAggregator.GetEvent().Subscribe(OnAfterRdmSetting); + this.Reload(); + } + + private void OnAfterRdmSetting() + { + this.Reload(); + } + + private void OnRdoConnectionChanged() + { + this.Reload(); + } + + [ObservableProperty] + private List _groups = new List { RdpGroup.All }; + + [ObservableProperty] + private SearchInput _input; + + [ObservableProperty] + private List _connections = new List(); + + [ObservableProperty] + private IList _selectedConnections; + + [RelayCommand] + private void Reload() + { + var groups = Entities.RdpGroup.FindAll(null, Entities.RdpGroup._.Rank, null, 0, 0); + var list = new List { RdpGroup.All }; + foreach (var g in groups) + { + list.Add(new RdpGroup(g)); + } + this.Groups = list; + this.Search(); + } + + [RelayCommand] + private void Search() + { + WhereExpression where = new WhereExpression(); + var order = Entities.RdpConnection._.GroupId.Asc() & Entities.RdpConnection._.Name.Asc(); + if (Input.Group != null && Input.Group.Id != Guid.Empty) + { + where &= Entities.RdpConnection._.GroupId == Input.Group.Id; + } + if (!string.IsNullOrWhiteSpace(Input.Keyword)) + { + where &= ( + Entities.RdpConnection._.Name.Contains(Input.Keyword) | + Entities.RdpConnection._.Host.Contains(Input.Keyword) | + Entities.RdpConnection._.Username.Contains(Input.Keyword) | + Entities.RdpConnection._.Remark.Contains(Input.Keyword) + ); + } + + var list = Entities.RdpConnection.FindAll(where, order, null, 0, 0); + var connections = new List(list.Count); + var groups = new SortedSet(); + foreach (var item in list) + { + connections.Add(new RdpConnectionBase(item)); + if (!string.IsNullOrWhiteSpace(item.GroupName)) { groups.Add(item.GroupName); } + } + this.Connections = connections; + if (groups.Count > 1) + { + foreach (var item in this.Connections) + { + if (string.IsNullOrWhiteSpace(item.GroupName)) item.GroupName = "默认"; + } + var cvs = CollectionViewSource.GetDefaultView(this.Connections); + cvs.GroupDescriptions.Add(new PropertyGroupDescription(nameof(RdpConnectionBase.GroupName))); + } + } + + [RelayCommand] + private void Add() + { + this.eventAggregator.GetEvent().Publish(); + } + + [RelayCommand] + private void OpenSetting() + { + this.eventAggregator.GetEvent().Publish(); + } + + [RelayCommand] + private void Edit(RdpConnectionBase connection) + { + this.eventAggregator.GetEvent().Publish(new EditRdpConnectionEventPayload(connection.Id)); + } + + [RelayCommand] + private void Open(RdpConnectionBase connection) + { + if (connection == null) return; + this.eventAggregator.GetEvent().Publish(new OpenRdpConnectionEventPayload(connection.Id)); + } + + [RelayCommand] + private void Delete(IList connections) + { + if (connections.Count == 0) + { + NotifyService.Warning("请先选择要删除的数据"); + return; + } + var ids = connections.Cast().Select(i => i.Id).ToArray(); + if (MessageBoxService.Confirm($"确定要删除 {ids.Length} 个链接吗?") == false) return; + + var count = Entities.RdpConnection.Delete(Entities.RdpConnection._.Id.In(ids)); + NotifyService.Success($"成功删除链接 {count} 个。"); + this.Reload(); + } + + [RelayCommand] + private void Import() + { + var dialog = FileDialogService.CreateOpenFileDialog(); + dialog.Title = "导入远程桌面链接"; + dialog.Filter = "远程桌面链接备份|*.rdcsv"; + if (dialog.ShowDialog() == false) return; + var config = new CsvConfiguration(CultureInfo.InvariantCulture) + { + MissingFieldFound = null, + HeaderValidated = null, + }; + using (var reader = new StreamReader(dialog.FileName)) + using (var csv = new CsvReader(reader, config)) + { + csv.Context.RegisterClassMap(); + var records = csv.GetRecords().ToList(); + if (records.Count <= 0) + { + NotifyService.Warning("要导入的数据为空"); + return; + } + + var itemsForAdd = new List(); + var itemsForUpdate = new List(); + var itemsForSkip = new List(); + + var groups = new Dictionary(); + + var validator = RdpConnectionValidator.Instance; + for (int i = 0; i < records.Count; i++) + { + RdpConnection item = records[i]; + var result = validator.Validate(item); + if (result.IsValid == false) + { + NotifyService.Warning($"第 {i + 1} 行数据有误。{result}"); + return; + } + if (item.Id == Guid.Empty) item.Id = Guid.NewGuid(); + if (!string.IsNullOrWhiteSpace(item.GroupName)) + { + if (groups.ContainsKey(item.GroupName)) continue; + groups.Add(item.GroupName, null); + } + } + + if (groups.Count > 0) + { + var find = Entities.RdpGroup.FindAll(Entities.RdpGroup._.Name.In(groups.Keys)); + foreach (var name in groups.Keys.ToArray()) + { + var e = find.FirstOrDefault(i => i.Name == name); + if (e == null) + { + e = new Entities.RdpGroup + { + CreatedAt = DateTime.Now, + Name = name, + Rank = 0, + UpdatedAt = DateTime.Now, + Id = Guid.NewGuid() + }; + e.Insert(); + } + groups[name] = e; + } + } + + foreach (var item in records) + { + if (!string.IsNullOrWhiteSpace(item.GroupName) && groups.TryGetValue(item.GroupName, out var g)) item.GroupId = g.Id; + else item.GroupId = Guid.Empty; + + var e = Entities.RdpConnection.FindById(item.Id); + if (e != null) + { + if (e.UpdatedAt >= item.UpdatedAt) + { + itemsForSkip.Add(item); + } + else + { + item.Write(e); + itemsForUpdate.Add(e); + } + } + else + { + e = new Entities.RdpConnection { Id = Guid.NewGuid(), CreatedAt = DateTime.Now }; + item.Write(e); + itemsForAdd.Add(e); + } + } + + itemsForAdd.Insert(); + itemsForUpdate.Update(); + + NotifyService.Success($"导入成功!新增:{itemsForAdd.Count} 更新:{itemsForUpdate.Count} 跳过:{itemsForSkip.Count}"); + this.Reload(); + } + } + + [RelayCommand] + private void Export(IList connections) + { + + if (connections.Count == 0) + { + NotifyService.Warning("请先选择要导出的数据"); + return; + } + Guid[] ids = (from RdpConnectionBase i in connections select i.Id).ToArray(); + IReadOnlyList list = Entities.RdpConnection.FindAllByIds(ids); + if (connections.Count == 0) + { + NotifyService.Warning("要导出的数据为空"); + return; + } + ISaveFileDialog dialog = FileDialogService.CreateSaveFileDialog(); + dialog.Title = "导出远程桌面链接"; + dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + dialog.Filter = "远程桌面链接备份|*.rdcsv"; + dialog.AddExtension = true; + dialog.FileName = $"远程桌面_{DateTime.Now:yyyyMMdd_HHmmss}.rdcsv"; + if (!dialog.ShowDialog()) return; + string fn = dialog.FileName; + if (!fn.EndsWith(".rdcsv", StringComparison.InvariantCultureIgnoreCase)) fn += ".rdcsv"; + List exports = new List(list.Count); + foreach (Entities.RdpConnection item in list) exports.Add(new RdpConnection(item)); + using (StreamWriter writer = new StreamWriter(fn, append: false, Encoding.UTF8)) + { + using CsvWriter csv = new CsvWriter(writer, CultureInfo.InvariantCulture); + csv.Context.RegisterClassMap(); + csv.WriteHeader(); + csv.NextRecord(); + foreach (RdpConnection record in exports) + { + csv.WriteRecord(record); + csv.NextRecord(); + } + } + NotifyService.Success($"数据导出成功,共 {exports.Count} 条."); + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.GetAllTcpConnections.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.GetAllTcpConnections.cs new file mode 100644 index 0000000..3c71836 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.GetAllTcpConnections.cs @@ -0,0 +1,105 @@ +using System; +using System.Runtime.InteropServices; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class TrafficMonitorViewModel +{ + public enum TCP_TABLE_CLASS : int + { + TCP_TABLE_BASIC_LISTENER, + TCP_TABLE_BASIC_CONNECTIONS, + TCP_TABLE_BASIC_ALL, + TCP_TABLE_OWNER_PID_LISTENER, + TCP_TABLE_OWNER_PID_CONNECTIONS, + TCP_TABLE_OWNER_PID_ALL, + TCP_TABLE_OWNER_MODULE_LISTENER, + TCP_TABLE_OWNER_MODULE_CONNECTIONS, + TCP_TABLE_OWNER_MODULE_ALL + } + + [StructLayout(LayoutKind.Sequential)] + public struct MIB_TCPROW_OWNER_PID + { + public uint state; + public uint localAddr; + public byte localPort1; + public byte localPort2; + public byte localPort3; + public byte localPort4; + public uint remoteAddr; + public byte remotePort1; + public byte remotePort2; + public byte remotePort3; + public byte remotePort4; + public int owningPid; + + public ushort LocalPort => BitConverter.ToUInt16(new byte[2] { localPort2, localPort1 }, 0); + + public ushort RemotePort => BitConverter.ToUInt16(new byte[2] { remotePort2, remotePort1 }, 0); + } + + [StructLayout(LayoutKind.Sequential)] + public struct MIB_TCPTABLE_OWNER_PID + { + public uint dwNumEntries; + MIB_TCPROW_OWNER_PID table; + } + + [DllImport("iphlpapi.dll", SetLastError = true)] + static extern uint GetExtendedTcpTable(IntPtr pTcpTable, + ref int dwOutBufLen, + bool sort, + int ipVersion, + TCP_TABLE_CLASS tblClass, + int reserved); + + public static MIB_TCPROW_OWNER_PID[] GetAllTcpConnections() + { + MIB_TCPROW_OWNER_PID[] tTable; + int AF_INET = 2; // IP_v4 + int buffSize = 0; + + // how much memory do we need? + uint ret = GetExtendedTcpTable(IntPtr.Zero, + ref buffSize, + true, + AF_INET, + TCP_TABLE_CLASS.TCP_TABLE_OWNER_PID_ALL, + 0); + if (ret != 0 && ret != 122) // 122 insufficient buffer size + throw new Exception("bad ret on check " + ret); + IntPtr buffTable = Marshal.AllocHGlobal(buffSize); + + try + { + ret = GetExtendedTcpTable(buffTable, + ref buffSize, + true, + AF_INET, + TCP_TABLE_CLASS.TCP_TABLE_OWNER_PID_ALL, + 0); + if (ret != 0) + throw new Exception("bad ret " + ret); + + // get the number of entries in the table + MIB_TCPTABLE_OWNER_PID tab = (MIB_TCPTABLE_OWNER_PID)Marshal.PtrToStructure(buffTable, typeof(MIB_TCPTABLE_OWNER_PID)); + IntPtr rowPtr = (IntPtr)((long)buffTable + Marshal.SizeOf(tab.dwNumEntries)); + tTable = new MIB_TCPROW_OWNER_PID[tab.dwNumEntries]; + + for (int i = 0; i < tab.dwNumEntries; i++) + { + MIB_TCPROW_OWNER_PID tcpRow = (MIB_TCPROW_OWNER_PID)Marshal.PtrToStructure(rowPtr, typeof(MIB_TCPROW_OWNER_PID)); + tTable[i] = tcpRow; + // next entry + rowPtr = (IntPtr)((long)rowPtr + Marshal.SizeOf(tcpRow)); + } + } + finally + { + // Free the Memory + Marshal.FreeHGlobal(buffTable); + } + return tTable; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.cs new file mode 100644 index 0000000..134f0ee --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/TrafficMonitorViewModel.cs @@ -0,0 +1,136 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using LuYao.Toolkit.Services; +using NewLife.Caching; +using Prism.Regions; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class TrafficMonitorViewModel : ViewModelBase, INavigationAware +{ + private static MemoryCache ProcessCache = new MemoryCache(); + private record ProcessInfo(string ProcessName, string FileName, string ModuleName, DateTime? StartTime, string FileDescription); + private static ProcessInfo GetProcessInfo(int id) => ProcessCache.GetOrAdd(id.ToString(), CreateProcessInfo, 300); + + private static bool TryGet(Process p, Func get, out T value) + { + try + { + value = get(p); + return true; + } + catch (Exception) + { + value = default; + return false; + } + } + + private static ProcessInfo CreateProcessInfo(string arg) + { + string processName = string.Empty; + string fileName = string.Empty; + string moduleName = string.Empty; + string fileDescription = string.Empty; + DateTime? startTime = default; + using (var p = Process.GetProcessById(Convert.ToInt32(arg))) + { + if (TryGet(p, p => p.ProcessName, out var name)) processName = name; + if (TryGet(p, p => p.StartTime, out var time)) startTime = time; + if (TryGet(p, p => p.MainModule, out var mainModule) && mainModule != null) + { + fileName = mainModule.FileName; + moduleName = mainModule.ModuleName; + if (mainModule.FileVersionInfo != null) + { + fileDescription = mainModule.FileVersionInfo.FileDescription; + } + } + } + return new ProcessInfo(processName, fileName, moduleName, startTime, fileDescription); + } + + [INotifyPropertyChanged] + public partial class TrafficReport + { + [ObservableProperty] + private int pid; + [ObservableProperty] + private string name; + [ObservableProperty] + private string fileName; + [ObservableProperty] + private string moduleName; + [ObservableProperty] + private int count; + [ObservableProperty] + private DateTime? startTime; + [ObservableProperty] + private string fileDescription; + } + #region INavigationAware + public bool IsNavigationTarget(NavigationContext navigationContext) => true; + public void OnNavigatedFrom(NavigationContext navigationContext) => this._isRunning = false; + public void OnNavigatedTo(NavigationContext navigationContext) => this._isRunning = true; + #endregion + private bool _isRunning = true; + + public TrafficMonitorViewModel() => Run(); + private async void Run() + { + while (true) + { + if (this._isRunning) + { + var count = GetAllTcpConnections() + .GroupBy(i => i.owningPid) + .ToDictionary(i => i.Key, i => i.Count()); + + for (int i = 0; i < this.Reports.Count; i++) + { + var item = this.Reports[i]; + if (count.TryGetValue(item.Pid, out var value)) + { + item.Count = value; + count.Remove(item.Pid); + } + else + { + this.Reports.RemoveAt(i); + i--; + } + } + if (count.Count > 0) + { + var forAdd = count.Select(i => new TrafficReport { Pid = i.Key, Count = i.Value }).ToList(); + foreach (var item in forAdd) + { + this.Reports.Add(item); + } + Reload(forAdd); + } + } + await Task.Delay(1000); + } + } + private async void Reload(IReadOnlyList items) + { + foreach (var item in items) + { + var info = await Task.Run(() => GetProcessInfo(item.Pid)); + item.Name = info.ProcessName; + item.FileName = info.FileName; + item.StartTime = info.StartTime; + item.ModuleName = info.ModuleName; + item.FileDescription = info.FileDescription; + } + } + + [ObservableProperty] + private ObservableCollection _reports = new ObservableCollection(); +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/UrlAnalyzerViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/UrlAnalyzerViewModel.cs new file mode 100644 index 0000000..689f1d1 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/UrlAnalyzerViewModel.cs @@ -0,0 +1,78 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class UrlAnalyzerViewModel : ViewModelBase +{ + public class KeyValueItem + { + public KeyValueItem(string key, string value) + { + this.Key = key; + this.Value = value; + } + public string Key { get; } + public string Value { get; } + } + [ObservableProperty] + private string _url; + [ObservableProperty] + private bool _isAbsoluteUri; + [ObservableProperty] + private IReadOnlyList _queryString; + [ObservableProperty] + private Uri _uri; + [ObservableProperty] + private string _output; + [RelayCommand] + private void Clear() + { + this.Output = string.Empty; + this.QueryString = default; + this.IsAbsoluteUri = default; + this.Uri = default; + } + [RelayCommand] + private void Analyze() + { + this.Clear(); + if (string.IsNullOrWhiteSpace(this.Url)) + { + this.Output = "URL为空"; + return; + } + if (Uri.TryCreate(this.Url, UriKind.RelativeOrAbsolute, out var uri)) + { + IsAbsoluteUri = uri.IsAbsoluteUri; + if (!this.IsAbsoluteUri) + { + this.Output = "仅支持绝对路径"; + return; + } + this.Uri = uri; + if (!string.IsNullOrWhiteSpace(uri.Query)) + { + var nv = System.Web.HttpUtility.ParseQueryString(uri.Query); + if (nv.Count > 0) + { + var list = new List(); + foreach (var key in nv.AllKeys) + { + foreach (var value in nv.GetValues(key)) + { + list.Add(new KeyValueItem(key, value)); + } + } + this.QueryString = list; + } + } + } + else + { + this.Output = "URL解析失败"; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/UserAgentParserViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/UserAgentParserViewModel.cs new file mode 100644 index 0000000..0e1ac8b --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/UserAgentParserViewModel.cs @@ -0,0 +1,64 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System.Text; +using UAParser; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class UserAgentParserViewModel : ViewModelBase +{ + private Parser _parser; + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(ParseCommand))] + private string _input; + + [ObservableProperty()] + private OS _OS; + + [ObservableProperty] + private Device _device; + + [ObservableProperty] + private UserAgent _UA; + + [ObservableProperty] + private string _output; + + private bool CanParse() => !string.IsNullOrWhiteSpace(this.Input); + + [RelayCommand(CanExecute = nameof(CanParse))] + private void Parse() + { + if (_parser == null) _parser = Parser.GetDefault(); + var sb = new StringBuilder(); + var client = _parser.Parse(this.Input); + this.OS = client.OS; + this.Device = client.Device; + this.UA = client.UA; + + sb.AppendLine($"========== {this.Device} =========="); + sb.AppendLine($"{nameof(Device.IsSpider)}:{this.Device.IsSpider}"); + sb.AppendLine($"{nameof(Device.Brand)}:{this.Device.Brand}"); + sb.AppendLine($"{nameof(Device.Family)}:{this.Device.Family}"); + sb.AppendLine($"{nameof(Device.Model)}:{this.Device.Model}"); + sb.AppendLine(); + + sb.AppendLine($"========== {this.OS} =========="); + sb.AppendLine($"{nameof(OS.Family)}:{this.OS.Family}"); + sb.AppendLine($"{nameof(OS.Major)}:{this.OS.Major}"); + sb.AppendLine($"{nameof(OS.Minor)}:{this.OS.Minor}"); + sb.AppendLine($"{nameof(OS.Patch)}:{this.OS.Patch}"); + sb.AppendLine($"{nameof(OS.PatchMinor)}:{this.OS.PatchMinor}"); + sb.AppendLine(); + + + sb.AppendLine($"========== {this.UA} =========="); + sb.AppendLine($"{nameof(UserAgent.Family)}:{this.UA.Family}"); + sb.AppendLine($"{nameof(UserAgent.Major)}:{this.UA.Major}"); + sb.AppendLine($"{nameof(UserAgent.Minor)}:{this.UA.Minor}"); + sb.AppendLine($"{nameof(UserAgent.Patch)}:{this.UA.Patch}"); + + this.Output = sb.ToString(); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Networks/WhoisViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Networks/WhoisViewModel.cs new file mode 100644 index 0000000..09f3e52 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Networks/WhoisViewModel.cs @@ -0,0 +1,100 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Networks; + +public partial class WhoisViewModel : ViewModelBase +{ + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(QueryCommand))] + private string _input; + private bool CanQuery => !string.IsNullOrWhiteSpace(this.Input); + + + + + public ObservableCollection Items { get; } = new ObservableCollection(); + + [ObservableProperty] + private WhoisInfomation _current; + + [RelayCommand(CanExecute = nameof(CanQuery))] + private async Task Query() + { + this.Current = null; + this.Items.Clear(); + var input = this.Input; + var list = new List>(); + foreach (var server in AllServers) + { + list.Add(Query(server, input)); + } + await Task.WhenAll(list); + foreach (var item in list) + { + if (item.IsCompletedSuccessfully()) + { + var server = item.Result; + if (server != null && !string.IsNullOrWhiteSpace(server.Result)) + { + this.Items.Add(item.Result); + } + } + } + if (this.Items.Count > 0) this.Current = this.Items[0]; + } + private static readonly string[] AllServers = new string[] { + "whois.verisign-grs.com", + "whois.markmonitor.com", + "whois.sfn.cn" + }; + private static async Task GetWhoisInformation(string whoisServer, string url) + { + StringBuilder stringBuilderResult = new StringBuilder(); + using TcpClient tcpClinetWhois = new TcpClient(); + await tcpClinetWhois.ConnectAsync(whoisServer, 43); + NetworkStream networkStreamWhois = tcpClinetWhois.GetStream(); + BufferedStream bufferedStreamWhois = new BufferedStream(networkStreamWhois); + StreamWriter streamWriter = new StreamWriter(bufferedStreamWhois); + + await streamWriter.WriteLineAsync(url); + await streamWriter.FlushAsync(); + + StreamReader streamReaderReceive = new StreamReader(bufferedStreamWhois) { }; + + while (!streamReaderReceive.EndOfStream) + { + var line = await streamReaderReceive.ReadLineAsync(); + stringBuilderResult.AppendLine(line.Trim()); + } + + return stringBuilderResult.ToString(); + } + private static async Task Query(string server, string domain) + { + try + { + var ret = await GetWhoisInformation(server, domain); + return new WhoisInfomation { Server = server, Result = ret }; + } + catch (Exception) + { + return null; + } + } + + public class WhoisInfomation + { + public string Server { get; set; } + public string Result { get; set; } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/CsvReaderViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/CsvReaderViewModel.cs new file mode 100644 index 0000000..b056e5e --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/CsvReaderViewModel.cs @@ -0,0 +1,131 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using CsvHelper; +using CsvHelper.Configuration; +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class CsvReaderViewModel : ViewModelBase +{ + private const int PAGE_SIZE = 100; + + [ObservableProperty] + private string _fileName = string.Empty; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Delimiter))] + private string _delimiter = ","; + public int MaxPageCount + { + get + { + if (this._total > 0) + { + var count = this._total / PAGE_SIZE; + if (this._total % PAGE_SIZE > 0) count++; + return count; + } + return 0; + } + } + [ObservableProperty] + private int _pageIndex = 1; + + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(MaxPageCount))] + private int _total = 0; + + [ObservableProperty] + private DataTable _rows; + + private DataTable _table = new DataTable(); + partial void OnPageIndexChanged(int value) + { + DoPage(value); + } + + private void DoPage(int value) + { + if (this.Total <= 0) return; + var skip = (Math.Min(value, this.MaxPageCount) - 1) * PAGE_SIZE; + + var dt = this.Rows; + dt.Clear(); + dt.BeginLoadData(); + for (int i = skip; i < this._table.Rows.Count && dt.Rows.Count < PAGE_SIZE; i++) + { + var row = this._table.Rows[i]; + dt.ImportRow(row); + } + dt.EndLoadData(); + //this.OnPropertyChanged(nameof(this.Rows)); + } + + [RelayCommand] + private void Open() + { + var dialog = Services.FileDialogService.CreateOpenFileDialog(); + dialog.Title = "打开 CSV 文件"; + if (dialog.ShowDialog()) + { + this.FileName = dialog.FileName; + Read(dialog.FileName); + } + } + [RelayCommand] + private void Reload() + { + if (String.IsNullOrWhiteSpace(this.FileName)) return; + Read(this.FileName); + } + + private void Read(string fn) + { + try + { + var config = new CsvConfiguration(System.Globalization.CultureInfo.InvariantCulture) + { + BadDataFound = this.OnBadDataFound, + }; + if (!string.IsNullOrEmpty(this.Delimiter)) config.Delimiter = this.Delimiter; + var encoding = Services.FileService.GetEncoding(fn); + using (var fs = new FileStream(fn, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + using (var reader = new StreamReader(fs, encoding)) + using (var csv = new CsvReader(reader, config)) + { + using (var dr = new CsvDataReader(csv)) + { + + var ss = dr.GetSchemaTable(); + this._table = new DataTable(); + _table.Load(dr); + this.Rows = _table.Clone(); + this.Total = _table.Rows.Count; + if (this.PageIndex != 1) + { + this.PageIndex = 1; + } + else + { + DoPage(1); + } + } + } + } + catch (Exception e) + { + Services.NotifyService.Warning(e.Message); + } + } + + private void OnBadDataFound(BadDataFoundArgs args) + { + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/FullHalfConvertViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/FullHalfConvertViewModel.cs new file mode 100644 index 0000000..506c9d3 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/FullHalfConvertViewModel.cs @@ -0,0 +1,85 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Text; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class FullHalfConvertViewModel : ViewModelBase +{ + [ObservableProperty] + private string _input = string.Empty; + [ObservableProperty] + private string _output = string.Empty; + [RelayCommand] + private void ToFull() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + return; + } + var str = this.Input; + var len = str.Length; + var sb = new StringBuilder(); + for (int i = 0; i < len; i++) + { + int t = str[i]; + if (t == 32) + { + t = 12288; + } + else if (t >= 33 && t <= 126) + { + t += 65248; + } + else if (t == '.') + { + t = '。'; + } + sb.Append((char)t); + } + this.Output = sb.ToString(); + } + [RelayCommand] + private void ToHalf() + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + return; + } + var str = this.Input; + var len = str.Length; + var sb = new StringBuilder(); + for (int i = 0; i < len; i++) + { + int t = str[i]; + if (t == 12288) + { + t = 32; + } + else if (t >= 65281 && t <= 65374) + { + t -= 65248; + } + else if (t == '。') + { + t = '.'; + } + sb.Append((char)t); + } + this.Output = sb.ToString(); + } + [RelayCommand] + protected virtual void Copy() + { + Services.ClipboardService.CopyText(this.Output); + } + + [RelayCommand] + protected virtual void Clear() + { + this.Output = this.Input = String.Empty; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/GoogleTranslateViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/GoogleTranslateViewModel.cs new file mode 100644 index 0000000..c28af18 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/GoogleTranslateViewModel.cs @@ -0,0 +1,246 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Services; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net.Http; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class GoogleTranslateViewModel : ViewModelBase +{ + public record LangItem(String Id, string Name, string[] Keywords); + public static List AllFromLanguages { get; } + public static List AllToLanguages { get; } + private static LangItem Create(string id, string name, params string[] keywords) => new LangItem(id, name, keywords); + static GoogleTranslateViewModel() + { + AllFromLanguages = new List + { + Create("auto","自动检测","auto","自动检测","zidongjiance","zdjc"), + Create("en","英语","en","英语","yingyu","yy"), + Create("fr","法语","fr","法语","fayu","fy"), + Create("de","德语","de","德语","deyu","dy"), + Create("it","意大利语","it","意大利语","yidaliyu","ydly"), + Create("es","西班牙语","es","西班牙语","xibanyayu","xbyy"), + Create("pt","葡萄牙语","pt","葡萄牙语","putaoyayu","ptyy"), + Create("nl","荷兰语","nl","荷兰语","helanyu","hly"), + Create("pl","波兰语","pl","波兰语","bolanyu","bly"), + Create("ja","日语","ja","日语","riyu","ry"), + Create("ko","韩语","ko","韩语","hanyu","hy"), + Create("ar","阿拉伯语","ar","阿拉伯语","alaboyu","alby"), + Create("tr","土耳其语","tr","土耳其语","tuerqiyu","teqy"), + Create("th","泰语","th","泰语","taiyu","ty"), + Create("ms","马来语","ms","马来语","malaiyu","mly"), + Create("vi","越南语","vi","越南语","yuenanyu","yny"), + Create("sv","瑞典语","sv","瑞典语","ruidianyu","rdy"), + Create("id","印度尼西亚语","id","印度尼西亚语","yindunixiyayu","ydnxyy"), + Create("zh-cn","中文(简体)","zh-cn","中文(简体)","zhongwen(jianti)","zw(jt)"), + Create("zh-tw","中文(繁体)","zh-tw","中文(繁体)","zhongwen(fanti)","zw(ft)"), + Create("sq","阿尔巴尼亚语","sq","阿尔巴尼亚语","aerbaniyayu","aebnyy"), + Create("am","阿姆哈拉语","am","阿姆哈拉语","amuhalayu","amhly"), + Create("az","阿塞拜疆语","az","阿塞拜疆语","asaibaijiangyu","asbjy"), + Create("ga","爱尔兰语","ga","爱尔兰语","aierlanyu","aely"), + Create("et","爱沙尼亚语","et","爱沙尼亚语","aishaniyayu","asnyy"), + Create("eu","巴斯克语","eu","巴斯克语","basikeyu","bsky"), + Create("be","白俄罗斯语","be","白俄罗斯语","baieluosiyu","belsy"), + Create("bg","保加利亚语","bg","保加利亚语","baojialiyayu","bjlyy"), + Create("is","冰岛语","is","冰岛语","bingdaoyu","bdy"), + Create("bs","波斯尼亚语","bs","波斯尼亚语","bosiniyayu","bsnyy"), + Create("fa","波斯语","fa","波斯语","bosiyu","bsy"), + Create("da","丹麦语","da","丹麦语","danmaiyu","dmy"), + Create("ru","俄语","ru","俄语","eyu","ey"), + Create("fi","芬兰语","fi","芬兰语","fenlanyu","fly"), + Create("km","高棉语","km","高棉语","gaomianyu","gmy"), + Create("ka","格鲁吉亚语","ka","格鲁吉亚语","gelujiyayu","gljyy"), + Create("gu","古吉拉特语","gu","古吉拉特语","gujilateyu","gjlty"), + Create("kk","哈萨克语","kk","哈萨克语","hasakeyu","hsky"), + Create("ht","海地克里奥尔语","ht","海地克里奥尔语","haidikeliaoeryu","hdklaey"), + Create("ha","豪萨语","ha","豪萨语","haosayu","hsy"), + Create("gl","加利西亚语","gl","加利西亚语","jialixiyayu","jlxyy"), + Create("ca","加泰罗尼亚语","ca","加泰罗尼亚语","jiatailuoniyayu","jtlnyy"), + Create("cs","捷克语","cs","捷克语","jiekeyu","jky"), + Create("kn","卡纳达语","kn","卡纳达语","kanadayu","kndy"), + Create("ky","柯尔克孜语","ky","柯尔克孜语","keerkeziyu","kekzy"), + Create("xh","科萨语","xh","科萨语","kesayu","ksy"), + Create("co","科西嘉语","co","科西嘉语","kexijiayu","kxjy"), + Create("hr","克罗地亚语","hr","克罗地亚语","keluodiyayu","kldyy"), + Create("ku","库尔德语","ku","库尔德语","kuerdeyu","kedy"), + Create("la","拉丁语","la","拉丁语","ladingyu","ldy"), + Create("lv","拉脱维亚语","lv","拉脱维亚语","latuoweiyayu","ltwyy"), + Create("lo","老挝语","lo","老挝语","laowoyu","lwy"), + Create("lt","立陶宛语","lt","立陶宛语","litaowanyu","ltwy"), + Create("lb","卢森堡语","lb","卢森堡语","lusenbaoyu","lsby"), + Create("ro","罗马尼亚语","ro","罗马尼亚语","luomaniyayu","lmnyy"), + Create("mt","马耳他语","mt","马耳他语","maertayu","mety"), + Create("mr","马拉地语","mr","马拉地语","maladiyu","mldy"), + Create("mg","马拉加斯语","mg","马拉加斯语","malajiasiyu","mljsy"), + Create("ml","马拉雅拉姆语","ml","马拉雅拉姆语","malayalamuyu","mlylmy"), + Create("mk","马其顿语","mk","马其顿语","maqidunyu","mqdy"), + Create("mi","毛利语","mi","毛利语","maoliyu","mly"), + Create("mn","蒙古语","mn","蒙古语","mengguyu","mgy"), + Create("bn","孟加拉语","bn","孟加拉语","mengjialayu","mjly"), + Create("my","缅甸语","my","缅甸语","miandianyu","mdy"), + Create("hmn","苗语","hmn","苗语","miaoyu","my"), + Create("af","南非荷兰语","af","南非荷兰语","nanfeihelanyu","nfhly"), + Create("st","南索托语","st","南索托语","nansuotuoyu","nsty"), + Create("ne","尼泊尔语","ne","尼泊尔语","niboeryu","nbey"), + Create("no","挪威语","no","挪威语","nuoweiyu","nwy"), + Create("ps","普什图语","ps","普什图语","pushentuyu","psty"), + Create("ny","齐切瓦语","ny","齐切瓦语","qiqiewayu","qqwy"), + Create("sm","萨摩亚语","sm","萨摩亚语","samoyayu","smyy"), + Create("sr","塞尔维亚语","sr","塞尔维亚语","saierweiyayu","sewyy"), + Create("si","僧伽罗语","si","僧伽罗语","sengjialuoyu","sjly"), + Create("sn","绍纳语","sn","绍纳语","shaonayu","sny"), + Create("eo","世界语","eo","世界语","shijieyu","sjy"), + Create("sk","斯洛伐克语","sk","斯洛伐克语","siluofakeyu","slfky"), + Create("sl","斯洛文尼亚语","sl","斯洛文尼亚语","siluowenniyayu","slwnyy"), + Create("sw","斯瓦希里语","sw","斯瓦希里语","siwaxiliyu","swxly"), + Create("gd","苏格兰盖尔语","gd","苏格兰盖尔语","sugelangaieryu","sglgey"), + Create("ceb","宿务语","ceb","宿务语","suwuyu","swy"), + Create("so","索马里语","so","索马里语","suomaliyu","smly"), + Create("tl","他加禄语","tl","他加禄语","tajialuyu","tjly"), + Create("tg","塔吉克语","tg","塔吉克语","tajikeyu","tjky"), + Create("te","泰卢固语","te","泰卢固语","tailuguyu","tlgy"), + Create("ta","泰米尔语","ta","泰米尔语","taimieryu","tmey"), + Create("cy","威尔士语","cy","威尔士语","weiershiyu","wesy"), + Create("ur","乌尔都语","ur","乌尔都语","wuerdouyu","wedy"), + Create("uk","乌克兰语","uk","乌克兰语","wukelanyu","wkly"), + Create("uz","乌兹别克语","uz","乌兹别克语","wuzibiekeyu","wzbky"), + Create("fy","西弗里西亚语","fy","西弗里西亚语","xifulixiyayu","xflxyy"), + Create("iw","希伯来语","iw","希伯来语","xibolaiyu","xbly"), + Create("el","希腊语","el","希腊语","xilayu","xly"), + Create("haw","夏威夷语","haw","夏威夷语","xiaweiyiyu","xwyy"), + Create("sd","信德语","sd","信德语","xindeyu","xdy"), + Create("hu","匈牙利语","hu","匈牙利语","xiongyaliyu","xyly"), + Create("su","巽他语","su","巽他语","xuntayu","xty"), + Create("hy","亚美尼亚语","hy","亚美尼亚语","yameiniyayu","ymnyy"), + Create("ig","伊博语","ig","伊博语","yiboyu","yby"), + Create("yi","意第绪语","yi","意第绪语","yidixuyu","ydxy"), + Create("hi","印地语","hi","印地语","yindiyu","ydy"), + Create("yo","约鲁巴语","yo","约鲁巴语","yuelubayu","ylby"), + Create("jw","爪哇语","jw","爪哇语","zhuawayu","zwy"), + Create("zu","祖鲁语","zu","祖鲁语","zuluyu","zly"), + }; + AllToLanguages = AllFromLanguages.Skip(1).ToList(); + } + [ObservableProperty] + [ViewStates.WatchViewState(nameof(From))] + private string _from = "auto"; + [ObservableProperty] + [ViewStates.WatchViewState(nameof(To))] + private string _to = "zh-cn"; + public GoogleTranslateViewModel() + { + this.Filter(AllFromLanguages, FromLanguages, String.Empty); + this.Filter(AllToLanguages, ToLanguages, String.Empty); + } + + [RelayCommand] + private void SetTo(string lang) + { + if (string.IsNullOrWhiteSpace(lang)) throw new ArgumentNullException(nameof(lang)); + To = lang; + } + + [ObservableProperty] + private string _input; + [ObservableProperty] + private string _output; + [ObservableProperty] + private string _sourceLanguage; + + [RelayCommand] + private async Task Translate() + { + using (this.Busy()) + { + if (string.IsNullOrWhiteSpace(this.Input)) + { + this.Output = string.Empty; + this.SourceLanguage = string.Empty; + } + else + { + var lines = this.Input.Split('\n'); + var num = this.dataVersion; + TongjiService.Tongji(Views.ViewNames.Channels.Texts.GoogleTranslate, new { Action = nameof(Translate) }); + var ret = await GoogleService.Translate(this.From, this.To, lines); + if (this.dataVersion == num) + { + this.Output = string.Join("\n", ret.Lines); + this.SourceLanguage = ret.SourceLanguage; + } + } + } + } + + partial void OnInputChanged(string value) + { + var v = DateTime.Now.Ticks; + dataVersion = v; + AutoStart(v); + } + private long dataVersion = 0; + private async void AutoStart(long n) + { + await Task.Delay(500); + if (this.dataVersion == n) await Translate(); + } + + [RelayCommand] + private void Clear() => this.Input = this.Output = this.SourceLanguage = string.Empty; + + [ObservableProperty] + private string fromText; + + [ObservableProperty] + private string toText; + + partial void OnFromTextChanged(string value) + { + Filter(AllFromLanguages, this.FromLanguages, value); + } + + partial void OnToTextChanged(string value) + { + Filter(AllToLanguages, this.ToLanguages, value); + } + + public ObservableCollection FromLanguages { get; set; } = new(); + + public ObservableCollection ToLanguages { get; set; } = new(); + + + private void Filter(List all, ObservableCollection result, string text) + { + result.Clear(); + if (string.IsNullOrWhiteSpace(text)) + { + foreach (var item in all) + { + result.Add(item); + } + } + else + { + var key = text.ToLowerInvariant(); + foreach (var item in all) + { + var find = false; + foreach (var k in item.Keywords) + { + if (k.Contains(key)) + { + find = true; + break; + } + } + if (find) result.Add(item); + } + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/HashCalculatorViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/HashCalculatorViewModel.cs new file mode 100644 index 0000000..948edcb --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/HashCalculatorViewModel.cs @@ -0,0 +1,101 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using NewLife.Reflection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class HashCalculatorViewModel : ViewModelBase +{ + public interface IHashAlgorithmItem + { + string Name { get; } + void Reload(HashCalculatorViewModel vm); + } + public partial class HashAlgorithmItem : ViewModelBase, IHashAlgorithmItem where T : HashAlgorithm + { + public string Name { get; private set; } + + [ObservableProperty] + private string _output = string.Empty; + + private readonly Func _factory; + public HashAlgorithmItem(string name, Func factory) + { + this.Name = name; + _factory = factory; + } + public HashAlgorithm Create(string password) => _factory.Invoke(password); + + public void Reload(HashCalculatorViewModel vm) + { + if (string.IsNullOrWhiteSpace(vm.Input)) + { + this.Output = string.Empty; + return; + } + var bytes = Encoding.GetEncoding(vm.Encode).GetBytes(vm.Input); + using (var hash = this.Create(vm.Password)) + { + bytes = hash.ComputeHash(bytes); + } + var str = BitConverter.ToString(bytes).Replace("-", string.Empty); + if (vm.ToUpperCase) + { + this.Output = str.ToUpperInvariant(); + } + else + { + this.Output = str.ToLowerInvariant(); + } + } + } + + public EncodingInfo[] Encodings { get; } + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Encode))] + private int _encode = Encoding.UTF8.CodePage; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(ToUpperCase))] + private bool _toUpperCase = false; + + [ObservableProperty] + private string _input = string.Empty; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Password))] + private string _password = string.Empty; + + public List Items { get; } + public HashCalculatorViewModel() + { + Encodings = Encoding.GetEncodings(); + + this.Items = new List + { + new HashAlgorithmItem("MD5",(pwd)=>MD5.Create()), + new HashAlgorithmItem("SHA1",(pwd)=>SHA1.Create()), + new HashAlgorithmItem("SHA256",(pwd)=>SHA256.Create()), + new HashAlgorithmItem("SHA512",(pwd)=>SHA512.Create()), + new HashAlgorithmItem("HMAC-MD5",(pwd)=>new HMACMD5(Encoding.UTF8.GetBytes(pwd))), + new HashAlgorithmItem("HMAC-SHA1",(pwd)=>new HMACSHA1(Encoding.UTF8.GetBytes(pwd))), + new HashAlgorithmItem("HMAC-SHA256",(pwd)=>new HMACSHA256(Encoding.UTF8.GetBytes(pwd))), + new HashAlgorithmItem("HMAC-SHA384",(pwd)=>new HMACSHA384(Encoding.UTF8.GetBytes(pwd))), + new HashAlgorithmItem("HMAC-SHA512",(pwd)=>new HMACSHA512(Encoding.UTF8.GetBytes(pwd))), + }; + } + private void Reload() + { + foreach (var item in this.Items) item.Reload(this); + } + partial void OnEncodeChanged(int value) => Reload(); + partial void OnInputChanged(string value) => Reload(); + partial void OnToUpperCaseChanged(bool value) => this.Reload(); + partial void OnPasswordChanged(string value) => this.Reload(); +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/LogReaderViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/LogReaderViewModel.cs new file mode 100644 index 0000000..58bbc9d --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/LogReaderViewModel.cs @@ -0,0 +1,81 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using LuYao.Toolkit.Services; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class LogReaderViewModel : ViewModelBase +{ + [ObservableProperty] + private string _path; + + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(Output))] + private List _lines = new List(); + + public string Output + { + get => string.Join(Environment.NewLine, Lines); + set => Debug.WriteLine(value); + } + + private const int MAX_LINES = 200; + + partial void OnPathChanged(string value) + { + this.Lines.Clear(); + var encoding = File.Exists(value) ? FileService.GetEncoding(value) : Encoding.UTF8; + StartRead(value, encoding); + } + + private async void StartRead(string fn, Encoding encoding) + { + long lastPosition = 0; + var info = new FileInfo(fn); + while (fn == Path) + { + info.Refresh(); + if (!info.Exists) + { + await Task.Delay(1000); + continue; + } + if (info.Length != lastPosition) + { + Read(fn, encoding, lastPosition); + lastPosition = info.Length; + } + else + { + await Task.Delay(300); + } + } + } + + private void Read(string fn, Encoding encoding, long position) + { + using var fs = new FileStream(fn, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + fs.Seek(position, SeekOrigin.Begin); + using var sr = new StreamReader(fs, encoding); + var queue = new Queue(this.Lines); + while (!sr.EndOfStream) + { + var str = sr.ReadLine(); + queue.Enqueue(str); + while (queue.Count > MAX_LINES) queue.Dequeue(); + } + this.Lines = queue.ToList(); + } + + public override void Destroy() + { + base.Destroy(); + this.Path = String.Empty; + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/RegexEvaluatorViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/RegexEvaluatorViewModel.cs new file mode 100644 index 0000000..a406f1a --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/RegexEvaluatorViewModel.cs @@ -0,0 +1,133 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.ViewStates; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class RegexEvaluatorViewModel : ViewModelBase +{ + [ObservableProperty] + private string _pattern = string.Empty; + [ObservableProperty] + private string _inputText = string.Empty; + + #region Options + [ObservableProperty] + [WatchViewState(nameof(IgnoreCase))] + private bool _ignoreCase = false; + + [ObservableProperty] + [WatchViewState(nameof(Multiline))] + private bool _multiline = false; + + [ObservableProperty] + [WatchViewState(nameof(ExplicitCapture))] + private bool _explicitCapture = false; + + [ObservableProperty] + [WatchViewState(nameof(Compiled))] + private bool _compiled = false; + + [ObservableProperty] + [WatchViewState(nameof(Singleline))] + private bool _singleline = false; + + [ObservableProperty] + [WatchViewState(nameof(IgnorePatternWhitespace))] + private bool _ignorePatternWhitespace = false; + + [ObservableProperty] + [WatchViewState(nameof(RightToLeft))] + private bool _rightToLeft = false; + + [ObservableProperty] + [WatchViewState(nameof(ECMAScript))] + private bool _eCMAScript = false; + + [ObservableProperty] + [WatchViewState(nameof(CultureInvariant))] + private bool _cultureInvariant = false; + + #endregion + + [ObservableProperty] + private MatchCollection _matches; + [ObservableProperty] + private string _code; + [ObservableProperty] + private Exception _exception; + + [RelayCommand] + private void Clear() + { + this.Pattern = this.InputText = this.Code = string.Empty; + this.Matches = null; + this.Exception = null; + } + + [RelayCommand] + private void Update() + { + var options = RegexOptions.None; + if (this.IgnoreCase) options |= RegexOptions.IgnoreCase; + if (this.Multiline) options |= RegexOptions.Multiline; + if (this.ExplicitCapture) options |= RegexOptions.ExplicitCapture; + if (this.Compiled) options |= RegexOptions.Compiled; + if (this.Singleline) options |= RegexOptions.Singleline; + if (this.IgnorePatternWhitespace) options |= RegexOptions.IgnorePatternWhitespace; + if (this.RightToLeft) options |= RegexOptions.RightToLeft; + if (this.ECMAScript) options |= RegexOptions.ECMAScript; + if (this.CultureInvariant) options |= RegexOptions.CultureInvariant; + try + { + Matches = Regex.Matches(this.InputText, this.Pattern, options); + Exception = null; + BuildCode(); + } + catch (Exception e) + { + Matches = null; + Exception = e; + Code = string.Empty; + } + } + + private void BuildCode() + { + var options = new List(); + if (this.IgnoreCase) options.Add("RegexOptions.IgnoreCase"); + if (this.Multiline) options.Add("RegexOptions.Multiline"); + if (this.ExplicitCapture) options.Add("RegexOptions.ExplicitCapture"); + if (this.Compiled) options.Add("RegexOptions.Compiled"); + if (this.Singleline) options.Add("RegexOptions.Singleline"); + if (this.IgnorePatternWhitespace) options.Add("RegexOptions.IgnorePatternWhitespace"); + if (this.RightToLeft) options.Add("RegexOptions.RightToLeft"); + if (this.ECMAScript) options.Add("RegexOptions.ECMAScript"); + if (this.CultureInvariant) options.Add("RegexOptions.CultureInvariant"); + if (options.Count == 0) options.Add("RegexOptions.None"); + var sb = new StringBuilder(); + sb.AppendFormat("var pattern = {0};//表达式文本", JsonConvert.SerializeObject(this.Pattern)); + sb.AppendLine(); + sb.AppendFormat("var regex = new Regex({0},{1});//表达式对象", JsonConvert.SerializeObject(this.Pattern), string.Join("|", options)); + this.Code = sb.ToString(); + } + + partial void OnPatternChanged(string value) => this.Update(); + partial void OnInputTextChanged(string value) => this.Update(); + partial void OnIgnoreCaseChanged(bool value) => this.Update(); + partial void OnMultilineChanged(bool value) => this.Update(); + partial void OnExplicitCaptureChanged(bool value) => this.Update(); + partial void OnCompiledChanged(bool value) => this.Update(); + partial void OnSinglelineChanged(bool value) => this.Update(); + partial void OnIgnorePatternWhitespaceChanged(bool value) => this.Update(); + partial void OnRightToLeftChanged(bool value) => this.Update(); + partial void OnECMAScriptChanged(bool value) => this.Update(); + partial void OnCultureInvariantChanged(bool value) => this.Update(); +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/TextJoinViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/TextJoinViewModel.cs new file mode 100644 index 0000000..32efbbb --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/TextJoinViewModel.cs @@ -0,0 +1,163 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class TextJoinViewModel : ViewModelBase +{ + /// + /// 分割方式 + /// + public enum SplitBy + { + [Description("换行")] + NewLine, + [Description("逗号(,)")] + Dot, + [Description("分号(;)")] + Semicolon, + [Description("分隔符(|)")] + Separator, + [Description("制表符(\\t)")] + Tab + } + /// + /// 串联方式 + /// + public enum JoinBy + { + [Description("换行")] + NewLine, + [Description("逗号(,)")] + Dot, + [Description("分号(;)")] + Semicolon, + [Description("分隔符(|)")] + Separator, + [Description("制表符(\\t)")] + Tab, + [Description("无")] + None + } + public enum EscapeType + { + [Description("不包装")] + None, + [Description("包裹 ' 转义为 \\'")] + 斜杠单引号, + [Description("包裹 ' 转义为 ''")] + 重复单引号, + [Description("包裹 \" 转义为 \\\"")] + 斜杠双引号, + [Description("包裹 \" 转义为 \"\"")] + 重复双引号 + } + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Split))] + private SplitBy _split = SplitBy.NewLine; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Escape))] + private EscapeType _escape = EscapeType.None; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Join))] + private JoinBy _join = JoinBy.NewLine; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Trim))] + private bool _trim = true; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Distinct))] + private bool _distinct = true; + + [ObservableProperty] + [ViewStates.WatchViewState(nameof(Sort))] + private bool _sort = true; + + [ObservableProperty] + private string _input; + + [ObservableProperty] + private string _output; + + [RelayCommand] + private void Execute() + { + this.Output = string.Empty; + if (string.IsNullOrEmpty(this.Input)) return; + + var split = new char[] { '\n', '\r' }; + switch (this.Split) + { + case SplitBy.Dot: + split = new char[] { ',' }; + break; + case SplitBy.Semicolon: + split = new char[] { ';' }; + break; + case SplitBy.Separator: + split = new char[] { '|' }; + break; + case SplitBy.Tab: + split = new char[] { '\t' }; + break; + case SplitBy.NewLine: + default: + break; + } + + var separator = string.Empty; + switch (this.Join) + { + case JoinBy.Dot: + separator = ","; + break; + case JoinBy.Semicolon: + separator = ";"; + break; + case JoinBy.Separator: + separator = "|"; + break; + case JoinBy.Tab: + separator = "\t"; + break; + case JoinBy.NewLine: + separator = Environment.NewLine; + break; + case JoinBy.None: + break; + default: + break; + } + + IEnumerable items = this.Input.Split(split, StringSplitOptions.RemoveEmptyEntries); + if (this.Trim) { items = items.Select(i => i.Trim()); } + switch (this.Escape) + { + case EscapeType.None: + break; + case EscapeType.斜杠单引号: + items = items.Select(i => $"'{i.Replace("'", "\\'")}'"); + break; + case EscapeType.重复单引号: + items = items.Select(i => $"'{i.Replace("'", "''")}'"); + break; + case EscapeType.斜杠双引号: + items = items.Select(i => $"\"{i.Replace("\"", "\\\"")}\""); + break; + case EscapeType.重复双引号: + items = items.Select(i => $"\"{i.Replace("\"", "\"\"")}\""); + break; + } + if (this.Distinct) { items = items.Distinct(); } + if (this.Sort) { items = items.OrderBy(i => i); } + + this.Output = string.Join(separator, items); + } +} diff --git a/LuYao.Toolkit.ViewModels/Channels/Texts/YoudaoDictionaryViewModel.cs b/LuYao.Toolkit.ViewModels/Channels/Texts/YoudaoDictionaryViewModel.cs new file mode 100644 index 0000000..586eb76 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Channels/Texts/YoudaoDictionaryViewModel.cs @@ -0,0 +1,41 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System; +using System.Net.Http; +using System.Threading.Tasks; +using Youdao; + +namespace LuYao.Toolkit.Channels.Texts; + +public partial class YoudaoDictionaryViewModel : ViewModelBase +{ + private static HttpClient _http = new HttpClient(); + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(QueryCommand))] + private string _input; + + [ObservableProperty] + private YoudaoWord _result; + + private bool CanQuery() => !string.IsNullOrWhiteSpace(this.Input); + + [RelayCommand(CanExecute = nameof(CanQuery))] + private async Task Query() + { + using (this.Busy()) + { + if (string.IsNullOrWhiteSpace(this.Input)) throw new ArgumentNullException("英文单词不能为空"); + this.Result = null; + this.Result = await YoudaoDictionary.QueryAsync(_http, this.Input); + } + } + + [RelayCommand] + private async void Play(YoudaoPhonetic phonetic) + { + if (phonetic == null) return; + if (string.IsNullOrWhiteSpace(phonetic.Source)) return; + await Services.SoundService.Play(phonetic.Source); + } +} diff --git a/LuYao.Toolkit.ViewModels/Drawing/IconFactory.cs b/LuYao.Toolkit.ViewModels/Drawing/IconFactory.cs new file mode 100644 index 0000000..14f55c7 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Drawing/IconFactory.cs @@ -0,0 +1,173 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; + +namespace LuYao.Toolkit.Drawing; + +/// +/// Provides methods for creating icons. +/// +/// https://stackoverflow.com/questions/3213999/how-to-create-an-icon-file-that-contains-multiple-sizes-images-in-c-sharp +public static class IconFactory +{ + #region constants + + /// + /// Represents the max allowed width of an icon. + /// + public const int MaxIconWidth = 256; + + /// + /// Represents the max allowed height of an icon. + /// + public const int MaxIconHeight = 256; + + private const ushort HeaderReserved = 0; + private const ushort HeaderIconType = 1; + private const byte HeaderLength = 6; + + private const byte EntryReserved = 0; + private const byte EntryLength = 16; + + private const byte PngColorsInPalette = 0; + private const ushort PngColorPlanes = 1; + + #endregion + + #region methods + + /// + /// Saves the specified objects as a single + /// icon into the output stream. + /// + /// The bitmaps to save as an icon. + /// The output stream. + /// + /// The expected input for the parameter are + /// portable network graphic files that have a + /// of and where the + /// width is less than or equal to and the + /// height is less than or equal to . + /// + /// + /// Occurs if any of the input images do + /// not follow the required image format. See remarks for details. + /// + /// + /// Occurs if any of the arguments are null. + /// + public static void SavePngsAsIcon(IReadOnlyCollection images, Stream stream) + { + if (images == null) throw new ArgumentNullException(nameof(images)); + if (stream == null) throw new ArgumentNullException(nameof(stream)); + + // validates the pngs + ThrowForInvalidPngs(images); + + var orderedImages = images.OrderBy(i => i.Width).ThenBy(i => i.Height).ToArray(); + + using (var writer = new BinaryWriter(stream)) + { + // write the header + writer.Write(HeaderReserved); + writer.Write(HeaderIconType); + writer.Write((ushort)orderedImages.Length); + + // save the image buffers and offsets + var buffers = new Dictionary(); + + // tracks the length of the buffers as the iterations occur + // and adds that to the offset of the entries + uint lengthSum = 0; + var baseOffset = (uint)(HeaderLength + + EntryLength * orderedImages.Length); + + for (var i = 0; i < orderedImages.Length; i++) + { + var image = orderedImages[i]; + + // creates a byte array from an image + var buffer = CreateImageBuffer(image); + + // calculates what the offset of this image will be + // in the stream + var offset = baseOffset + lengthSum; + + // writes the image entry + writer.Write(GetIconWidth(image)); + writer.Write(GetIconHeight(image)); + writer.Write(PngColorsInPalette); + writer.Write(EntryReserved); + writer.Write(PngColorPlanes); + writer.Write((ushort)Image.GetPixelFormatSize(image.PixelFormat)); + writer.Write((uint)buffer.Length); + writer.Write(offset); + + lengthSum += (uint)buffer.Length; + + // adds the buffer to be written at the offset + buffers.Add(offset, buffer); + } + + // writes the buffers for each image + foreach (var kvp in buffers) + { + // seeks to the specified offset required for the image buffer + writer.BaseStream.Seek(kvp.Key, SeekOrigin.Begin); + + // writes the buffer + writer.Write(kvp.Value); + } + } + } + + private static void ThrowForInvalidPngs(IEnumerable images) + { + foreach (var image in images) + { + if (image.PixelFormat != PixelFormat.Format32bppArgb) + throw new InvalidOperationException($"Required pixel format is PixelFormat.{PixelFormat.Format32bppArgb}."); + + if (image.RawFormat.Guid != ImageFormat.Png.Guid) + throw new InvalidOperationException("Required image format is a portable network graphic (png)."); + + if (image.Width > MaxIconWidth || image.Height > MaxIconHeight) + throw new InvalidOperationException($"Dimensions must be less than or equal to {MaxIconWidth}x{MaxIconHeight}"); + } + } + + private static byte GetIconHeight(Image image) + { + if (image.Height == MaxIconHeight) + { + return 0; + } + + return (byte)image.Height; + } + + private static byte GetIconWidth(Image image) + { + if (image.Width == MaxIconWidth) + { + return 0; + } + + return (byte)image.Width; + } + + private static byte[] CreateImageBuffer(Image image) + { + using (var stream = new MemoryStream()) + { + image.Save(stream, image.RawFormat); + + return stream.ToArray(); + } + } + + #endregion +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/LuYao.Toolkit.ViewModels.csproj b/LuYao.Toolkit.ViewModels/LuYao.Toolkit.ViewModels.csproj new file mode 100644 index 0000000..6f7fe9c --- /dev/null +++ b/LuYao.Toolkit.ViewModels/LuYao.Toolkit.ViewModels.csproj @@ -0,0 +1,40 @@ + + + + + net7.0-windows + LuYao.Toolkit + latest + + + + + + + + + + + + + + + + + + + + + + + ..\libs\LuYao.Common.dll + + + + + + + + + + diff --git a/LuYao.Toolkit.ViewModels/MainWindowViewModel.cs b/LuYao.Toolkit.ViewModels/MainWindowViewModel.cs new file mode 100644 index 0000000..d224660 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/MainWindowViewModel.cs @@ -0,0 +1,69 @@ +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Channels; +using LuYao.Toolkit.Entities; +using LuYao.Toolkit.Events; +using LuYao.Toolkit.Rdm.Events; +using LuYao.Toolkit.Tabs; +using Prism.Events; +using System; +using System.Collections.Generic; + +namespace LuYao.Toolkit; +public partial class MainWindowViewModel : ViewModelBase +{ + private IEventAggregator _eventAggregator; + public MainWindowViewModel(IEventAggregator eventAggregator) + { + _eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); + var hasSessin = ChannelItemSession.HasSessin(); + Tabs = new List { + new TabItem(Tab.Session){ IsSelected = hasSessin== true }, + new TabItem(Tab.Explorer){ IsSelected = hasSessin== false }, + new TabItem(Tab.Navs), + new TabItem(Tab.Rdp) + }; + _eventAggregator.GetEvent().Subscribe(this.OnOpenFunctionItem); + _eventAggregator.GetEvent().Subscribe(this.OnRdmOpenRdpConnection); + } + + private void OnRdmOpenRdpConnection(OpenRdpConnectionEventPayload obj) => OpenTab(Tab.Rdp); + + private void OnOpenFunctionItem(OpenFunctionItemEventPayload payload) + { + if (payload.IsNewSession) + { + var item = payload.Item; + var session = Entities.ChannelItemSession.FindById(item.Id); + if (session == null) session = new Entities.ChannelItemSession + { + Id = item.Id, + CreatedAt = DateTime.Now, + IsFavorite = 0 + }; + session.LastClick = DateTime.Now; + session.Save(); + } + for (int i = 0; i < this.Tabs.Count; i++) + { + this.Tabs[i].IsSelected = this.Tabs[i].View == Tab.Session.View; + } + } + + public List Tabs { get; } + public string UserName => Environment.UserName; + [RelayCommand] + void OpenTab(TabItem item) + { + if (item == null) return; + OpenTab(item.Tab); + } + void OpenTab(Tab item) + { + if (item == null) return; + foreach (var tab in this.Tabs) + { + tab.IsSelected = tab.View == item.View; + if (tab.IsSelected) _eventAggregator.GetEvent().Publish(tab.Tab); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Rdm/RdpConnection.cs b/LuYao.Toolkit.ViewModels/Rdm/RdpConnection.cs new file mode 100644 index 0000000..95cd616 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Rdm/RdpConnection.cs @@ -0,0 +1,144 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using LuYao.Toolkit.Rdm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public partial class RdpConnection : RdpConnectionBase, IRdpConnection +{ + public RdpConnection() { } + public RdpConnection(Entities.RdpConnection e) : base(e) + { + this.DesktopSize = (DesktopSize)e.DesktopSize; + this.Password = e.Password; + this.Domain = e.Domain; + this.ConnectToConsole = e.ConnectToConsole; + this.DisplayWidth = e.DisplayWidth; + this.DisplayHeight = e.DisplayHeight; + this.AutoExpand = e.AutoExpand; + this.SmartSizing = e.SmartSizing; + this.ColorDepth = (ColorDepth)e.ColorDepth; + this.AudioSetting = (AudioRedirection)e.AudioSetting; + this.KeyboardSetting = (KeyboardRedirection)e.KeyboardSetting; + this.RedirectDisks = e.RedirectDisks; + this.RedirectPorts = e.RedirectPorts; + this.RedirectPrinters = e.RedirectPrinters; + this.RedirectSmartCards = e.RedirectSmartCards; + this.BitmapCaching = e.BitmapCaching; + this.AllowWallpaper = e.AllowWallpaper; + this.AllowThemes = e.AllowThemes; + this.AllowContents = e.AllowContents; + this.AllowAnimation = e.AllowAnimation; + this.AuthenticationLevel = (AuthenticationLevel)e.AuthenticationLevel; + this.EnableCredSspSupport = e.EnableCredSspSupport; + this.Remark = e.Remark; + this.GroupId = e.GroupId; + } + + [ObservableProperty] + private DesktopSize desktopSize; + + [ObservableProperty] + private string password; + + [ObservableProperty] + private string domain; + + [ObservableProperty] + private bool connectToConsole; + + [ObservableProperty] + private int displayWidth; + + [ObservableProperty] + private int displayHeight; + + [ObservableProperty] + private bool autoExpand; + + [ObservableProperty] + private bool smartSizing; + + [ObservableProperty] + private ColorDepth colorDepth; + + [ObservableProperty] + private AudioRedirection audioSetting; + + [ObservableProperty] + private KeyboardRedirection keyboardSetting; + + [ObservableProperty] + private bool redirectDisks; + + [ObservableProperty] + private bool redirectPorts; + + [ObservableProperty] + private bool redirectPrinters; + + [ObservableProperty] + private bool redirectSmartCards; + + [ObservableProperty] + private bool bitmapCaching; + + [ObservableProperty] + private bool allowWallpaper; + + [ObservableProperty] + private bool allowThemes; + + [ObservableProperty] + private bool allowContents; + + [ObservableProperty] + private bool allowAnimation; + + [ObservableProperty] + private AuthenticationLevel authenticationLevel; + + [ObservableProperty] + private bool enableCredSspSupport; + + [ObservableProperty] + private string remark; + + [ObservableProperty] + private Guid groupId; + public void Write(Entities.RdpConnection e) + { + e.DesktopSize = (int)this.DesktopSize; + e.Password = this.Password; + e.Domain = this.Domain; + e.ConnectToConsole = this.ConnectToConsole; + e.DisplayWidth = this.DisplayWidth; + e.DisplayHeight = this.DisplayHeight; + e.AutoExpand = this.AutoExpand; + e.SmartSizing = this.SmartSizing; + e.ColorDepth = (int)this.ColorDepth; + e.AudioSetting = (int)this.AudioSetting; + e.KeyboardSetting = (int)this.KeyboardSetting; + e.RedirectDisks = this.RedirectDisks; + e.RedirectPorts = this.RedirectPorts; + e.RedirectPrinters = this.RedirectPrinters; + e.RedirectSmartCards = this.RedirectSmartCards; + e.BitmapCaching = this.BitmapCaching; + e.AllowWallpaper = this.AllowWallpaper; + e.AllowThemes = this.AllowThemes; + e.AllowContents = this.AllowContents; + e.AllowAnimation = this.AllowAnimation; + e.AuthenticationLevel = (int)this.AuthenticationLevel; + e.EnableCredSspSupport = this.EnableCredSspSupport; + e.Name = this.Name; + e.Host = this.Host; + e.Port = this.Port; + e.Username = this.Username; + e.Remark = this.Remark; + e.GroupId = this.GroupId; + } +} \ No newline at end of file diff --git a/LuYao.Toolkit.ViewModels/Rdm/RdpConnectionBase.cs b/LuYao.Toolkit.ViewModels/Rdm/RdpConnectionBase.cs new file mode 100644 index 0000000..d999ed3 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Rdm/RdpConnectionBase.cs @@ -0,0 +1,41 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +[INotifyPropertyChanged] +public partial class RdpConnectionBase +{ + [ObservableProperty] + private Guid id; + [ObservableProperty] + private string name; + [ObservableProperty] + private string host; + [ObservableProperty] + private int port; + [ObservableProperty] + private string username; + [ObservableProperty] + private Guid _groupId; + [ObservableProperty] + private string groupName; + [ObservableProperty] + private DateTime _updatedAt; + public RdpConnectionBase() { } + public RdpConnectionBase(Entities.RdpConnection e) : this() + { + this.Id = e.Id; + this.Name = e.Name; + this.Host = e.Host; + this.Port = e.Port; + this.Username = e.Username; + this.GroupId = e.GroupId; + this.GroupName = e.GroupName; + this.UpdatedAt = e.UpdatedAt; + } +} diff --git a/LuYao.Toolkit.ViewModels/Rdm/RdpConnectionCsvMap.cs b/LuYao.Toolkit.ViewModels/Rdm/RdpConnectionCsvMap.cs new file mode 100644 index 0000000..06eb6f9 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Rdm/RdpConnectionCsvMap.cs @@ -0,0 +1,70 @@ +using CsvHelper.Configuration; +using System.Text; + +namespace LuYao.Toolkit.Rdm; + +public class RdpConnectionCsvMap : ClassMap +{ + public RdpConnectionCsvMap() + { + Map(i => i.Id).Name(RenameSnakeCase(nameof(RdpConnection.Id))); + + Map(i => i.UpdatedAt).Name(RenameSnakeCase(nameof(RdpConnection.UpdatedAt))); + + Map(i => i.Name).Name(RenameSnakeCase(nameof(RdpConnection.Name))); + Map(i => i.Host).Name(RenameSnakeCase(nameof(RdpConnection.Host))); + Map(i => i.Port).Name(RenameSnakeCase(nameof(RdpConnection.Port))); + Map(i => i.Username).Name(RenameSnakeCase(nameof(RdpConnection.Username))); + Map(i => i.Password).Name(RenameSnakeCase(nameof(RdpConnection.Password))); + + Map(i => i.GroupName).Name(RenameSnakeCase(nameof(RdpConnection.GroupName))); + + Map(i => i.AllowAnimation).Name(RenameSnakeCase(nameof(RdpConnection.AllowAnimation))); + Map(i => i.AllowContents).Name(RenameSnakeCase(nameof(RdpConnection.AllowContents))); + Map(i => i.AllowThemes).Name(RenameSnakeCase(nameof(RdpConnection.AllowThemes))); + Map(i => i.AllowWallpaper).Name(RenameSnakeCase(nameof(RdpConnection.AllowWallpaper))); + Map(i => i.AudioSetting).Name(RenameSnakeCase(nameof(RdpConnection.AudioSetting))); + Map(i => i.AuthenticationLevel).Name(RenameSnakeCase(nameof(RdpConnection.AuthenticationLevel))); + Map(i => i.AutoExpand).Name(RenameSnakeCase(nameof(RdpConnection.AutoExpand))); + Map(i => i.BitmapCaching).Name(RenameSnakeCase(nameof(RdpConnection.BitmapCaching))); + Map(i => i.ColorDepth).Name(RenameSnakeCase(nameof(RdpConnection.ColorDepth))); + Map(i => i.ConnectToConsole).Name(RenameSnakeCase(nameof(RdpConnection.ConnectToConsole))); + Map(i => i.DesktopSize).Name(RenameSnakeCase(nameof(RdpConnection.DesktopSize))); + Map(i => i.DisplayHeight).Name(RenameSnakeCase(nameof(RdpConnection.DisplayHeight))); + Map(i => i.DisplayWidth).Name(RenameSnakeCase(nameof(RdpConnection.DisplayWidth))); + Map(i => i.Domain).Name(RenameSnakeCase(nameof(RdpConnection.Domain))); + Map(i => i.EnableCredSspSupport).Name(RenameSnakeCase(nameof(RdpConnection.EnableCredSspSupport))); + Map(i => i.KeyboardSetting).Name(RenameSnakeCase(nameof(RdpConnection.KeyboardSetting))); + Map(i => i.RedirectDisks).Name(RenameSnakeCase(nameof(RdpConnection.RedirectDisks))); + Map(i => i.RedirectPorts).Name(RenameSnakeCase(nameof(RdpConnection.RedirectPorts))); + Map(i => i.RedirectPrinters).Name(RenameSnakeCase(nameof(RdpConnection.RedirectPrinters))); + Map(i => i.RedirectSmartCards).Name(RenameSnakeCase(nameof(RdpConnection.RedirectSmartCards))); + Map(i => i.SmartSizing).Name(RenameSnakeCase(nameof(RdpConnection.SmartSizing))); + Map(i => i.Remark).Name(RenameSnakeCase(nameof(RdpConnection.Remark))); + } + private static string RenameSnakeCase(string name) + { + var builder = new StringBuilder(); + var previousUpper = false; + + for (var i = 0; i < name.Length; i++) + { + var c = name[i]; + if (char.IsUpper(c)) + { + if (i > 0 && !previousUpper) + { + builder.Append("_"); + } + builder.Append(char.ToLowerInvariant(c)); + previousUpper = true; + } + else + { + builder.Append(c); + previousUpper = false; + } + } + return builder.ToString(); + } +} diff --git a/LuYao.Toolkit.ViewModels/Rdm/RdpGroup.cs b/LuYao.Toolkit.ViewModels/Rdm/RdpGroup.cs new file mode 100644 index 0000000..2967261 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Rdm/RdpGroup.cs @@ -0,0 +1,24 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System; + +namespace LuYao.Toolkit.Rdm; + +[INotifyPropertyChanged] +public partial class RdpGroup +{ + public static RdpGroup All { get; } = new RdpGroup { Id = Guid.Empty, Name = "全部分组", Rank = int.MinValue }; + public static RdpGroup None { get; } = new RdpGroup { Id = Guid.Empty, Name = "无", Rank = int.MaxValue }; + public RdpGroup() { } + public RdpGroup(Entities.RdpGroup e) : this() + { + this.Id = e.Id; + this.Name = e.Name; + this.Rank = e.Rank; + } + [ObservableProperty] + private Guid _id; + [ObservableProperty] + private string _name; + [ObservableProperty] + private int _rank; +} diff --git a/LuYao.Toolkit.ViewModels/Rdm/RdpGroupValidator.cs b/LuYao.Toolkit.ViewModels/Rdm/RdpGroupValidator.cs new file mode 100644 index 0000000..6c5f4e3 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Rdm/RdpGroupValidator.cs @@ -0,0 +1,17 @@ +using FluentValidation; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm; + +public class RdpGroupValidator : AbstractValidator +{ + public static RdpGroupValidator Instance { get; } = new RdpGroupValidator(); + public RdpGroupValidator() + { + this.RuleFor(i => i.Name).NotEmpty().WithName("分组名称"); + } +} diff --git a/LuYao.Toolkit.ViewModels/TabItem.cs b/LuYao.Toolkit.ViewModels/TabItem.cs new file mode 100644 index 0000000..8a73b51 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/TabItem.cs @@ -0,0 +1,21 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using LuYao.Toolkit.Tabs; + +namespace LuYao.Toolkit; + +public partial class TabItem : ObservableObject +{ + private Tab _tab; + public Tab Tab => _tab; + [ObservableProperty] + private bool _isSelected; + + public TabItem(Tab tab) + { + _tab = tab; + } + public string Icon => _tab.Icon; + public string IconArchived => _tab.IconArchived; + public string Title => _tab.Title; + public string View => _tab.View; +} diff --git a/LuYao.Toolkit.ViewModels/Tabs/Explorer/IndexViewModel.cs b/LuYao.Toolkit.ViewModels/Tabs/Explorer/IndexViewModel.cs new file mode 100644 index 0000000..2b38a51 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Tabs/Explorer/IndexViewModel.cs @@ -0,0 +1,31 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Channels; +using Prism.Events; +using System; +using System.Collections.Generic; + +namespace LuYao.Toolkit.Tabs.Explorer; + +public partial class IndexViewModel : ViewModelBase +{ + public IndexViewModel(IEventAggregator eventAggregator) + { + _eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); + this.Selected = Channels[0]; + } + private IEventAggregator _eventAggregator; + public IReadOnlyList Channels => Channel.Channels; + [ObservableProperty] + private Channel _selected; + + [RelayCommand] + void OpenItem(FunctionItem item) + { + if (item == null) return; + _eventAggregator.GetEvent().Publish(new Events.OpenFunctionItemEventPayload(item) + { + IsNewSession = true + }); + } +} diff --git a/LuYao.Toolkit.ViewModels/Tabs/Navs/IndexViewModel.cs b/LuYao.Toolkit.ViewModels/Tabs/Navs/IndexViewModel.cs new file mode 100644 index 0000000..b13ff57 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Tabs/Navs/IndexViewModel.cs @@ -0,0 +1,48 @@ +using CommunityToolkit.Mvvm.Input; +using NewLife.Reflection; +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace LuYao.Toolkit.Tabs.Navs; + +public partial class IndexViewModel : ViewModelBase +{ + public IndexViewModel() + { + this.Groups = NavGroup.GetAll(); + } + + public IReadOnlyCollection Groups { get; } + + [RelayCommand] + private void Open(NavItem item) + { + if (string.IsNullOrWhiteSpace(item.Url)) return; + var builder = new UriBuilder(item.Url); + var qs = System.Web.HttpUtility.ParseQueryString(builder.Query); + qs["from"] = "LuYao.Toolkit"; + qs["ver"] = AssemblyX.Entry.Version; + builder.Query = qs.ToString(); + Start(builder.ToString()); + Services.TongjiService.Tongji(Views.ViewNames.Tabs.Navs.Index + "?jump=" + Uri.EscapeDataString(item.Title)); + } + + public static void Start(string url) // 调用系统默认的浏览器 + { + try + { + var p = Process.Start(new ProcessStartInfo + { + FileName = url, + UseShellExecute = true + }); + } + catch (Exception ex) + { + Debug.WriteLine(ex); + if (url.StartsWith("http")) throw new Exception($"系统默认浏览器未设置好,请设置后重试![{ex.Message}]"); + throw new Exception($"系统未找到能打开{url}文件的应用程序![{ex.Message}]"); + } + } +} diff --git a/LuYao.Toolkit.ViewModels/Tabs/Rdp/IndexViewModel.cs b/LuYao.Toolkit.ViewModels/Tabs/Rdp/IndexViewModel.cs new file mode 100644 index 0000000..cdf1021 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Tabs/Rdp/IndexViewModel.cs @@ -0,0 +1,15 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Rdm; +using LuYao.Toolkit.Rdm.Events; +using Prism.Events; +using System; +using System.Collections.Generic; +using System.Linq; +using XCode; + +namespace LuYao.Toolkit.Tabs.Rdp; + +public partial class IndexViewModel : ViewModelBase +{ +} diff --git a/LuYao.Toolkit.ViewModels/Tabs/Session/ChannelItemSessionItem.cs b/LuYao.Toolkit.ViewModels/Tabs/Session/ChannelItemSessionItem.cs new file mode 100644 index 0000000..909dee3 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Tabs/Session/ChannelItemSessionItem.cs @@ -0,0 +1,21 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using LuYao.Toolkit.Channels; +using System; +using System.Collections.Generic; +using System.Text; + +namespace LuYao.Toolkit.Tabs.Session; + +[INotifyPropertyChanged] +public partial class ChannelItemSessionItem +{ + public ChannelItemSessionItem(FunctionItem item) + { + Item = item ?? throw new ArgumentNullException(nameof(item)); + } + public FunctionItem Item { get; } + [ObservableProperty] + private int _isFavorite; + [ObservableProperty] + private DateTime _lastClick; +} diff --git a/LuYao.Toolkit.ViewModels/Tabs/Session/IndexViewModel.cs b/LuYao.Toolkit.ViewModels/Tabs/Session/IndexViewModel.cs new file mode 100644 index 0000000..ae83591 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/Tabs/Session/IndexViewModel.cs @@ -0,0 +1,161 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Channels; +using LuYao.Toolkit.Events; +using Prism.Events; +using System; +using System.Collections.ObjectModel; +using System.Linq; + +namespace LuYao.Toolkit.Tabs.Session; + +public partial class IndexViewModel : ViewModelBase +{ + private readonly IEventAggregator eventAggregator; + public IndexViewModel(IEventAggregator eventAggregator) + { + Sessions = new ObservableCollection(); + this.eventAggregator = eventAggregator; + ReloadSession(); + if (this.Sessions.Count > 0) this.Session = this.Sessions[0]; + this.eventAggregator.GetEvent().Subscribe(this.OnOpenFunctionItem); + } + + private void OnOpenFunctionItem(OpenFunctionItemEventPayload payload) + { + if (payload.IsMultiboxing) return; + if (payload.IsNewSession) + { + var item = payload.Item; + var session = Entities.ChannelItemSession.FindById(item.Id); + if (session == null) session = new Entities.ChannelItemSession + { + Id = item.Id, + CreatedAt = DateTime.Now, + IsFavorite = 0, + LastClick = DateTime.Now, + }; + var idx = -1; + for (int i = 0; i < this.Sessions.Count; i++) + { + var tmp = this.Sessions[i]; + if (tmp.Item.Id == item.Id) + { + idx = i; + tmp.LastClick = session.LastClick; + this.Session = tmp; + break; + } + } + + if (idx < 0) + { + var add = new ChannelItemSessionItem(item) { IsFavorite = session.IsFavorite, LastClick = session.LastClick }; + this.Sessions.Insert(0, add); + this.Session = add; + } + else if (idx > 0) + { + this.Sessions.Move(idx, 0); + } + } + } + + public ObservableCollection Sessions { get; } + [ObservableProperty] + private ChannelItemSessionItem _session; + private void ReloadSession() + { + var list = Entities.ChannelItemSession.FindAll(50); + //only add + foreach (var item in list) + { + var find = Sessions.FirstOrDefault(i => i.Item.Id == item.Id); + if (find == null) + { + if (Channel.TryGetItem(item.Id, out var channelItem)) + { + var session = new ChannelItemSessionItem(channelItem) + { + IsFavorite = item.IsFavorite, + LastClick = item.LastClick + }; + this.Sessions.Add(session); + } + else + { + item.Delete(); + } + } + else + { + find.IsFavorite = item.IsFavorite; + find.LastClick = item.LastClick; + } + } + } + private void Open(FunctionItem item, bool isNewSession) + { + this.eventAggregator.GetEvent() + .Publish(new OpenFunctionItemEventPayload(item) + { + IsNewSession = isNewSession + }); + } + [RelayCommand] + private void Open(FunctionItem item) + { + if (item == null) return; + this.IsSearching = false; + Open(item, true); + } + partial void OnSessionChanged(ChannelItemSessionItem value) + { + if (value == null) return; + Open(value.Item, false); + } + [RelayCommand] + private void OpenNew(ChannelItemSessionItem item) + { + if (item == null) return; + this.eventAggregator.GetEvent() + .Publish(new OpenFunctionItemEventPayload(item.Item) { IsMultiboxing = true }); + } + [ObservableProperty] + private bool _isSearching = false; + [ObservableProperty] + private string _keyword = string.Empty; + public ObservableCollection Suggestions { get; } = new ObservableCollection(); + private void Search(string key) + { + if (!this.IsSearching && !string.IsNullOrWhiteSpace(key)) this.IsSearching = true; + var items = FunctionItem.Search(key, 10); + this.Suggestions.Clear(); + if (items.Count > 0) + { + foreach (var item in items) this.Suggestions.Add(item); + } + } + partial void OnIsSearchingChanged(bool value) + { + if (value == false) this.Keyword = string.Empty; + } + partial void OnKeywordChanged(string value) => Search(value); + [RelayCommand] + private void OpenSearch() => this.IsSearching = true; + [RelayCommand] + private void CloseSearch() => this.IsSearching = false; + [RelayCommand] + private void Delete(ChannelItemSessionItem item) + { + if (item == null) return; + var check = item == this.Session; + this.Sessions.Remove(item); + var find = Entities.ChannelItemSession.FindById(item.Item.Id); + if (find != null) find.Delete(); + if (check && this.Sessions.Count > 0) + { + this.Session = this.Sessions[0]; + } + } +} diff --git a/LuYao.Toolkit.ViewModels/UI/DetailViewModelBase.cs b/LuYao.Toolkit.ViewModels/UI/DetailViewModelBase.cs new file mode 100644 index 0000000..2fc1516 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/UI/DetailViewModelBase.cs @@ -0,0 +1,19 @@ +using Prism.Regions; +using System; + +namespace LuYao.Toolkit.UI; + +public abstract partial class DetailViewModelBase : ViewModelBase, INavigationAware +{ + private IMasterDetailViewModel _masterDetailViewModel; + public abstract bool IsNavigationTarget(NavigationContext navigationContext); + + public abstract void OnNavigatedFrom(NavigationContext navigationContext); + + public virtual void OnNavigatedTo(NavigationContext navigationContext) + { + _masterDetailViewModel = null; + if (navigationContext.Parameters.TryGetValue("MasterDetailViewModel", out var vm)) _masterDetailViewModel = vm; + } + protected IMasterDetailViewModel MasterDetailViewModel => _masterDetailViewModel ?? throw new ArgumentNullException(); +} diff --git a/LuYao.Toolkit.ViewModels/UI/IMasterDetailViewModel.cs b/LuYao.Toolkit.ViewModels/UI/IMasterDetailViewModel.cs new file mode 100644 index 0000000..9aeeea9 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/UI/IMasterDetailViewModel.cs @@ -0,0 +1,6 @@ +namespace LuYao.Toolkit.UI; + +public interface IMasterDetailViewModel +{ + bool IsShowDetail { get; set; } +} diff --git a/LuYao.Toolkit.ViewModels/UI/MasterDetailViewModelBase.cs b/LuYao.Toolkit.ViewModels/UI/MasterDetailViewModelBase.cs new file mode 100644 index 0000000..279a654 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/UI/MasterDetailViewModelBase.cs @@ -0,0 +1,26 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using Prism.Regions; + +namespace LuYao.Toolkit.UI; + +public partial class MasterDetailViewModelBase : ViewModelBase, IMasterDetailViewModel +{ + [ObservableProperty] + private bool _isShowDetail = false; + + protected NavigationParameters CreateNavigationParameters() + { + var p = new NavigationParameters + { + { "MasterDetailViewModel", this } + }; + return p; + } + partial void OnIsShowDetailChanged(bool value) + { + if (value) OnShowDetail(); + else OnHideDetail(); + } + protected virtual void OnShowDetail() { } + protected virtual void OnHideDetail() { } +} diff --git a/LuYao.Toolkit.ViewModels/ViewModelBase.cs b/LuYao.Toolkit.ViewModels/ViewModelBase.cs new file mode 100644 index 0000000..7ca3a47 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/ViewModelBase.cs @@ -0,0 +1,36 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using LuYao.Toolkit.ViewStates; +using Prism.Navigation; +using System; +using System.Collections.Concurrent; + +namespace LuYao.Toolkit; + +public partial class ViewModelBase : ObservableObject, IDestructible, IViewStateHost +{ + private static readonly ConcurrentDictionary _count = new ConcurrentDictionary(); + private int instanceId; + public ViewModelBase() + { + this.instanceId = _count.AddOrUpdate(this.GetType(), 1, (t, x) => x + 1); + this.ViewState = new ViewStateBag(this); + } + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(IsNotBusy))] + private bool _isBusy = false; + public bool IsNotBusy => _isBusy == false; + + int IViewStateHost.InstanceId => this.instanceId; + + protected ViewStateBag ViewState { get; } + public virtual void Destroy() + { + _count.AddOrUpdate(this.GetType(), 0, (t, x) => x - 1); + } + + protected IDisposable Busy() + { + this.IsBusy = true; + return new DisposeAction(() => this.IsBusy = false); + } +} diff --git a/LuYao.Toolkit.ViewModels/ViewStates/IViewStateHost.cs b/LuYao.Toolkit.ViewModels/ViewStates/IViewStateHost.cs new file mode 100644 index 0000000..bdab04a --- /dev/null +++ b/LuYao.Toolkit.ViewModels/ViewStates/IViewStateHost.cs @@ -0,0 +1,9 @@ +using System.ComponentModel; + +namespace LuYao.Toolkit.ViewStates +{ + public interface IViewStateHost : INotifyPropertyChanged + { + public int InstanceId { get; } + } +} diff --git a/LuYao.Toolkit.ViewModels/ViewStates/ViewStateBag.cs b/LuYao.Toolkit.ViewModels/ViewStates/ViewStateBag.cs new file mode 100644 index 0000000..f02fc97 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/ViewStates/ViewStateBag.cs @@ -0,0 +1,79 @@ +using NewLife.Threading; +using Newtonsoft.Json; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Reflection; + +namespace LuYao.Toolkit.ViewStates; + +public class ViewStateBag : SortedDictionary +{ + private static readonly ConcurrentQueue _bags = new ConcurrentQueue(); + private static readonly TimerX _timer; + static ViewStateBag() + { + _timer = new TimerX(Flush, _bags, int.MaxValue, int.MaxValue); + } + public static void Flush() => Flush(_bags); + private static void Flush(object locker) + { + lock (locker) + { + var set = new HashSet(); + while (_bags.TryDequeue(out var item)) set.Add(item); + foreach (var item in set) + { + var entity = item.FindEntity() ?? new Entities.ViewModelState { CreatedAt = DateTime.Now, Type = item.HostType.FullName }; + entity.UpdatedAt = DateTime.Now; + entity.Value = item.ToJson(); + entity.Save(); + } + } + } + public ViewStateBag(IViewStateHost host) + { + this._host = host; + this.HostType = host.GetType(); + var entity = FindEntity(); + if (entity != null) JsonConvert.PopulateObject(entity.Value, this); + var fields = this.HostType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + foreach (var field in fields) + { + var attributes = field.GetCustomAttributes(); + foreach (var item in attributes) maps[item.Property] = field; + } + if (maps.Count > 0 && this.Count > 0) + { + foreach (var item in maps) + { + if (this.TryGetValue(item.Key, out var value)) + { + var fld = item.Value; + var type = fld.FieldType; + if (type.FullName == value.Type) item.Value.SetValue(host, value.Read(type)); + } + } + } + if (this._host.InstanceId == 1) + { + this._host.PropertyChanged += this.PropertyChanged; + } + } + private SortedDictionary maps = new SortedDictionary(); + public Type HostType { get; } + private Entities.ViewModelState FindEntity() => Entities.ViewModelState.FindByType(this.HostType.FullName); + private void PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) + { + if (!this.maps.TryGetValue(e.PropertyName, out var field)) return; + var value = field.GetValue(this._host); + if (!this.TryGetValue(e.PropertyName, out var item)) item = this[e.PropertyName] = new ViewStateItem(); + item.Write(value); + _bags.Enqueue(this); + _timer.SetNext(1000); + } + + private readonly IViewStateHost _host; + + public string ToJson() => JsonConvert.SerializeObject(this); +} diff --git a/LuYao.Toolkit.ViewModels/ViewStates/ViewStateItem.cs b/LuYao.Toolkit.ViewModels/ViewStates/ViewStateItem.cs new file mode 100644 index 0000000..d2537f5 --- /dev/null +++ b/LuYao.Toolkit.ViewModels/ViewStates/ViewStateItem.cs @@ -0,0 +1,20 @@ +using Newtonsoft.Json; +using System; + +namespace LuYao.Toolkit.ViewStates; + +public class ViewStateItem +{ + public string Type { get; set; } + public string Json { get; set; } + public object Read(Type type) + { + return JsonConvert.DeserializeObject(Json, type); + } + public void Write(object value) + { + if (value == null) throw new ArgumentNullException(nameof(value)); + Type = value.GetType().FullName; + Json = JsonConvert.SerializeObject(value); + } +} diff --git a/LuYao.Toolkit.ViewModels/ViewStates/WatchViewStateAttribute.cs b/LuYao.Toolkit.ViewModels/ViewStates/WatchViewStateAttribute.cs new file mode 100644 index 0000000..a513b3e --- /dev/null +++ b/LuYao.Toolkit.ViewModels/ViewStates/WatchViewStateAttribute.cs @@ -0,0 +1,14 @@ +using System; + +namespace LuYao.Toolkit.ViewStates; + +[AttributeUsage(AttributeTargets.Field)] +public class WatchViewStateAttribute : Attribute +{ + public string Property { get; } + public WatchViewStateAttribute(string property) + { + if (string.IsNullOrWhiteSpace(property)) throw new ArgumentOutOfRangeException(nameof(property)); + Property = property; + } +} diff --git a/LuYao.Toolkit.sln b/LuYao.Toolkit.sln new file mode 100644 index 0000000..6e84edb --- /dev/null +++ b/LuYao.Toolkit.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31912.275 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LuYao.Toolkit.ViewModels", "LuYao.Toolkit.ViewModels\LuYao.Toolkit.ViewModels.csproj", "{4D8200CA-1142-4BC7-A637-E8CA88213313}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LuYao.Toolkit.Core", "LuYao.Toolkit.Core\LuYao.Toolkit.Core.csproj", "{6B78E333-74F7-48DB-B49D-C54ABCC215F0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LuYao.Toolkit", "LuYao.Toolkit\LuYao.Toolkit.csproj", "{D1E1E873-F697-42D8-9EA6-1A280DF3D4FB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LuYao.Toolkit.Extensions", "LuYao.Toolkit.Extensions\LuYao.Toolkit.Extensions.csproj", "{9DCF56D7-CE8C-4CC6-9FCA-8BCF75661552}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决方案项", "{CAF0F5E4-6A8C-4B4F-B46C-DF65CE11619F}" + ProjectSection(SolutionItems) = preProject + common.props = common.props + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4D8200CA-1142-4BC7-A637-E8CA88213313}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D8200CA-1142-4BC7-A637-E8CA88213313}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D8200CA-1142-4BC7-A637-E8CA88213313}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D8200CA-1142-4BC7-A637-E8CA88213313}.Release|Any CPU.Build.0 = Release|Any CPU + {6B78E333-74F7-48DB-B49D-C54ABCC215F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B78E333-74F7-48DB-B49D-C54ABCC215F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B78E333-74F7-48DB-B49D-C54ABCC215F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B78E333-74F7-48DB-B49D-C54ABCC215F0}.Release|Any CPU.Build.0 = Release|Any CPU + {D1E1E873-F697-42D8-9EA6-1A280DF3D4FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1E1E873-F697-42D8-9EA6-1A280DF3D4FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1E1E873-F697-42D8-9EA6-1A280DF3D4FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1E1E873-F697-42D8-9EA6-1A280DF3D4FB}.Release|Any CPU.Build.0 = Release|Any CPU + {9DCF56D7-CE8C-4CC6-9FCA-8BCF75661552}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DCF56D7-CE8C-4CC6-9FCA-8BCF75661552}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DCF56D7-CE8C-4CC6-9FCA-8BCF75661552}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DCF56D7-CE8C-4CC6-9FCA-8BCF75661552}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E2A6C1AD-DC44-41A3-BA1E-663ED4ADA32D} + EndGlobalSection +EndGlobal diff --git a/LuYao.Toolkit/App.config b/LuYao.Toolkit/App.config new file mode 100644 index 0000000..52b7622 --- /dev/null +++ b/LuYao.Toolkit/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/App.ico b/LuYao.Toolkit/App.ico new file mode 100644 index 0000000000000000000000000000000000000000..d7d6ad4dcb8c46aae5966aeba1712fd28edc501d GIT binary patch literal 60129 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 literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/App.xaml b/LuYao.Toolkit/App.xaml new file mode 100644 index 0000000..3027eef --- /dev/null +++ b/LuYao.Toolkit/App.xaml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + pack://application:,,,/LuYao.Toolkit;component/Resources/#JetBrains Mono + + + diff --git a/LuYao.Toolkit/App.xaml.cs b/LuYao.Toolkit/App.xaml.cs new file mode 100644 index 0000000..10773b3 --- /dev/null +++ b/LuYao.Toolkit/App.xaml.cs @@ -0,0 +1,162 @@ + +using FluentValidation; +using LuYao.IO.Updating; +using LuYao.Toolkit.Behaviors; +using LuYao.Toolkit.Controls.AvalonEdit; +using LuYao.Toolkit.Dialogs; +using LuYao.Toolkit.Entities; +using LuYao.Toolkit.Rdm.Dialogs; +using LuYao.Toolkit.Regions; +using LuYao.Toolkit.Services; +using LuYao.Toolkit.Themes; +using LuYao.Toolkit.Update; +using LuYao.Toolkit.Views; +using NewLife.Log; +using NewLife.Reflection; +using OfficeOpenXml; +using Prism.Ioc; +using Prism.Mvvm; +using Prism.Unity; +using System; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using LicenseContext = OfficeOpenXml.LicenseContext; + +namespace LuYao.Toolkit; + +/// +/// Interaction logic for App.xaml +/// +public partial class App : PrismApplication +{ + static App() + { + AssemblyX.ResolveFilter = ResolveFilter; + ExcelPackage.LicenseContext = LicenseContext.NonCommercial; + } + + public App() + { + ProcessManager.GetProcessLock(); + } + + protected override void OnStartup(StartupEventArgs e) + { + var splashScreen = new SplashScreen("Resources/Toolbox.png"); + splashScreen.Show(true); + this.DispatcherUnhandledException += App_DispatcherUnhandledException; + TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + Task.Run(ChannelItemSession.FindCount); + HighlightingHelper.RegisterHighlighting(); + ThemeManager.ThemeChanged += ThemeManager_ThemeChanged; + base.OnStartup(e); + Task.Run(Clear); + } + private static void Clear() + { + UpdatePackageHelper.Clear(AppDomain.CurrentDomain.BaseDirectory); + } + + private static void ThemeManager_ThemeChanged(object sender, ThemeMode e) + { + HighlightingHelper.RegisterHighlighting(); + } + + private static bool ResolveFilter(string name) + { + if (string.IsNullOrWhiteSpace(name)) return false; + if (name.Contains(".resources,")) return false; + return true; + } + private static void ShowError(string msg) + { + Services.NotifyService.Warning(msg); + } + private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + if (e.ExceptionObject is Exception ex) + { + XTrace.WriteLine("CurrentDomain_UnhandledException"); + XTrace.WriteException(ex); + ShowError(ex.Message); + } + } + + private static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) + { + XTrace.WriteLine("TaskScheduler_UnobservedTaskException"); + XTrace.WriteException(e.Exception); + ShowError(e.Exception.Message); + e.SetObserved(); + } + + private static void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) + { + XTrace.WriteLine("App_DispatcherUnhandledException"); + XTrace.WriteException(e.Exception); + if (e.Exception is ValidationException v) + { + Services.MessageBoxService.Alert(v.Message, "验证失败"); + } + else + { + ShowError(e.Exception.Message); + } + e.Handled = true; + } + protected override Window CreateShell() + { + return this.Container.Resolve(); + } + + protected override void RegisterTypes(IContainerRegistry containerRegistry) + { + AppRegisterTypes.RegisterViews(containerRegistry); + + containerRegistry.RegisterDialogWindow(); + containerRegistry.RegisterDialogWindow(nameof(MultiboxingDialogWindow)); + containerRegistry.RegisterDialog(); + + containerRegistry.RegisterDialog(nameof(RdpConnectionDetailDialog)); + containerRegistry.RegisterDialog(nameof(RdmSettingDialog)); + containerRegistry.RegisterDialog(nameof(RdpGroupDetailDialog)); + containerRegistry.RegisterDialog(nameof(FindNewVersionDialog)); + containerRegistry.RegisterDialog(nameof(PreviewFileAsStringDialog)); + containerRegistry.RegisterDialog(nameof(ToolkitSettingsDialog)); + } + + protected override void Initialize() + { + base.Initialize(); + var mgr = this.Container.Resolve(); + + if (ChannelItemSession.HasSessin()) + { + mgr.RegisterViewWithRegion(RegionNames.MainRegion, ViewNames.Tabs.Session.Index); + } + else + { + mgr.RegisterViewWithRegion(RegionNames.MainRegion, ViewNames.Tabs.Explorer.Index); + } + + + ServiceProviderContainer.SetProvider(new ServiceProvider()); + } + + protected override void ConfigureViewModelLocator() + { + base.ConfigureViewModelLocator(); + ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver( + static (view) => AppHelper.ViewModelTypeResolver(view, typeof(ViewModelBase).Assembly, view.Assembly) + ); + } + + protected override void OnExit(ExitEventArgs e) + { + ViewStates.ViewStateBag.Flush(); + base.OnExit(e); + } +} diff --git a/LuYao.Toolkit/AppRegisterTypes.cs b/LuYao.Toolkit/AppRegisterTypes.cs new file mode 100644 index 0000000..473d7bf --- /dev/null +++ b/LuYao.Toolkit/AppRegisterTypes.cs @@ -0,0 +1,65 @@ +using Prism.Ioc; + +namespace LuYao.Toolkit; +static class AppRegisterTypes +{ + public static void RegisterViews(IContainerRegistry containerRegistry) + { + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.ColorConverter), "Channels.Converters.ColorConverter"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.HexConvert), "Channels.Converters.HexConvert"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.IndentJson), "Channels.Converters.IndentJson"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.IndentXml), "Channels.Converters.IndentXml"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.JsonToCSharp), "Channels.Converters.JsonToCSharp"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.JsonToCsv), "Channels.Converters.JsonToCsv"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.PostmanConverter), "Channels.Converters.PostmanConverter"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.RsaKeyConvert), "Channels.Converters.RsaKeyConvert"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.TranslateJsonByJs), "Channels.Converters.TranslateJsonByJs"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.TranslateJsonByLiquid), "Channels.Converters.TranslateJsonByLiquid"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.TranslateXmlByXsl), "Channels.Converters.TranslateXmlByXsl"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.UnixTimestamp), "Channels.Converters.UnixTimestamp"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Converts.YamlToJson), "Channels.Converters.YamlToJson"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.CrossBorder.MercadoToWorldFirst), "Channels.CrossBorder.MercadoToWorldFirst"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Encodings.Ascii85Encode), "Channels.Encodings.Ascii85Encode"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Encodings.Base16Encode), "Channels.Encodings.Base16Encode"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Encodings.Base62Encode), "Channels.Encodings.Base62Encode"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Encodings.Base64Encode), "Channels.Encodings.Base64Encode"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Encodings.HtmlEncode), "Channels.Encodings.HtmlEncode"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Encodings.StringZipper), "Channels.Encodings.StringZipper"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Encodings.UrlEncode), "Channels.Encodings.UrlEncode"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Files.DetectFileEncodeing), "Channels.Files.DetectFileEncodeing"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Files.HashFile), "Channels.Files.HashFile"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Gens.GenAesKey), "Channels.Gens.GenAesKey"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Gens.GenGuid), "Channels.Gens.GenGuid"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Gens.GenLinesByRange), "Channels.Gens.GenLinesByRange"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Gens.GenPassword), "Channels.Gens.GenPassword"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Gens.GenRsaKey), "Channels.Gens.GenRsaKey"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Gens.GenXCodeEntity), "Channels.Gens.GenXCodeEntity"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Images.Base64ToImage), "Channels.Images.Base64ToImage"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Images.GifSplitter), "Channels.Images.GifSplitter"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Images.ImageToBase64), "Channels.Images.ImageToBase64"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Images.ImageToIcon), "Channels.Images.ImageToIcon"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.HttpProxyChecker), "Channels.Networks.HttpProxyChecker"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.IPLookup), "Channels.Networks.IPLookup"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.Ping), "Channels.Networks.Ping"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.PortProxy.Detail), "Channels.Networks.PortProxy.Detail"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.PortProxy.Index), "Channels.Networks.PortProxy.Index"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.RemoteDesktopManager), "Channels.Networks.RemoteDesktopManager"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.TrafficMonitor), "Channels.Networks.TrafficMonitor"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.UrlAnalyzer), "Channels.Networks.UrlAnalyzer"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.UserAgentParser), "Channels.Networks.UserAgentParser"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Networks.Whois), "Channels.Networks.Whois"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Other.SystemToolkit), "Channels.Other.SystemToolkit"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.CsvReader), "Channels.Texts.CsvReader"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.FullHalfConvert), "Channels.Texts.FullHalfConvert"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.GoogleTranslate), "Channels.Texts.GoogleTranslate"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.HashCalculator), "Channels.Texts.HashCalculator"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.LogReader), "Channels.Texts.LogReader"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.RegexEvaluator), "Channels.Texts.RegexEvaluator"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.TextJoin), "Channels.Texts.TextJoin"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Channels.Texts.YoudaoDictionary), "Channels.Texts.YoudaoDictionary"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Tabs.Explorer.Index), "Tabs.Explorer.Index"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Tabs.Navs.Index), "Tabs.Navs.Index"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Tabs.Rdp.Index), "Tabs.Rdp.Index"); + containerRegistry.RegisterForNavigation(typeof(LuYao.Toolkit.Tabs.Session.Index), "Tabs.Session.Index"); + } +} \ No newline at end of file diff --git a/LuYao.Toolkit/AppRegisterTypes.linq b/LuYao.Toolkit/AppRegisterTypes.linq new file mode 100644 index 0000000..eceefad --- /dev/null +++ b/LuYao.Toolkit/AppRegisterTypes.linq @@ -0,0 +1,38 @@ + + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit\bin\Debug\net7.0-windows\LuYao.Toolkit.Core.dll + D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit\bin\Debug\net7.0-windows\LuYao.Toolkit.dll + Fluid.Core + LuYao.Toolkit + LuYao.Toolkit.Views + Fluid + + +var assembly = typeof(MainWindow).Assembly; +var types = assembly.GetTypes(); +var dic = new SortedDictionary(); +foreach (var item in types) +{ + if (item.IsAbstract) continue; + if (item.IsGenericType) continue; + var attr = item.GetCustomAttribute(); + if (attr == null) continue; + var key = item.FullName; + var view = attr.Name; + dic[key] = view; +} +var dir = Path.GetDirectoryName(Util.CurrentQueryPath); +var parser = new FluidParser(); +var model = new { Types = dic.Select(i => new { Type = i.Key, View = i.Value }).ToList() }; +var source = File.ReadAllText(Path.Combine(dir, "AppRegisterTypes.liquid")); +if (parser.TryParse(source, out var template, out var error)) +{ + var context = new TemplateContext(model); + context.Options.MemberAccessStrategy = new UnsafeMemberAccessStrategy(); + var output = template.Render(context); + Console.WriteLine(output); + File.WriteAllText(Path.Combine(dir, "AppRegisterTypes.cs"), output, Encoding.UTF8); +} +else +{ + Console.WriteLine($"Error: {error}"); +} \ No newline at end of file diff --git a/LuYao.Toolkit/AppRegisterTypes.liquid b/LuYao.Toolkit/AppRegisterTypes.liquid new file mode 100644 index 0000000..72a819d --- /dev/null +++ b/LuYao.Toolkit/AppRegisterTypes.liquid @@ -0,0 +1,12 @@ +using Prism.Ioc; + +namespace LuYao.Toolkit; +static class AppRegisterTypes +{ + public static void RegisterViews(IContainerRegistry containerRegistry) + { +{%- for item in Types %} + containerRegistry.RegisterForNavigation(typeof({{item.Type}}), {{item.View | json}}); +{%- endfor %} + } +} \ No newline at end of file diff --git a/LuYao.Toolkit/AssemblyInfo.cs b/LuYao.Toolkit/AssemblyInfo.cs new file mode 100644 index 0000000..74087a1 --- /dev/null +++ b/LuYao.Toolkit/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/LuYao.Toolkit/Attaches/ComboBoxAttach.cs b/LuYao.Toolkit/Attaches/ComboBoxAttach.cs new file mode 100644 index 0000000..c6caf7a --- /dev/null +++ b/LuYao.Toolkit/Attaches/ComboBoxAttach.cs @@ -0,0 +1,47 @@ +using NewLife; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Attaches; + +public static class ComboBoxAttach +{ + + public static readonly DependencyProperty BindEnumProperty = + DependencyProperty.RegisterAttached("BindEnum", typeof(Type), typeof(ComboBoxAttach), new PropertyMetadata(null, OnBindEnumChanged)); + public static void SetBindEnum(DependencyObject element, Type value) + { + element.SetValue(BindEnumProperty, value); + } + + public static Type GetBindEnum(DependencyObject element) + { + return (Type)element.GetValue(BindEnumProperty); + } + private static void OnBindEnumChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is ComboBox combo && e.NewValue is Type type && type.IsEnum) + { + var values = Enum.GetValues(type); + combo.DisplayMemberPath = "Display"; + combo.SelectedValuePath = "Value"; + combo.Items.Clear(); + foreach (Enum item in values) + { + var desc = item.GetDescription(); + if (string.IsNullOrWhiteSpace(desc)) desc = item.ToString(); + var dto = new + { + Display = desc, + Value = item + }; + combo.Items.Add(dto); + } + } + } +} diff --git a/LuYao.Toolkit/Attaches/FileDragDropAttach.cs b/LuYao.Toolkit/Attaches/FileDragDropAttach.cs new file mode 100644 index 0000000..ba693ff --- /dev/null +++ b/LuYao.Toolkit/Attaches/FileDragDropAttach.cs @@ -0,0 +1,60 @@ +using System; +using System.Windows; + +namespace LuYao.Toolkit.Attaches; + +public static class FileDragDropAttach +{ + public static readonly DependencyProperty GroupProperty = + DependencyProperty.Register("Group", typeof(string), typeof(FrameworkElement), new PropertyMetadata(string.Empty, OnGroupChanged) + { + }); + + public static void SetGroup(DependencyObject element, string value) + { + element.SetValue(GroupProperty, value); + } + public static string GetGroup(DependencyObject obj) + { + return (string)obj.GetValue(GroupProperty); + } + + private static void OnGroupChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is FrameworkElement element) + { + var g = Convert.ToString(e.NewValue ?? string.Empty); + if (string.IsNullOrWhiteSpace(g)) + { + element.AllowDrop = false; + element.PreviewDragOver -= Element_PreviewDragOver; + element.Drop -= Element_Drop; + } + else + { + element.AllowDrop = true; + element.PreviewDragOver += Element_PreviewDragOver; + element.Drop += Element_Drop; + } + } + } + + private static void Element_Drop(object sender, DragEventArgs e) + { + if (sender is FrameworkElement element && element.DataContext is IFileDragDropTarget target) + { + var group = (string)element.GetValue(GroupProperty); + if (string.IsNullOrWhiteSpace(group)) return; + + if (!e.Data.GetDataPresent(DataFormats.FileDrop)) return; + + if (e.Data.GetData(DataFormats.FileDrop) is string[] files) target.OnFilesDropped(group, files); + } + } + + private static void Element_PreviewDragOver(object sender, DragEventArgs e) + { + e.Effects = DragDropEffects.Move; + e.Handled = true; + } +} diff --git a/LuYao.Toolkit/Attaches/TextBoxAttach.cs b/LuYao.Toolkit/Attaches/TextBoxAttach.cs new file mode 100644 index 0000000..5dc693a --- /dev/null +++ b/LuYao.Toolkit/Attaches/TextBoxAttach.cs @@ -0,0 +1,7 @@ +using System.Windows; + +namespace LuYao.Toolkit.Attaches; + +public static class TextBoxAttach +{ +} diff --git a/LuYao.Toolkit/Attaches/UniformSpacingPanelAttach.cs b/LuYao.Toolkit/Attaches/UniformSpacingPanelAttach.cs new file mode 100644 index 0000000..45735a3 --- /dev/null +++ b/LuYao.Toolkit/Attaches/UniformSpacingPanelAttach.cs @@ -0,0 +1,106 @@ +using HandyControl.Controls; +using HandyControl.Tools.Extension; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; + +namespace LuYao.Toolkit.Attaches; + +public static class UniformSpacingPanelAttach +{ + static UniformSpacingPanelAttach() + { + } + public static readonly DependencyProperty ColumnsProperty = DependencyProperty.RegisterAttached( + "Columns", + typeof(int), + typeof(UniformSpacingPanel), + new PropertyMetadata(0, OnColumnsChanged) + ); + + private static void OnColumnsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is UniformSpacingPanel panel) + { + FixItemWidth(panel); + panel.SizeChanged += Panel_SizeChanged; + } + } + public static readonly DependencyProperty LayoutProperty = DependencyProperty.RegisterAttached( + "Layout", + typeof(ColLayout), + typeof(UniformSpacingPanel), + new PropertyMetadata(null, OnLayoutChanged) + ); + + private static void OnLayoutChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is UniformSpacingPanel panel) + { + FixItemWidth(panel); + panel.SizeChanged += Panel_SizeChanged; + } + } + + public static void SetColumns(DependencyObject element, int value) => element.SetValue(ColumnsProperty, value); + public static int GetColumns(DependencyObject element) => (int)element.GetValue(ColumnsProperty); + public static ColLayout GetLayout(DependencyObject element) => (ColLayout)element.GetValue(LayoutProperty); + public static void SetLayout(DependencyObject element, ColLayout value) => element.SetValue(LayoutProperty, value); + + private static void Panel_SizeChanged(object sender, SizeChangedEventArgs e) + { + if (sender is UniformSpacingPanel panel) FixItemWidth(panel); + } + private static void FixItemWidth(UniformSpacingPanel panel) + { + var full = panel.ActualWidth; + if (full <= 0) full = panel.Width; + var cols = GetColumns(panel); + var layout = GetLayout(panel); + if (layout != null) + { + FrameworkElement parent = System.Windows.Window.GetWindow(panel); + if (parent == null) + { + FrameworkElement cursor = panel; + while (cursor.Parent is FrameworkElement element) + { + cursor = element; + parent = cursor; + } + } + if (parent == null) parent = panel; + var status = ColLayout.GetLayoutStatus(parent.ActualWidth); + var unit = ColLayout.ColMaxCellCount; + switch (status) + { + case HandyControl.Data.ColLayoutStatus.Xs: unit = layout.Xs; break; + case HandyControl.Data.ColLayoutStatus.Sm: unit = layout.Sm; break; + case HandyControl.Data.ColLayoutStatus.Md: unit = layout.Md; break; + case HandyControl.Data.ColLayoutStatus.Lg: unit = layout.Lg; break; + case HandyControl.Data.ColLayoutStatus.Xl: unit = layout.Xl; break; + case HandyControl.Data.ColLayoutStatus.Xxl: unit = layout.Xxl; break; + } + if (unit > 0 && unit <= ColLayout.ColMaxCellCount) + { + cols = ColLayout.ColMaxCellCount / unit; + } + } + if (cols <= 0) return; + double spacing = 0; + if (!double.IsNaN(panel.Spacing)) + { + spacing = panel.Spacing; + } + else if (!double.IsNaN(panel.HorizontalSpacing)) + { + spacing = panel.HorizontalSpacing; + } + var itemWidth = (full - (cols - 1) * spacing) / cols; + panel.ItemWidth = itemWidth; + } +} diff --git a/LuYao.Toolkit/Behaviors/AvalonEditBehaviour.cs b/LuYao.Toolkit/Behaviors/AvalonEditBehaviour.cs new file mode 100644 index 0000000..e9f7cf9 --- /dev/null +++ b/LuYao.Toolkit/Behaviors/AvalonEditBehaviour.cs @@ -0,0 +1,189 @@ +//using ICSharpCode.AvalonEdit; +//using ICSharpCode.AvalonEdit.Document; +//using ICSharpCode.AvalonEdit.Highlighting; +//using ICSharpCode.AvalonEdit.Highlighting.Xshd; +//using ICSharpCode.AvalonEdit.Rendering; +//using LuYao.Toolkit.Controls.AvalonEdit.Highlighting; +//using LuYao.Toolkit.Themes; +//using Microsoft.Xaml.Behaviors; +//using System; +//using System.IO; +//using System.Windows; +//using System.Xml; + +//namespace LuYao.Toolkit.Behaviors; + +//public class AvalonEditBehaviour : Behavior +//{ +// private class TruncateLongLines : VisualLineElementGenerator +// { + +// const int maxLength = 256; +// const string ellipsis = "......"; +// const int charactersAfterEllipsis = 50; + +// public override int GetFirstInterestedOffset(int startOffset) +// { +// DocumentLine line = CurrentContext.VisualLine.LastDocumentLine; +// if (line.Length > maxLength) +// { +// int ellipsisOffset = line.Offset + maxLength - charactersAfterEllipsis - ellipsis.Length; +// if (startOffset <= ellipsisOffset) +// return ellipsisOffset; +// } +// return -1; +// } + +// public override VisualLineElement ConstructElement(int offset) +// { +// var fmt = new FormattedTextElement(ellipsis, CurrentContext.VisualLine.LastDocumentLine.EndOffset - offset - charactersAfterEllipsis); +// return fmt; +// } +// } + +// public static readonly DependencyProperty CodeTextProperty = +// DependencyProperty.Register("CodeText", typeof(string), typeof(AvalonEditBehaviour), +// new FrameworkPropertyMetadata(default(string), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, CodeTextChangedCallback)); + +// public string CodeText +// { +// get { return (string)GetValue(CodeTextProperty); } +// set { SetValue(CodeTextProperty, value); } +// } + +// public Boolean IsTruncateable +// { +// get { return (Boolean)GetValue(IsTruncateableProperty); } +// set { SetValue(IsTruncateableProperty, value); } +// } + +// // Using a DependencyProperty as the backing store for IsTruncateable. This enables animation, styling, binding, etc... +// public static readonly DependencyProperty IsTruncateableProperty = +// DependencyProperty.Register("IsTruncateable", typeof(Boolean), typeof(AvalonEditBehaviour), new FrameworkPropertyMetadata(false)); + + + +// public Boolean AutoToEnd +// { +// get { return (Boolean)GetValue(AutoToEndProperty); } +// set { SetValue(AutoToEndProperty, value); } +// } + +// // Using a DependencyProperty as the backing store for AutoToEnd. This enables animation, styling, binding, etc... +// public static readonly DependencyProperty AutoToEndProperty = +// DependencyProperty.Register("AutoToEnd", typeof(Boolean), typeof(AvalonEditBehaviour), new PropertyMetadata(false)); + +// private static void CodeTextChangedCallback( +// DependencyObject dependencyObject, +// DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) +// { +// var behavior = dependencyObject as AvalonEditBehaviour; +// if (behavior.AssociatedObject != null) +// { +// var editor = behavior.AssociatedObject; +// if (editor.Document != null) +// { +// var caretOffset = editor.CaretOffset; +// var next = dependencyPropertyChangedEventArgs.NewValue.ToString(); +// if (next != editor.Text) +// { +// editor.Document.Text = next; +// if (behavior.AutoToEnd) +// { +// editor.ScrollToEnd(); +// if (editor.WordWrap) editor.ScrollToEnd(); +// } +// else +// { +// if (caretOffset <= editor.Document.Text.Length) editor.CaretOffset = caretOffset; +// } +// } +// } +// } +// } +// protected override void OnAttached() +// { +// base.OnAttached(); +// if (AssociatedObject != null) +// { +// var editor = AssociatedObject; +// editor.Options.EnableHyperlinks = false; +// editor.Options.EnableEmailHyperlinks = false; +// if (this.IsTruncateable) editor.TextArea.TextView.ElementGenerators.Add(new TruncateLongLines()); +// editor.TextChanged += AssociatedObjectOnTextChanged; +// ThemeManager.ThemeChanged += AvalonEditBehaviour_OnThemeChanged; +// } +// } + +// private void AvalonEditBehaviour_OnThemeChanged(object sender, ThemeMode e) +// { +// if (this.AssociatedObject != null) +// { +// var editor = this.AssociatedObject; +// if (editor != null) +// { +// var txt = editor.Text; +// editor.Clear(); +// var highlighting = editor.SyntaxHighlighting; +// if (highlighting != null) +// { +// editor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition(highlighting.Name); +// } +// editor.Text = txt; +// } +// } +// } + +// protected override void OnDetaching() +// { +// base.OnDetaching(); +// if (AssociatedObject != null) +// { +// AssociatedObject.TextChanged -= AssociatedObjectOnTextChanged; +// ThemeManager.ThemeChanged -= AvalonEditBehaviour_OnThemeChanged; +// } +// } +// private void AssociatedObjectOnTextChanged(object sender, EventArgs eventArgs) +// { +// if (sender is TextEditor textEditor) +// { +// if (textEditor.Document != null) +// { +// CodeText = textEditor.Document.Text; +// } +// } +// } +// public static void RegisterHighlighting() +// { +// HighlightingManager.Instance.RegisterHighlighting("C#", new[] { ".cs" }, "CSharp-Mode"); +// HighlightingManager.Instance.RegisterHighlighting("Json", new[] { ".json" }, "Json-Mode"); +// HighlightingManager.Instance.RegisterHighlighting("XML", new[] { ".xml", ".baml" }, "XML-Mode"); +// } +//} + +//static class ExtensionMethods +//{ +// public static void RegisterHighlighting( +// this HighlightingManager manager, +// string name, +// string[] extensions, +// string resourceName) +// { +// switch (ToolkitConfig.Current.Theme) +// { +// case ThemeMode.Light: resourceName += "-Default"; break; +// case ThemeMode.Dark: resourceName += "-Dark"; break; +// } + +// resourceName += ".xshd"; + +// Stream resourceStream = typeof(AvalonEditBehaviour).Assembly +// .GetManifestResourceStream(typeof(Defines), resourceName); + +// if (resourceStream != null) +// { +// using (resourceStream) +// using (XmlTextReader reader = new XmlTextReader(resourceStream)) manager.RegisterHighlighting(name, extensions, HighlightingLoader.Load(reader, manager)); +// } +// } +//} \ No newline at end of file diff --git a/LuYao.Toolkit/Behaviors/ListBoxScrollIntoNewAddBehaviour.cs b/LuYao.Toolkit/Behaviors/ListBoxScrollIntoNewAddBehaviour.cs new file mode 100644 index 0000000..06007f6 --- /dev/null +++ b/LuYao.Toolkit/Behaviors/ListBoxScrollIntoNewAddBehaviour.cs @@ -0,0 +1,32 @@ +using Microsoft.Xaml.Behaviors; +using System.Collections.Specialized; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Behaviors; +public class ListBoxScrollIntoNewAddBehaviour : Behavior +{ + protected override void OnAttached() + { + if (this.AssociatedObject.Items is INotifyCollectionChanged notify) + { + notify.CollectionChanged += Notify_CollectionChanged; + } + } + + private void Notify_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) + { + if (e.Action == NotifyCollectionChangedAction.Add && e.NewItems.Count > 0) + { + var item = e.NewItems[0]; + this.AssociatedObject.ScrollIntoView(item); + } + } + + protected override void OnDetaching() + { + if (this.AssociatedObject.Items is INotifyCollectionChanged notify) + { + notify.CollectionChanged -= Notify_CollectionChanged; + } + } +} \ No newline at end of file diff --git a/LuYao.Toolkit/Behaviors/UIElementBehaviour.cs b/LuYao.Toolkit/Behaviors/UIElementBehaviour.cs new file mode 100644 index 0000000..0b60f02 --- /dev/null +++ b/LuYao.Toolkit/Behaviors/UIElementBehaviour.cs @@ -0,0 +1,52 @@ +using Microsoft.Xaml.Behaviors; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Behaviors +{ + public class UIElementBehaviour : Behavior + { + public bool IsFocused + { + get { return (bool)GetValue(IsFocusedProperty); } + set { SetValue(IsFocusedProperty, value); } + } + + public static readonly DependencyProperty IsFocusedProperty = DependencyProperty.Register("IsFocused", typeof(bool), typeof(UIElementBehaviour), new PropertyMetadata(false)); + + protected override void OnAttached() + { + base.OnAttached(); + if (this.AssociatedObject != null) + { + this.AssociatedObject.GotFocus += AssociatedObject_GotFocus; + this.AssociatedObject.LostFocus += AssociatedObject_LostFocus; + } + } + + private void AssociatedObject_LostFocus(object sender, RoutedEventArgs e) + { + this.IsFocused = false; + } + + private void AssociatedObject_GotFocus(object sender, RoutedEventArgs e) + { + this.IsFocused = true; + } + + protected override void OnDetaching() + { + base.OnDetaching(); + if (this.AssociatedObject != null) + { + this.AssociatedObject.GotFocus -= AssociatedObject_GotFocus; + this.AssociatedObject.LostFocus -= AssociatedObject_LostFocus; + } + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/ColorConverter.xaml b/LuYao.Toolkit/Channels/Converts/ColorConverter.xaml new file mode 100644 index 0000000..af7428c --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/ColorConverter.xaml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/ColorConverter.xaml.cs b/LuYao.Toolkit/Channels/Converts/ColorConverter.xaml.cs new file mode 100644 index 0000000..70f9326 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/ColorConverter.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// ColorConverter.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.ColorConverter)] + public partial class ColorConverter : UserControl + { + public ColorConverter() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/HexConvert.xaml b/LuYao.Toolkit/Channels/Converts/HexConvert.xaml new file mode 100644 index 0000000..d6fd5f7 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/HexConvert.xaml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/HexConvert.xaml.cs b/LuYao.Toolkit/Channels/Converts/HexConvert.xaml.cs new file mode 100644 index 0000000..58e15f5 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/HexConvert.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// HexConvert.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.HexConvert)] + public partial class HexConvert : UserControl + { + public HexConvert() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/IndentJson.xaml b/LuYao.Toolkit/Channels/Converts/IndentJson.xaml new file mode 100644 index 0000000..532a038 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/IndentJson.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/IndentJson.xaml.cs b/LuYao.Toolkit/Channels/Converts/IndentJson.xaml.cs new file mode 100644 index 0000000..8ad1342 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/IndentJson.xaml.cs @@ -0,0 +1,20 @@ +using ICSharpCode.AvalonEdit.Folding; +using ICSharpCode.AvalonEdit.Search; +using LuYao.Toolkit.Controls.AvalonEdit; +using System; +using System.Windows; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Channels.Converts; + +/// +/// IndentJson.xaml 的交互逻辑 +/// +[Views.ViewName(Views.ViewNames.Channels.Converters.IndentJson)] +public partial class IndentJson : UserControl +{ + public IndentJson() + { + InitializeComponent(); + } +} diff --git a/LuYao.Toolkit/Channels/Converts/IndentXml.xaml b/LuYao.Toolkit/Channels/Converts/IndentXml.xaml new file mode 100644 index 0000000..97de8d6 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/IndentXml.xaml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/IndentXml.xaml.cs b/LuYao.Toolkit/Channels/Converts/IndentXml.xaml.cs new file mode 100644 index 0000000..496d885 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/IndentXml.xaml.cs @@ -0,0 +1,32 @@ +using ICSharpCode.AvalonEdit.Folding; +using ICSharpCode.AvalonEdit.Search; +using LuYao.Toolkit.Controls.AvalonEdit; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// IndentXml.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.IndentXml)] + public partial class IndentXml : UserControl + { + public IndentXml() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml b/LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml new file mode 100644 index 0000000..2af59ec --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml.cs b/LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml.cs new file mode 100644 index 0000000..e6de575 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/JsonToCSharp.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// JsonToCSharp.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.JsonToCSharp)] + public partial class JsonToCSharp : UserControl + { + public JsonToCSharp() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml b/LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml new file mode 100644 index 0000000..7c32dcf --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml.cs b/LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml.cs new file mode 100644 index 0000000..7f1cad0 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/JsonToCsv.xaml.cs @@ -0,0 +1,16 @@ +using System.Windows.Controls; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// JsonToCsv.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.JsonToCsv)] + public partial class JsonToCsv : UserControl + { + public JsonToCsv() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml b/LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml new file mode 100644 index 0000000..d32398a --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml.cs b/LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml.cs new file mode 100644 index 0000000..b7e4dd1 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/PostmanConverter.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// PostmanConverter.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.PostmanConverter)] + public partial class PostmanConverter : UserControl + { + public PostmanConverter() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml b/LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml new file mode 100644 index 0000000..9989275 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml.cs b/LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml.cs new file mode 100644 index 0000000..8a8012c --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/RsaKeyConvert.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// RsaKeyConvert.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.RsaKeyConvert)] + public partial class RsaKeyConvert : UserControl + { + public RsaKeyConvert() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml b/LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml new file mode 100644 index 0000000..86bc2ed --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml.cs b/LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml.cs new file mode 100644 index 0000000..e79e604 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/TranslateJsonByJs.xaml.cs @@ -0,0 +1,30 @@ +using ICSharpCode.AvalonEdit.Search; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// TranslateJsonByJs.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.TranslateJsonByJs)] + public partial class TranslateJsonByJs : UserControl + { + public TranslateJsonByJs() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml b/LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml new file mode 100644 index 0000000..6af307c --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml.cs b/LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml.cs new file mode 100644 index 0000000..0213984 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/TranslateJsonByLiquid.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// TranslateJsonByLiquid.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.TranslateJsonByLiquid)] + public partial class TranslateJsonByLiquid : UserControl + { + public TranslateJsonByLiquid() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml b/LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml new file mode 100644 index 0000000..e397948 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml.cs b/LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml.cs new file mode 100644 index 0000000..5dd6c3b --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/TranslateXmlByXsl.xaml.cs @@ -0,0 +1,30 @@ +using ICSharpCode.AvalonEdit.Search; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// TranslateXmlByXslt.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.TranslateXmlByXsl)] + public partial class TranslateXmlByXsl : UserControl + { + public TranslateXmlByXsl() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml b/LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml new file mode 100644 index 0000000..6a0ae83 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml.cs b/LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml.cs new file mode 100644 index 0000000..ef319b0 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/UnixTimestamp.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// UnixTimestamp.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.UnixTimestamp)] + public partial class UnixTimestamp : UserControl + { + public UnixTimestamp() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Converts/YamlToJson.xaml b/LuYao.Toolkit/Channels/Converts/YamlToJson.xaml new file mode 100644 index 0000000..c44e802 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/YamlToJson.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Converts/YamlToJson.xaml.cs b/LuYao.Toolkit/Channels/Converts/YamlToJson.xaml.cs new file mode 100644 index 0000000..0d3b0e2 --- /dev/null +++ b/LuYao.Toolkit/Channels/Converts/YamlToJson.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Converts +{ + /// + /// YamlToJson.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Converters.YamlToJson)] + public partial class YamlToJson : UserControl + { + public YamlToJson() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml b/LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml new file mode 100644 index 0000000..3f25cef --- /dev/null +++ b/LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml.cs b/LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml.cs new file mode 100644 index 0000000..08aab0c --- /dev/null +++ b/LuYao.Toolkit/Channels/CrossBorder/MercadoToWorldFirst.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.CrossBorder +{ + /// + /// MercadoToWorldFirst.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.CrossBorder.MercadoToWorldFirst)] + public partial class MercadoToWorldFirst : UserControl + { + public MercadoToWorldFirst() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml b/LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml new file mode 100644 index 0000000..b03cab5 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml.cs b/LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml.cs new file mode 100644 index 0000000..3b24375 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Ascii85Encode.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Encodings +{ + /// + /// Ascii85Encode.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Encodings.Ascii85Encode)] + public partial class Ascii85Encode : UserControl + { + public Ascii85Encode() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml b/LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml new file mode 100644 index 0000000..86c2ee3 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml.cs b/LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml.cs new file mode 100644 index 0000000..7c90ad9 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Base16Encode.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Encodings +{ + /// + /// Base16Encode.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Encodings.Base16Encode)] + public partial class Base16Encode : UserControl + { + public Base16Encode() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml b/LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml new file mode 100644 index 0000000..02be403 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml.cs b/LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml.cs new file mode 100644 index 0000000..a44714f --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Base62Encode.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Encodings +{ + /// + /// Base62Encode.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Encodings.Base62Encode)] + public partial class Base62Encode : UserControl + { + public Base62Encode() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml b/LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml new file mode 100644 index 0000000..fac19a1 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml.cs b/LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml.cs new file mode 100644 index 0000000..a7a37dd --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/Base64Encode.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Encodings +{ + /// + /// Base64Encode.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Encodings.Base64Encode)] + public partial class Base64Encode : UserControl + { + public Base64Encode() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml b/LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml new file mode 100644 index 0000000..00df38f --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml.cs b/LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml.cs new file mode 100644 index 0000000..886ef59 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/HtmlEncode.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Encodings +{ + /// + /// HtmlEncode.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Encodings.HtmlEncode)] + public partial class HtmlEncode : UserControl + { + public HtmlEncode() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Encodings/StringZipper.xaml b/LuYao.Toolkit/Channels/Encodings/StringZipper.xaml new file mode 100644 index 0000000..767a319 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/StringZipper.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Encodings/StringZipper.xaml.cs b/LuYao.Toolkit/Channels/Encodings/StringZipper.xaml.cs new file mode 100644 index 0000000..0c3d652 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/StringZipper.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Encodings +{ + /// + /// StringZipper.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Encodings.StringZipper)] + public partial class StringZipper : UserControl + { + public StringZipper() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml b/LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml new file mode 100644 index 0000000..b1ad156 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml.cs b/LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml.cs new file mode 100644 index 0000000..0d0e811 --- /dev/null +++ b/LuYao.Toolkit/Channels/Encodings/UrlEncode.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Encodings +{ + /// + /// UrlEncode.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Encodings.UrlEncode)] + public partial class UrlEncode : UserControl + { + public UrlEncode() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml b/LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml new file mode 100644 index 0000000..7f89441 --- /dev/null +++ b/LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml.cs b/LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml.cs new file mode 100644 index 0000000..fb82d93 --- /dev/null +++ b/LuYao.Toolkit/Channels/Files/DetectFileEncodeing.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Files +{ + /// + /// DetectFileEncodeing.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Files.DetectFileEncodeing)] + public partial class DetectFileEncodeing : UserControl + { + public DetectFileEncodeing() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Files/HashFile.xaml b/LuYao.Toolkit/Channels/Files/HashFile.xaml new file mode 100644 index 0000000..839dd12 --- /dev/null +++ b/LuYao.Toolkit/Channels/Files/HashFile.xaml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Files/HashFile.xaml.cs b/LuYao.Toolkit/Channels/Files/HashFile.xaml.cs new file mode 100644 index 0000000..3187588 --- /dev/null +++ b/LuYao.Toolkit/Channels/Files/HashFile.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Files +{ + /// + /// HashFile.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Files.HashFile)] + public partial class HashFile : UserControl + { + public HashFile() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Gens/GenAesKey.xaml b/LuYao.Toolkit/Channels/Gens/GenAesKey.xaml new file mode 100644 index 0000000..d29f267 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenAesKey.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Gens/GenAesKey.xaml.cs b/LuYao.Toolkit/Channels/Gens/GenAesKey.xaml.cs new file mode 100644 index 0000000..c288467 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenAesKey.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Gens +{ + /// + /// GenAesKey.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Gens.GenAesKey)] + public partial class GenAesKey : UserControl + { + public GenAesKey() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Gens/GenGuid.xaml b/LuYao.Toolkit/Channels/Gens/GenGuid.xaml new file mode 100644 index 0000000..cbbae76 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenGuid.xaml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Gens/GenGuid.xaml.cs b/LuYao.Toolkit/Channels/Gens/GenGuid.xaml.cs new file mode 100644 index 0000000..e6db440 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenGuid.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Gens +{ + /// + /// GenGuid.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Gens.GenGuid)] + public partial class GenGuid : UserControl + { + public GenGuid() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml b/LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml new file mode 100644 index 0000000..7c0bf53 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml.cs b/LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml.cs new file mode 100644 index 0000000..bae876b --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenLinesByRange.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Gens +{ + /// + /// GenLinesByRange.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Gens.GenLinesByRange)] + public partial class GenLinesByRange : UserControl + { + public GenLinesByRange() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Gens/GenPassword.xaml b/LuYao.Toolkit/Channels/Gens/GenPassword.xaml new file mode 100644 index 0000000..631db50 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenPassword.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Gens/GenPassword.xaml.cs b/LuYao.Toolkit/Channels/Gens/GenPassword.xaml.cs new file mode 100644 index 0000000..3ccd586 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenPassword.xaml.cs @@ -0,0 +1,17 @@ +using LuYao.Toolkit.Views; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Channels.Gens +{ + /// + /// GenPassword.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Gens.GenPassword)] + public partial class GenPassword : UserControl + { + public GenPassword() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml b/LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml new file mode 100644 index 0000000..c67616d --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml.cs b/LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml.cs new file mode 100644 index 0000000..5dfca95 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenRsaKey.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Gens +{ + /// + /// GenRsaKey.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Gens.GenRsaKey)] + public partial class GenRsaKey : UserControl + { + public GenRsaKey() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml b/LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml new file mode 100644 index 0000000..f475764 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml.cs b/LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml.cs new file mode 100644 index 0000000..ac93215 --- /dev/null +++ b/LuYao.Toolkit/Channels/Gens/GenXCodeEntity.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Gens +{ + /// + /// GenXCodeEntity.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Gens.GenXCodeEntity)] + public partial class GenXCodeEntity : UserControl + { + public GenXCodeEntity() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Images/Base64ToImage.xaml b/LuYao.Toolkit/Channels/Images/Base64ToImage.xaml new file mode 100644 index 0000000..e71ee08 --- /dev/null +++ b/LuYao.Toolkit/Channels/Images/Base64ToImage.xaml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Images/Base64ToImage.xaml.cs b/LuYao.Toolkit/Channels/Images/Base64ToImage.xaml.cs new file mode 100644 index 0000000..617adfb --- /dev/null +++ b/LuYao.Toolkit/Channels/Images/Base64ToImage.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Images +{ + /// + /// Base64ToImage.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Images.Base64ToImage)] + public partial class Base64ToImage : UserControl + { + public Base64ToImage() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Images/GifSplitter.xaml b/LuYao.Toolkit/Channels/Images/GifSplitter.xaml new file mode 100644 index 0000000..a1d929c --- /dev/null +++ b/LuYao.Toolkit/Channels/Images/GifSplitter.xaml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Images/ImageToBase64.xaml.cs b/LuYao.Toolkit/Channels/Images/ImageToBase64.xaml.cs new file mode 100644 index 0000000..776f606 --- /dev/null +++ b/LuYao.Toolkit/Channels/Images/ImageToBase64.xaml.cs @@ -0,0 +1,31 @@ +using LuYao.Toolkit.Helpers; +using NewLife.Log; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Images +{ + /// + /// ImageToBase64.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Images.ImageToBase64)] + public partial class ImageToBase64 : UserControl + { + public ImageToBase64() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Images/ImageToIcon.xaml b/LuYao.Toolkit/Channels/Images/ImageToIcon.xaml new file mode 100644 index 0000000..180cd91 --- /dev/null +++ b/LuYao.Toolkit/Channels/Images/ImageToIcon.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Images/ImageToIcon.xaml.cs b/LuYao.Toolkit/Channels/Images/ImageToIcon.xaml.cs new file mode 100644 index 0000000..38ccb57 --- /dev/null +++ b/LuYao.Toolkit/Channels/Images/ImageToIcon.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Images +{ + /// + /// ImageToIcon.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Images.ImageToIcon)] + public partial class ImageToIcon : UserControl + { + public ImageToIcon() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/HttpProxyChecker.xaml b/LuYao.Toolkit/Channels/Networks/HttpProxyChecker.xaml new file mode 100644 index 0000000..710c6d8 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/HttpProxyChecker.xaml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/IPLookup.xaml.cs b/LuYao.Toolkit/Channels/Networks/IPLookup.xaml.cs new file mode 100644 index 0000000..0af1768 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/IPLookup.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks +{ + /// + /// IPLookup.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.IPLookup)] + public partial class IPLookup : UserControl + { + public IPLookup() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/Ping.xaml b/LuYao.Toolkit/Channels/Networks/Ping.xaml new file mode 100644 index 0000000..b6e7461 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/Ping.xaml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/Ping.xaml.cs b/LuYao.Toolkit/Channels/Networks/Ping.xaml.cs new file mode 100644 index 0000000..e454ae2 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/Ping.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks +{ + /// + /// Ping.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.Ping)] + public partial class Ping : UserControl + { + public Ping() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml b/LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml new file mode 100644 index 0000000..62a528a --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml.cs b/LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml.cs new file mode 100644 index 0000000..698fc37 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/PortProxy/Detail.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks.PortProxy +{ + [Views.ViewName(Views.ViewNames.Channels.Networks.PortProxy.Detail)] + public partial class Detail : UserControl + { + public Detail() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml b/LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml new file mode 100644 index 0000000..936e65f --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml.cs b/LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml.cs new file mode 100644 index 0000000..9ca05eb --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/PortProxy/Index.xaml.cs @@ -0,0 +1,33 @@ +using Prism.Ioc; +using Prism.Regions; +using Prism.Regions.Behaviors; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Xml.Linq; + +namespace LuYao.Toolkit.Channels.Networks.PortProxy +{ + /// + /// PortProxy.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.PortProxy.Index)] + public partial class Index : UserControl + { + public Index() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml b/LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml new file mode 100644 index 0000000..c4cc92f --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml.cs b/LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml.cs new file mode 100644 index 0000000..6017bde --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/RemoteDesktopManager.xaml.cs @@ -0,0 +1,88 @@ +using LuYao.Toolkit.Rdm.Dialogs; +using LuYao.Toolkit.Rdm.Events; +using Prism.Events; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks +{ + /// + /// RemoteDesktopManager.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.RemoteDesktopManager)] + public partial class RemoteDesktopManager : UserControl + { + private readonly IEventAggregator eventAggregator; + private readonly IDialogService dialogService; + public RemoteDesktopManager(IEventAggregator eventAggregator, IDialogService dialogService) + { + InitializeComponent(); + this.eventAggregator = eventAggregator ?? throw new System.ArgumentNullException(nameof(eventAggregator)); + this.dialogService = dialogService ?? throw new ArgumentNullException(nameof(dialogService)); + this.eventAggregator.GetEvent().Subscribe(this.OnAddRdoConnection); + this.eventAggregator.GetEvent().Subscribe(this.OnEditRdoConnection); + this.eventAggregator.GetEvent().Subscribe(this.OnOpenRdpConnection); + this.eventAggregator.GetEvent().Subscribe(this.OnOpenRdmSetting); + } + + private void OnOpenRdmSetting() + { + dialogService.ShowDialog(nameof(RdmSettingDialog), null, (r) => { this.eventAggregator.GetEvent().Publish(); }); + } + + private void OnOpenRdpConnection(OpenRdpConnectionEventPayload args) + { + //foreach (RdpTabItem item in SessionTabControl.Items) + //{ + // if (item.Id == args.Id) + // { + // this.SessionTabControl.SelectedItem = item; + // return; + // } + //} + //var e = Entities.RdpConnection.FindById(args.Id); + //if (e == null) return; + //var rdp = new RdpConnection(e); + //var tab = new RdpTabItem(args.Id, rdp); + //this.SessionTabControl.Items.Add(tab); + //this.SessionTabControl.SelectedItem = tab; + //tab.Connect(); + } + + private void DialogCallback(IDialogResult i) + { + if (i.Result == ButtonResult.OK) + { + this.eventAggregator.GetEvent().Publish(); + } + } + + private void OnEditRdoConnection(EditRdpConnectionEventPayload args) + { + var p = new DialogParameters(); + p.Add("act", "edit"); + p.Add("id", args.Id); + dialogService.ShowDialog(nameof(RdpConnectionDetailDialog), p, DialogCallback); + } + + private void OnAddRdoConnection() + { + var p = new DialogParameters(); + p.Add("act", "add"); + dialogService.ShowDialog(nameof(RdpConnectionDetailDialog), p, DialogCallback); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml b/LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml new file mode 100644 index 0000000..122ee30 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml.cs b/LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml.cs new file mode 100644 index 0000000..55ddb1d --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/TrafficMonitor.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks +{ + /// + /// TrafficMonitor.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.TrafficMonitor)] + public partial class TrafficMonitor : UserControl + { + public TrafficMonitor() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml b/LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml new file mode 100644 index 0000000..fad332e --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml.cs b/LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml.cs new file mode 100644 index 0000000..44e6aaa --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/UrlAnalyzer.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks +{ + /// + /// UrlAnalyzer.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.UrlAnalyzer)] + public partial class UrlAnalyzer : UserControl + { + public UrlAnalyzer() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml b/LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml new file mode 100644 index 0000000..c958a0f --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml.cs b/LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml.cs new file mode 100644 index 0000000..ec86262 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/UserAgentParser.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks +{ + /// + /// UserAgentParser.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.UserAgentParser)] + public partial class UserAgentParser : UserControl + { + public UserAgentParser() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Networks/Whois.xaml b/LuYao.Toolkit/Channels/Networks/Whois.xaml new file mode 100644 index 0000000..75d9777 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/Whois.xaml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Networks/Whois.xaml.cs b/LuYao.Toolkit/Channels/Networks/Whois.xaml.cs new file mode 100644 index 0000000..db392c5 --- /dev/null +++ b/LuYao.Toolkit/Channels/Networks/Whois.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Networks +{ + /// + /// Whois.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Networks.Whois)] + public partial class Whois : UserControl + { + public Whois() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Other/SystemToolkit.xaml b/LuYao.Toolkit/Channels/Other/SystemToolkit.xaml new file mode 100644 index 0000000..ec4031d --- /dev/null +++ b/LuYao.Toolkit/Channels/Other/SystemToolkit.xaml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Other/SystemToolkit.xaml.cs b/LuYao.Toolkit/Channels/Other/SystemToolkit.xaml.cs new file mode 100644 index 0000000..82cf186 --- /dev/null +++ b/LuYao.Toolkit/Channels/Other/SystemToolkit.xaml.cs @@ -0,0 +1,101 @@ +using NewLife.Log; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Other; + +/// +/// SystemToolkit.xaml 的交互逻辑 +/// +[Views.ViewName(Views.ViewNames.Channels.Other.SystemToolkit)] +public partial class SystemToolkit : UserControl +{ + public SystemToolkit() + { + InitializeComponent(); + //https://github.com/BlackINT3/OpenArk/blob/cf3d548b962f0f5cfb764c626f0c71b37f1ac06b/src/OpenArk/utilities/utilities.cpp + this.AddHandler(Button.ClickEvent, new RoutedEventHandler(this.OnButtonClick)); + } + + + private void OnButtonClick(object sender, RoutedEventArgs e) + { + if (e.OriginalSource is Button btn) + { + switch (btn.Name) + { + case nameof(Cmd): ShellRun("cmd.exe", "/k cd /d %userprofile%"); break; + case nameof(Wsl): ShellRun("wsl.exe", ""); break; + case nameof(PowerShell): ShellRun("powershell.exe", ""); break; + case nameof(taskmgr): ShellRun("taskmgr.exe", ""); break; + case nameof(regedit): ShellRun("regedit.exe", ""); break; + case nameof(services): ShellRun("services.msc", ""); break; + case nameof(pcname): ShellRun("SystemPropertiesComputerName.exe", ""); break; + case nameof(env): ShellRun("SystemPropertiesAdvanced.exe", ""); break; + case nameof(program): ShellRun("control.exe", "appwiz.cpl"); break; + case nameof(calc): ShellRun("calc.exe", ""); break; + case nameof(systeminfo): ShellRun("cmd.exe", "/c systeminfo |more & pause"); break; + case nameof(version): ShellRun("winver.exe", ""); break; + case nameof(deskicon): ShellRun("rundll32.exe", "shell32.dll,Control_RunDLL desk.cpl,,0"); break; + case nameof(tasksch): ShellRun("taskschd.msc", "/s"); break; + case nameof(devmgr): ShellRun("devmgmt.msc", ""); break; + case nameof(disks): ShellRun("diskmgmt.msc", ""); break; + case nameof(datetime): ShellRun("control.exe", "date/time"); break; + case nameof(wallpaper): + if (Environment.OSVersion.Version.Major <= 5) + { + ShellRun("rundll32.exe", "shell32.dll,Control_RunDLL desk.cpl,,0"); + } + else + { + ShellRun("control.exe", "/name Microsoft.Personalization /page pageWallpaper"); + } + break; + case nameof(credential): ShellRun("control.exe", "/name Microsoft.CredentialManager"); break; + case nameof(uac): ShellRun("UserAccountControlSettings.exe", ""); break; + case nameof(users): ShellRun("lusrmgr.msc", ""); break; + case nameof(secpolicy): ShellRun("secpol.msc", ""); break; + case nameof(gpedit): ShellRun("gpedit.msc", ""); break; + case nameof(eventlog): ShellRun("eventvwr.msc", ""); break; + case nameof(performance): ShellRun("perfmon.exe", ""); break; + case nameof(perfsettings): ShellRun("SystemPropertiesPerformance.exe", ""); break; + case nameof(resmon): ShellRun("resmon.exe", ""); break; + case nameof(powercfg): ShellRun("control.exe", "powercfg.cpl,,3"); break; + case nameof(certmgr): ShellRun("certmgr.msc", ""); break; + case nameof(hosts): ShellRun("notepad.exe", System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "System32", "drivers", "etc", "hosts")); break; + case nameof(proxy): ShellRun("rundll32.exe", "shell32.dll,Control_RunDLL inetcpl.cpl,,4"); break; + case nameof(firewall): ShellRun("control.exe", "firewall.cpl"); break; + case nameof(ipv6): ShellRun("cmd.exe", "/k ipconfig|findstr /i ipv6"); break; + case nameof(ipv4): ShellRun("cmd.exe", "/k ipconfig|findstr /i ipv4"); break; + case nameof(route): ShellRun("cmd.exe", "/k route print"); break; + case nameof(netconnections): ShellRun("control.exe", "ncpa.cpl"); break; + case nameof(share): ShellRun("fsmgmt.msc", ""); break; + } + } + } + private static void ShellRun(string cmdline, string param) + { + ProcessStartInfo startInfo = new ProcessStartInfo(); + startInfo.CreateNoWindow = false; + startInfo.UseShellExecute = true; + startInfo.FileName = cmdline; + startInfo.Arguments = param; + + Process.Start(startInfo); + } +} diff --git a/LuYao.Toolkit/Channels/Texts/CsvReader.xaml b/LuYao.Toolkit/Channels/Texts/CsvReader.xaml new file mode 100644 index 0000000..958a891 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/CsvReader.xaml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/CsvReader.xaml.cs b/LuYao.Toolkit/Channels/Texts/CsvReader.xaml.cs new file mode 100644 index 0000000..7402bad --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/CsvReader.xaml.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Texts +{ + /// + /// CsvReader.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Texts.CsvReader)] + public partial class CsvReader : UserControl + { + public CsvReader() + { + InitializeComponent(); + } + + private void MainDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) + { + if (e.Column is DataGridBoundColumn dataGridBoundColumn) + { + if (e.PropertyName.Contains('.')) + { + dataGridBoundColumn.Binding = new Binding("[" + e.PropertyName + "]"); + } + dataGridBoundColumn.MaxWidth = 200; + } + } + } +} diff --git a/LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml b/LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml new file mode 100644 index 0000000..b5f3ac1 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml.cs b/LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml.cs new file mode 100644 index 0000000..82e05b7 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/FullHalfConvert.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Texts +{ + /// + /// FullHalfConvert.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Texts.FullHalfConvert)] + public partial class FullHalfConvert : UserControl + { + public FullHalfConvert() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml b/LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml new file mode 100644 index 0000000..4ce10be --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml.cs b/LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml.cs new file mode 100644 index 0000000..485903d --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/GoogleTranslate.xaml.cs @@ -0,0 +1,137 @@ +using System.Collections.Generic; +using System.Net; +using System.Text; +using System.Windows; +using System; +using System.Windows.Controls; +using System.IO; +using System.Threading.Tasks; +using System.Net.NetworkInformation; +using System.Linq; +using NewLife.Log; +using NewLife; +using LuYao.Toolkit.Services; +using LuYao.Toolkit.IO; +using System.Diagnostics; +using System.ComponentModel; + +namespace LuYao.Toolkit.Channels.Texts +{ + /// + /// GoogleTranslate.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Texts.GoogleTranslate)] + public partial class GoogleTranslate : UserControl + { + public GoogleTranslate() + { + InitializeComponent(); + } + private void FixHostButton_OnClick(object sender, RoutedEventArgs e) + { + try + { + TongjiService.Tongji(Views.ViewNames.Channels.Texts.GoogleTranslate, new + { + Action = "FixHost" + }); + this.FixHostButton.IsEnabled = false; + var ip = FixHost(out var file); + using (var p = new Process()) + { + p.StartInfo = new ProcessStartInfo + { + WindowStyle = ProcessWindowStyle.Normal, + CreateNoWindow = false, + FileName = "cmd.exe", + Arguments = $"/C xcopy /Y /R \"{file}\" \"%WinDir%\\system32\\drivers\\etc\\hosts\"", + Verb = "runas", + UseShellExecute = true + }; + if (p.Start()) + { + p.WaitForExit(); + NotifyService.Success($"修复成功,服务器地址为:{ip}。"); + } + } + } + catch (Exception exception) + { + XTrace.WriteException(exception); + if (exception is Win32Exception) + { + MessageBoxService.Alert("操作失败,请在弹出是否允许时,选择“是”。" + Environment.NewLine + exception.Message); + } + else if (exception is UnauthorizedAccessException) + { + var copy = false; + if (!string.IsNullOrWhiteSpace(fixedHost)) + { + ClipboardService.CopyText(fixedHost); + copy = true; + } + MessageBoxService.Alert( + "操作失败,请以管理员身份启动程序(程序图标上点鼠标右键,选择:以管理员身份运行)。" + + Environment.NewLine + + "如果依旧无法修复,尝试手动修改 hosts 文件。" + + (copy ? "修复内容已经复制到剪切板。" : string.Empty) + + Environment.NewLine + + exception.Message + ); + } + else + { + MessageBoxService.Alert("操作失败:" + Environment.NewLine + exception.Message); + } + } + finally + { + this.FixHostButton.IsEnabled = true; + } + } + + private string fixedHost = string.Empty; + private record HostItem(string Host, string IPAddress); + private string FixHost(out string file) + { + var ip = GoogleService.ResolveServerAddress(); + + var dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "System32", "drivers", "etc"); + var fn = Path.Combine(dir, "hosts"); + FileInfo info = new FileInfo(fn); + var lines = new List(); + if (info.Exists) lines.AddRange(File.ReadAllLines(fn)); + //File.ReadAllLines(fn) + foreach (var d in new string[] { "translate.google.com", "translate.googleapis.com" }) + { + var keep = new HostItem(d, ip); + Keep(lines, keep); + } + var output = lines.Join(Environment.NewLine); + this.OutputTextEditor.Text = fixedHost = output; + XTrace.WriteLine(output); + file = TempHelper.GetTempFileName("host.txt"); + File.WriteAllLines(file, lines, Encoding.UTF8); + return ip; + } + + private static void Keep(List lines, HostItem keep) + { + for (int i = 0; i < lines.Count; i++) + { + var str = lines[i]; + if (string.IsNullOrWhiteSpace(str)) continue;//跳过空格 + if (str.Trim().StartsWith("#")) continue;//跳过注释 + var parts = str.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); + if (parts.Length <= 1) continue; + var host = parts[1]; + if (string.Equals(host, keep.Host, StringComparison.OrdinalIgnoreCase)) + { + lines.RemoveAt(i); + i--; + } + } + lines.Add($"{keep.IPAddress} {keep.Host}"); + } + } +} diff --git a/LuYao.Toolkit/Channels/Texts/HashCalculator.xaml b/LuYao.Toolkit/Channels/Texts/HashCalculator.xaml new file mode 100644 index 0000000..753d223 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/HashCalculator.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/HashCalculator.xaml.cs b/LuYao.Toolkit/Channels/Texts/HashCalculator.xaml.cs new file mode 100644 index 0000000..b16682d --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/HashCalculator.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Texts +{ + /// + /// HashCalculator.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Channels.Texts.HashCalculator)] + public partial class HashCalculator : UserControl + { + public HashCalculator() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Texts/LogReader.xaml b/LuYao.Toolkit/Channels/Texts/LogReader.xaml new file mode 100644 index 0000000..910f0f5 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/LogReader.xaml @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/LogReader.xaml.cs b/LuYao.Toolkit/Channels/Texts/LogReader.xaml.cs new file mode 100644 index 0000000..e6fe04b --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/LogReader.xaml.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Texts +{ + /// + /// LogReader.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Texts.LogReader)] + public partial class LogReader : UserControl + { + public LogReader() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml b/LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml new file mode 100644 index 0000000..e484106 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml.cs b/LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml.cs new file mode 100644 index 0000000..c3bccf2 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/RegexEvaluator.xaml.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Texts +{ + /// + /// RegexEvaluator.xaml 的交互逻辑 + /// + [Views.ViewName(Views.ViewNames.Channels.Texts.RegexEvaluator)] + public partial class RegexEvaluator : UserControl + { + public RegexEvaluator() + { + InitializeComponent(); + } + private void MatchesDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + foreach (var item in e.AddedItems) + { + if (item is Capture c) + { + //InputTextBox.Select(c.Index, c.Length); + break; + } + } + } + + private void GroupDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + foreach (var item in e.AddedItems) + { + if (item is Capture c) + { + //InputTextBox.Select(c.Index, c.Length); + break; + } + } + } + + private void CaptureDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + foreach (var item in e.AddedItems) + { + if (item is Capture c) + { + //InputTextBox.Select(c.Index, c.Length); + break; + } + } + } + } +} diff --git a/LuYao.Toolkit/Channels/Texts/TextJoin.xaml b/LuYao.Toolkit/Channels/Texts/TextJoin.xaml new file mode 100644 index 0000000..8ac4bf8 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/TextJoin.xaml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/TextJoin.xaml.cs b/LuYao.Toolkit/Channels/Texts/TextJoin.xaml.cs new file mode 100644 index 0000000..c2ec68e --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/TextJoin.xaml.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Texts; + +/// +/// TextJoin.xaml 的交互逻辑 +/// +[Views.ViewName(Views.ViewNames.Channels.Texts.TextJoin)] +public partial class TextJoin : UserControl +{ + public TextJoin() + { + InitializeComponent(); + Attaches.ComboBoxAttach.SetBindEnum(this.SplitComboBox, typeof(TextJoinViewModel.SplitBy)); + Attaches.ComboBoxAttach.SetBindEnum(this.EscapeComboBox, typeof(TextJoinViewModel.EscapeType)); + Attaches.ComboBoxAttach.SetBindEnum(this.JoinComboBox, typeof(TextJoinViewModel.JoinBy)); + } +} diff --git a/LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml b/LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml new file mode 100644 index 0000000..9d078c7 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml.cs b/LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml.cs new file mode 100644 index 0000000..d36b1a0 --- /dev/null +++ b/LuYao.Toolkit/Channels/Texts/YoudaoDictionary.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Channels.Texts; + +/// +/// YoudaoDictionary.xaml 的交互逻辑 +/// +[Views.ViewName(Views.ViewNames.Channels.Texts.YoudaoDictionary)] +public partial class YoudaoDictionary : UserControl +{ + public YoudaoDictionary() + { + InitializeComponent(); + } +} diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Dark.xshd b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Dark.xshd new file mode 100644 index 0000000..d4f5f5c --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Dark.xshd @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO + FIXME + + + HACK + UNDONE + + + + + + + \# + + + + (define|undef|if|elif|else|endif|line)\b + + + + // + + + + + + (region|endregion|error|warning|pragma)\b + + + + + + + ///(?!/) + + + + + + + + // + + + + /\* + \*/ + + + + " + " + + + + + + + + ' + ' + + + + + + + + @" + " + + + + + + + + \$" + " + + + + + + + + + + + + @[\w\d_]+ + + + + this + base + + + + as + is + new + sizeof + typeof + stackalloc + + + + true + false + + + + else + if + switch + case + default + do + for + foreach + in + while + lock + + + + break + continue + goto + return + + + + yield + partial + global + where + select + group + by + into + from + ascending + descending + orderby + let + join + on + equals + var + dynamic + await + + + + try + throw + catch + finally + + + + checked + unchecked + + + + fixed + unsafe + + + + bool + byte + char + decimal + double + enum + float + int + long + sbyte + short + struct + uint + ushort + ulong + + + + class + interface + delegate + object + string + void + + + + explicit + implicit + operator + + + + params + ref + out + + + + abstract + const + event + extern + override + readonly + sealed + static + virtual + volatile + async + + + + public + protected + private + internal + + + + namespace + using + + + + get + set + add + remove + + + + null + value + + + + nameof + + + + + \b + [\d\w_]+ # an identifier + (?=\s*\() # followed by ( + + + + + \b0[xX][0-9a-fA-F]+ # hex number + | + ( \b\d+(\.[0-9]+)? #number with optional floating point + | \.[0-9]+ #or just starting with floating point + ) + ([eE][+-]?[0-9]+)? # optional exponent + + + + [?,.;()\[\]{}+\-/%*<>^+~!|&]+ + + + diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Default.xshd b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Default.xshd new file mode 100644 index 0000000..39ab004 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/CSharp-Mode-Default.xshd @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TODO + FIXME + + + HACK + UNDONE + + + + + + + \# + + + + (define|undef|if|elif|else|endif|line)\b + + + + // + + + + + + (region|endregion|error|warning|pragma)\b + + + + + + + ///(?!/) + + + + + + + + // + + + + /\* + \*/ + + + + " + " + + + + + + + + ' + ' + + + + + + + + @" + " + + + + + + + + \$" + " + + + + + + + + + + + + @[\w\d_]+ + + + + this + base + + + + as + is + new + sizeof + typeof + stackalloc + + + + true + false + + + + else + if + switch + case + default + do + for + foreach + in + while + lock + + + + break + continue + goto + return + + + + yield + partial + global + where + select + group + by + into + from + ascending + descending + orderby + let + join + on + equals + var + dynamic + await + + + + try + throw + catch + finally + + + + checked + unchecked + + + + fixed + unsafe + + + + bool + byte + char + decimal + double + enum + float + int + long + sbyte + short + struct + uint + ushort + ulong + + + + class + interface + delegate + object + string + void + + + + explicit + implicit + operator + + + + params + ref + out + + + + abstract + const + event + extern + override + readonly + sealed + static + virtual + volatile + async + + + + public + protected + private + internal + + + + namespace + using + + + + get + set + add + remove + + + + null + value + + + + nameof + + + + + \b + [\d\w_]+ # an identifier + (?=\s*\() # followed by ( + + + + + \b0[xX][0-9a-fA-F]+ # hex number + | + ( \b\d+(\.[0-9]+)? #number with optional floating point + | \.[0-9]+ #or just starting with floating point + ) + ([eE][+-]?[0-9]+)? # optional exponent + + + + [?,.;()\[\]{}+\-/%*<>^+~!|&]+ + + + diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Defines.cs b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Defines.cs new file mode 100644 index 0000000..b41e740 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Defines.cs @@ -0,0 +1,22 @@ +using ICSharpCode.AvalonEdit.Highlighting.Xshd; +using ICSharpCode.AvalonEdit.Highlighting; +using System.IO; +using System.Xml; + +namespace LuYao.Toolkit.Controls.AvalonEdit.Highlighting; + +public static class Defines +{ + static Defines() + { + var type = typeof(Defines); + using (Stream s = type.Assembly.GetManifestResourceStream($"{type.Namespace}.Log.xshd")) + { + using (XmlReader reader = new XmlTextReader(s)) + { + Log = HighlightingLoader.Load(reader, HighlightingManager.Instance); + } + } + } + public static IHighlightingDefinition Log { get; } +} diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Dark.xshd b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Dark.xshd new file mode 100644 index 0000000..d54de18 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Dark.xshd @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + " + " + + + ' + ' + + + : + + + , + + + + + + + , + + + + + + true + false + + + null + + + " + " + + + ' + ' + + + \{ + \} + + + \[ + \] + + + \b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)? + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Default.xshd b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Default.xshd new file mode 100644 index 0000000..3f3837a --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Json-Mode-Default.xshd @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + " + " + + + ' + ' + + + : + + + , + + + + + + + , + + + + + + true + false + + + null + + + " + " + + + ' + ' + + + \{ + \} + + + \[ + \] + + + \b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)? + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Log.xshd b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Log.xshd new file mode 100644 index 0000000..d7c39d8 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/Log.xshd @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Info + Information + Trace + Debug + + + + Error + Warn + Warning + Exception + Fatal + + + + [Trace] + [Debug] + + + + [Info] + [Information] + + + + [Warn] + [Warning] + + + + [Error] + [Exception] + [Fatal] + + + + ' + ' + + + + " + " + + + + + + + \# + + + + \[ + \] + + + + [?,.;()\[\]{}+\-/%*<>^+~!|&]+ + + + + [?,.;()\[\]{}+\-/%*<>^+~!|&]+[0-9]+[ ?,.;()\[\]{}+\-/%*<>^+~!|&]+\n + + + + + [0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9] + + + + + [0-9][0-9]\:[0-9][0-9]\:[0-9][0-9]\.[0-9][0-9][0-9] + + + + + [0-9][0-9]\:[0-9][0-9]\:[0-9][0-9] + + + + + diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Dark.xshd b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Dark.xshd new file mode 100644 index 0000000..37484da --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Dark.xshd @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + <!-- + --> + + + <!\[CDATA\[ + ]]> + + + <!DOCTYPE + > + + + <\? + \?> + + + < + > + + + + " + "|(?=<) + + + ' + '|(?=<) + + [\d\w_\-\.]+(?=(\s*=)) + = + + + + + + + + & + [\w\d\#]+ + ; + + + + & + [\w\d\#]* + #missing ; + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Default.xshd b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Default.xshd new file mode 100644 index 0000000..75dfd88 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/Highlighting/XML-Mode-Default.xshd @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + <!-- + --> + + + <!\[CDATA\[ + ]]> + + + <!DOCTYPE + > + + + <\? + \?> + + + < + > + + + + " + "|(?=<) + + + ' + '|(?=<) + + [\d\w_\-\.]+(?=(\s*=)) + = + + + + + + + + & + [\w\d\#]+ + ; + + + + & + [\w\d\#]* + #missing ; + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Controls/AvalonEdit/HighlightingHelper.cs b/LuYao.Toolkit/Controls/AvalonEdit/HighlightingHelper.cs new file mode 100644 index 0000000..105dae4 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/HighlightingHelper.cs @@ -0,0 +1,51 @@ +using ICSharpCode.AvalonEdit.Highlighting; +using ICSharpCode.AvalonEdit.Highlighting.Xshd; +using LuYao.Toolkit.Behaviors; +using LuYao.Toolkit.Controls.AvalonEdit.Highlighting; +using LuYao.Toolkit.Themes; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml; + +namespace LuYao.Toolkit.Controls.AvalonEdit; + +public static class HighlightingHelper +{ + static HighlightingHelper() + { + HighlightingManager.Instance.RegisterHighlighting("Log", new[] { ".log" }, Defines.Log); + } + public static void RegisterHighlighting() + { + HighlightingManager.Instance.RegisterHighlighting("C#", new[] { ".cs" }, "CSharp-Mode"); + HighlightingManager.Instance.RegisterHighlighting("Json", new[] { ".json" }, "Json-Mode"); + HighlightingManager.Instance.RegisterHighlighting("XML", new[] { ".xml", ".baml" }, "XML-Mode"); + } + private static void RegisterHighlighting( + this HighlightingManager manager, + string name, + string[] extensions, + string resourceName) + { + switch (ToolkitConfig.Current.Theme) + { + case ThemeMode.Light: resourceName += "-Default"; break; + case ThemeMode.Dark: resourceName += "-Dark"; break; + } + + resourceName += ".xshd"; + + Stream resourceStream = typeof(HighlightingHelper).Assembly + .GetManifestResourceStream(typeof(Defines), resourceName); + + if (resourceStream != null) + { + using (resourceStream) + using (XmlTextReader reader = new XmlTextReader(resourceStream)) manager.RegisterHighlighting(name, extensions, HighlightingLoader.Load(reader, manager)); + } + } +} diff --git a/LuYao.Toolkit/Controls/AvalonEdit/JsonFoldingStrategy.cs b/LuYao.Toolkit/Controls/AvalonEdit/JsonFoldingStrategy.cs new file mode 100644 index 0000000..bffe8e7 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/JsonFoldingStrategy.cs @@ -0,0 +1,87 @@ +using ICSharpCode.AvalonEdit.Document; +using ICSharpCode.AvalonEdit.Folding; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Controls.AvalonEdit; + +/// +/// Allows producing foldings from a document based on braces. +/// +public class JsonFoldingStrategy +{ + /// + /// Gets/Sets the opening brace. The default value is '{'. + /// + public char[] OpeningBrace { get; set; } + + /// + /// Gets/Sets the closing brace. The default value is '}'. + /// + public char[] ClosingBrace { get; set; } + + /// + /// Creates a new BraceFoldingStrategy. + /// + public JsonFoldingStrategy() + { + this.OpeningBrace = new char[] { '{', '[' }; + this.ClosingBrace = new char[] { '}', ']' }; + } + + public void UpdateFoldings(FoldingManager manager, TextDocument document) + { + int firstErrorOffset; + IEnumerable newFoldings = CreateNewFoldings(document, out firstErrorOffset); + manager.UpdateFoldings(newFoldings, firstErrorOffset); + } + + /// + /// Create s for the specified document. + /// + public IEnumerable CreateNewFoldings(TextDocument document, out int firstErrorOffset) + { + firstErrorOffset = -1; + return CreateNewFoldings(document); + } + + /// + /// Create s for the specified document. + /// + public IEnumerable CreateNewFoldings(ITextSource document) + { + List newFoldings = new List(); + + Stack startOffsets = new Stack(); + int lastNewLineOffset = 0; + //char openingBrace = this.OpeningBrace; + //char closingBrace = this.ClosingBrace; + for (int i = 0; i < document.TextLength; i++) + { + char c = document.GetCharAt(i); + //if (c == openingBrace) + if (OpeningBrace.Contains(c)) + { + startOffsets.Push(i); + } + else if (ClosingBrace.Contains(c) && startOffsets.Count > 0) + { + int startOffset = startOffsets.Pop(); + // don't fold if opening and closing brace are on the same line + if (startOffset < lastNewLineOffset) + { + newFoldings.Add(new NewFolding(startOffset, i + 1)); + } + } + else if (c == '\n' || c == '\r') + { + lastNewLineOffset = i + 1; + } + } + newFoldings.Sort((a, b) => a.StartOffset.CompareTo(b.StartOffset)); + return newFoldings; + } +} diff --git a/LuYao.Toolkit/Controls/AvalonEdit/SearchPanel.xaml b/LuYao.Toolkit/Controls/AvalonEdit/SearchPanel.xaml new file mode 100644 index 0000000..0358276 --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/SearchPanel.xaml @@ -0,0 +1,64 @@ + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Controls/AvalonEdit/TruncateLongLinesElementGenerator.cs b/LuYao.Toolkit/Controls/AvalonEdit/TruncateLongLinesElementGenerator.cs new file mode 100644 index 0000000..3c507ca --- /dev/null +++ b/LuYao.Toolkit/Controls/AvalonEdit/TruncateLongLinesElementGenerator.cs @@ -0,0 +1,29 @@ +using ICSharpCode.AvalonEdit.Document; +using ICSharpCode.AvalonEdit.Rendering; + +namespace LuYao.Toolkit.Controls.AvalonEdit; + +public class TruncateLongLinesElementGenerator : VisualLineElementGenerator +{ + const int maxLength = 256; + const string ellipsis = "......"; + const int charactersAfterEllipsis = 50; + + public override int GetFirstInterestedOffset(int startOffset) + { + DocumentLine line = CurrentContext.VisualLine.LastDocumentLine; + if (line.Length > maxLength) + { + int ellipsisOffset = line.Offset + maxLength - charactersAfterEllipsis - ellipsis.Length; + if (startOffset <= ellipsisOffset) + return ellipsisOffset; + } + return -1; + } + + public override VisualLineElement ConstructElement(int offset) + { + var fmt = new FormattedTextElement(ellipsis, CurrentContext.VisualLine.LastDocumentLine.EndOffset - offset - charactersAfterEllipsis); + return fmt; + } +} diff --git a/LuYao.Toolkit/Controls/CodeEditor.Commands.cs b/LuYao.Toolkit/Controls/CodeEditor.Commands.cs new file mode 100644 index 0000000..44f384b --- /dev/null +++ b/LuYao.Toolkit/Controls/CodeEditor.Commands.cs @@ -0,0 +1,49 @@ +using System.Windows.Input; + +namespace LuYao.Toolkit.Controls; + +public partial class CodeEditor +{ + public static RoutedCommand OpenSearchCommand { get; } = new RoutedCommand(nameof(OpenSearchCommand), typeof(CodeEditor)); + public static RoutedCommand OpenAllFoldedCommand { get; } = new RoutedCommand(nameof(OpenAllFoldedCommand), typeof(CodeEditor)); + public static RoutedCommand CloseAllFoldedCommand { get; } = new RoutedCommand(nameof(CloseAllFoldedCommand), typeof(CodeEditor)); + + private void InitCommands() + { + this.CommandBindings.Add(new CommandBinding(OpenSearchCommand, OnOpenSearch)); + this.CommandBindings.Add(new CommandBinding(OpenAllFoldedCommand, OnOpenAllFolded, CanFolded)); + this.CommandBindings.Add(new CommandBinding(CloseAllFoldedCommand, OnCloseAllFolded, CanFolded)); + } + + private void CanFolded(object sender, CanExecuteRoutedEventArgs e) + { + e.CanExecute = !string.IsNullOrWhiteSpace(this.Text) && this._editorContext != null && this._editorContext.FoldingStrategy != null; + } + + private void OnCloseAllFolded(object sender, ExecutedRoutedEventArgs e) + { + if (this._foldingManager == null) return; + var isFrist = true; + foreach (var item in this._foldingManager.AllFoldings) + { + if (isFrist) + { + isFrist = false; + continue; + } + item.IsFolded = true; + } + } + + + private void OnOpenAllFolded(object sender, ExecutedRoutedEventArgs e) + { + if (this._foldingManager == null) return; + foreach (var item in this._foldingManager.AllFoldings) item.IsFolded = false; + } + + private void OnOpenSearch(object sender, ExecutedRoutedEventArgs e) + { + this._searchPanel.Open(); + } +} diff --git a/LuYao.Toolkit/Controls/CodeEditor.Context.cs b/LuYao.Toolkit/Controls/CodeEditor.Context.cs new file mode 100644 index 0000000..fd8d165 --- /dev/null +++ b/LuYao.Toolkit/Controls/CodeEditor.Context.cs @@ -0,0 +1,30 @@ +using ICSharpCode.AvalonEdit.Document; +using ICSharpCode.AvalonEdit.Folding; + +namespace LuYao.Toolkit.Controls; + +public partial class CodeEditor +{ + private class EditorContext + { + public Highlighting SyntaxHighlighting { get; } + public IFoldingStrategy FoldingStrategy { get; } + + public EditorContext(Highlighting syntaxHighlighting) + { + SyntaxHighlighting = syntaxHighlighting; + } + public EditorContext(Highlighting syntaxHighlighting, IFoldingStrategy foldingStrategy) : this(syntaxHighlighting) + { + this.FoldingStrategy = foldingStrategy; + } + } + private interface IFoldingStrategy + { + void UpdateFoldings(FoldingManager manager, TextDocument document); + } + + private class XmlFoldingStrategy : global::ICSharpCode.AvalonEdit.Folding.XmlFoldingStrategy, IFoldingStrategy { } + + private class JsonFoldingStrategy : AvalonEdit.JsonFoldingStrategy, IFoldingStrategy { } +} diff --git a/LuYao.Toolkit/Controls/CodeEditor.Highlighting.cs b/LuYao.Toolkit/Controls/CodeEditor.Highlighting.cs new file mode 100644 index 0000000..0df63b9 --- /dev/null +++ b/LuYao.Toolkit/Controls/CodeEditor.Highlighting.cs @@ -0,0 +1,13 @@ +namespace LuYao.Toolkit.Controls; + +public partial class CodeEditor +{ + public enum Highlighting + { + Unset, + CSharp, + Json, + Log, + Xml + } +} diff --git a/LuYao.Toolkit/Controls/CodeEditor.xaml b/LuYao.Toolkit/Controls/CodeEditor.xaml new file mode 100644 index 0000000..b132117 --- /dev/null +++ b/LuYao.Toolkit/Controls/CodeEditor.xaml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Controls/CodeEditor.xaml.cs b/LuYao.Toolkit/Controls/CodeEditor.xaml.cs new file mode 100644 index 0000000..d334175 --- /dev/null +++ b/LuYao.Toolkit/Controls/CodeEditor.xaml.cs @@ -0,0 +1,198 @@ +using ICSharpCode.AvalonEdit.Folding; +using ICSharpCode.AvalonEdit.Highlighting; +using ICSharpCode.AvalonEdit.Search; +using LuYao.Toolkit.Controls.Utils; +using System; +using System.Windows; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Controls +{ + /// + /// CodeEditor.xaml 的交互逻辑 + /// + public partial class CodeEditor : UserControl + { + private SearchPanel _searchPanel = null; + private EditorContext _editorContext = null; + private FoldingManager _foldingManager = null; + + public CodeEditor() + { + InitializeComponent(); + this._searchPanel = SearchPanel.Install(this.MainEditor); + this.MainEditor.TextChanged += MainEditor_TextChanged; + this.InitCommands(); + var cfg = ToolkitConfig.Current; + this.MainEditor.ShowLineNumbers = cfg.CodeEditorShowLineNumbers; + this.MainEditor.WordWrap = cfg.CodeEditorWordWrap; + + WeakEventManager.AddHandler(null, nameof(ToolkitConfig.Saved), this.ToolkitConfig_Saved); + } + + private void ToolkitConfig_Saved(object sender, EventArgs e) + { + SetWordWrap(this.WordWrap); + SetShowLineNumbers(this.ShowLineNumbers); + } + + private void MainEditor_TextChanged(object sender, EventArgs e) + { + this.Text = this.MainEditor.Text; + if (_foldingManager == null) return; + if (_editorContext?.FoldingStrategy != null) _editorContext.FoldingStrategy.UpdateFoldings(_foldingManager, this.MainEditor.Document); + } + + + private Highlighting _syntaxHighlighting; + + public Highlighting SyntaxHighlighting + { + get { return _syntaxHighlighting; } + set + { + if (_syntaxHighlighting != value) + { + _syntaxHighlighting = value; + this.MainEditor.SyntaxHighlighting = null; + this._editorContext = null; + if (this._foldingManager != null) + { + FoldingManager.Uninstall(this._foldingManager); + this._foldingManager = null; + } + switch (value) + { + case Highlighting.CSharp: + this.MainEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("C#"); + this._editorContext = new EditorContext(Highlighting.CSharp); + break; + case Highlighting.Json: + this.MainEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition(nameof(Highlighting.Json)); + this._editorContext = new EditorContext(Highlighting.Json, new JsonFoldingStrategy()); + break; + case Highlighting.Log: + this.MainEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition(nameof(Highlighting.Log)); + this._editorContext = new EditorContext(Highlighting.Log); + break; + case Highlighting.Xml: + this.MainEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("XML"); + this._editorContext = new EditorContext(Highlighting.Xml, new XmlFoldingStrategy()); + break; + } + if (this._editorContext != null && this._editorContext.FoldingStrategy != null) + { + this._foldingManager = FoldingManager.Install(this.MainEditor.TextArea); + } + } + } + } + + + public string Text + { + get { return (string)GetValue(TextProperty); } + set { SetValue(TextProperty, value); } + } + + public static readonly DependencyProperty TextProperty + = DependencyProperty.Register( + nameof(Text), + typeof(string), + typeof(CodeEditor), + new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnTextChanged) + ); + + private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var txt = e.NewValue as string; + if (d is CodeEditor editor && editor.MainEditor.Document != null && editor.MainEditor.Text != txt) + { + editor.MainEditor.Document.Text = txt ?? string.Empty; + if (editor.IsReadOnly && editor.IsAutoToEnd) + { + editor.MainEditor.ScrollToEnd(); + if (editor.MainEditor.WordWrap) editor.MainEditor.ScrollToEnd(); + } + } + } + + public static DependencyProperty IsReadOnlyProperty = DependencyProperty.Register("IsReadOnly", typeof(bool), typeof(CodeEditor), new FrameworkPropertyMetadata(Boxes.Box(false), OnIsReadOnlyChanged)); + + public bool IsReadOnly + { + get => (bool)GetValue(IsReadOnlyProperty); + set => SetValue(IsReadOnlyProperty, Boxes.Box(value)); + } + + private static void OnIsReadOnlyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is CodeEditor editor) editor.MainEditor.IsReadOnly = (bool)e.NewValue; + } + + public bool? WordWrap + { + get { return (bool?)GetValue(WordWrapProperty); } + set { SetValue(WordWrapProperty, value); } + } + + public static readonly DependencyProperty WordWrapProperty = DependencyProperty.Register("WordWrap", typeof(bool?), typeof(CodeEditor), new FrameworkPropertyMetadata(null, OnWordWrapChanged)); + + private static void OnWordWrapChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is CodeEditor editor) + { + editor.SetWordWrap(e.NewValue as bool?); + } + } + + public bool? ShowLineNumbers + { + get { return (bool?)GetValue(ShowLineNumbersProperty); } + set { SetValue(ShowLineNumbersProperty, value); } + } + + public static readonly DependencyProperty ShowLineNumbersProperty = DependencyProperty.Register("ShowLineNumbers", typeof(bool?), typeof(CodeEditor), new FrameworkPropertyMetadata(null, OnShowLineNumbersChanged)); + + private static void OnShowLineNumbersChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is CodeEditor editor) + { + editor.SetShowLineNumbers(e.NewValue as bool?); + } + } + + private void SetWordWrap(bool? v) + { + if (v != null) + { + this.MainEditor.WordWrap = v.Value; + } + else + { + this.MainEditor.WordWrap = ToolkitConfig.Current.CodeEditorWordWrap; + } + } + + private void SetShowLineNumbers(bool? v) + { + if (v != null) + { + this.MainEditor.ShowLineNumbers = v.Value; + } + else + { + this.MainEditor.ShowLineNumbers = ToolkitConfig.Current.CodeEditorShowLineNumbers; + } + } + + private bool _isAutoToEnd; + + public bool IsAutoToEnd + { + get => _isAutoToEnd; + set => _isAutoToEnd = value; + } + + } +} diff --git a/LuYao.Toolkit/Controls/DirectorySelector.xaml b/LuYao.Toolkit/Controls/DirectorySelector.xaml new file mode 100644 index 0000000..735b8ba --- /dev/null +++ b/LuYao.Toolkit/Controls/DirectorySelector.xaml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Controls/DirectorySelector.xaml.cs b/LuYao.Toolkit/Controls/DirectorySelector.xaml.cs new file mode 100644 index 0000000..4c69616 --- /dev/null +++ b/LuYao.Toolkit/Controls/DirectorySelector.xaml.cs @@ -0,0 +1,125 @@ +using Microsoft.Win32; +using Ookii.Dialogs.Wpf; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Controls +{ + /// + /// DirectorySelector.xaml 的交互逻辑 + /// + public partial class DirectorySelector : UserControl + { + public DirectorySelector() + { + InitializeComponent(); + } + public static readonly DependencyProperty PathProperty = + DependencyProperty.Register( + "Path", + typeof(string), + typeof(DirectorySelector), + new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault) + ); + public string Path + { + get => (string)GetValue(PathProperty); + set => SetValue(PathProperty, value); + } + + + + public ICommand Command + { + get { return (ICommand)GetValue(CommandProperty); } + set { SetValue(CommandProperty, value); } + } + + // Using a DependencyProperty as the backing store for Command. This enables animation, styling, binding, etc... + public static readonly DependencyProperty CommandProperty = + DependencyProperty.Register("Command", typeof(ICommand), typeof(DirectorySelector), new PropertyMetadata(default(ICommand))); + + + + public string DialogTitle { get; set; } + + private void OpenDirectoryButton_Click(object sender, RoutedEventArgs e) + { + OpenDialog(); + } + private void OpenDialog() + { + VistaFolderBrowserDialog dialog = new VistaFolderBrowserDialog { SelectedPath = Path, Multiselect = false }; + if (!string.IsNullOrWhiteSpace(DialogTitle)) + { + dialog.Description = DialogTitle; + dialog.UseDescriptionForTitle = true; + } + if (dialog.ShowDialog() == true) + { + Path = dialog.SelectedPath; + var cmd = this.Command; + if (cmd != null && cmd.CanExecute(this.Path)) + { + cmd.Execute(this.Path); + } + } + } + + private void PathTextBox_PreviewDragOver(object sender, DragEventArgs e) + { + e.Effects = DragDropEffects.None; + if ( + e.Data.GetDataPresent(DataFormats.FileDrop) + && e.Data.GetData(DataFormats.FileDrop) is string[] dirs + && dirs.Length == 1 + ) + { + var path = dirs[0]; + var match = Directory.Exists(path); + if (match) + { + e.Effects = DragDropEffects.Copy; + } + } + + e.Handled = true; + } + + private void PathTextBox_PreviewDrop(object sender, DragEventArgs e) + { + + e.Handled = true; + if (e.Data.GetData(DataFormats.FileDrop) is string[] dirs && dirs.Length > 0) + { + Path = dirs[0]; + } + } + + private void OpenDirectory_Click(object sender, RoutedEventArgs e) + { + if (string.IsNullOrWhiteSpace(Path)) return; + Process.Start("explorer", $"\"{Path}\""); + } + + private void CopyPath_Click(object sender, RoutedEventArgs e) + { + if (string.IsNullOrWhiteSpace(Path)) return; + Services.ClipboardService.CopyText(Path); + } + } +} diff --git a/LuYao.Toolkit/Controls/FileSelector.xaml b/LuYao.Toolkit/Controls/FileSelector.xaml new file mode 100644 index 0000000..cc9cea3 --- /dev/null +++ b/LuYao.Toolkit/Controls/FileSelector.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Controls/FileSelector.xaml.cs b/LuYao.Toolkit/Controls/FileSelector.xaml.cs new file mode 100644 index 0000000..e96af68 --- /dev/null +++ b/LuYao.Toolkit/Controls/FileSelector.xaml.cs @@ -0,0 +1,133 @@ +using LuYao.Toolkit.IO; +using LuYao.Toolkit.Services; +using NewLife; +using NewLife.Log; +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Windows; +using System.Windows.Controls; +using Ookii.Dialogs.Wpf; + +namespace LuYao.Toolkit.Controls; + +/// +/// FileSelector.xaml 的交互逻辑 +/// +public partial class FileSelector : UserControl +{ + public FileSelector() + { + InitializeComponent(); + } + public FileType FileType { get; set; } = FileType.All; + + public string FileTypeDescription { get; set; } + public string CustomerExtensions { get; set; } + public string DialogTitle { get; set; } + + public static readonly DependencyProperty FilePathProperty = DependencyProperty.Register(nameof(FilePath), typeof(string), typeof(FileSelector), new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); + + public string FilePath + { + get => (string)GetValue(FilePathProperty); + set => SetValue(FilePathProperty, value); + } + + + public static readonly DependencyProperty PlaceholderProperty = DependencyProperty.Register(nameof(Placeholder), typeof(string), typeof(FileSelector), new FrameworkPropertyMetadata("可将文件拖拽至此", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); + + public string Placeholder + { + get => (string)GetValue(PlaceholderProperty); + set => SetValue(PlaceholderProperty, value); + } + private void OpenFolderButton_Click(object sender, RoutedEventArgs e) + { + var dialog = new VistaOpenFileDialog { Multiselect = false, Title = DialogTitle }; + + dialog.Filter = this.FileType.BuildFilter(this.CustomerExtensions); + + if (dialog.ShowDialog() == true) + { + SelectFile(dialog.FileName); + } + } + + private void SelectFile(string file) + { + FilePath = file; + } + + private void OpenFolder_Click(object sender, RoutedEventArgs e) + { + if (string.IsNullOrWhiteSpace(FilePath)) return; + + var arg = $"/select,\"{FilePath.Replace("\"", "\"\"")}\""; + try + { + Process.Start("explorer", arg); + } + catch (Exception exception) + { + XTrace.WriteLine("打开文件失败,路径:{0}", FilePath); + XTrace.WriteException(exception); + } + } + + private void CopyFullName_Click(object sender, RoutedEventArgs e) + { + if (string.IsNullOrWhiteSpace(FilePath)) return; + + ClipboardService.CopyText(FilePath); + } + + private void CopyFileName_Click(object sender, RoutedEventArgs e) + { + if (string.IsNullOrWhiteSpace(FilePath)) return; + + var fn = System.IO.Path.GetFileName(FilePath); + if (string.IsNullOrWhiteSpace(fn)) return; + + ClipboardService.CopyText(fn); + } + + private void FileNameTextBox_PreviewDrop(object sender, DragEventArgs e) + { + if (e.Data.GetData(DataFormats.FileDrop) is string[] files) + { + var file = files.First(); + SelectFile(file); + } + } + + private void FileNameTextBox_PreviewDragOver(object sender, DragEventArgs e) + { + e.Effects = DragDropEffects.None; + if (e.Data.GetDataPresent(DataFormats.FileDrop)) + { + if (e.Data.GetData(DataFormats.FileDrop) is string[] files) + { + var file = files.First(); + if (File.Exists(file)) + { + if (this.FileType.TryGetExtensions(this.CustomerExtensions, out var extensions)) + { + var ext = Path.GetExtension(file) ?? string.Empty; + if (string.IsNullOrWhiteSpace(ext) || extensions.Contains(ext, StringComparer.OrdinalIgnoreCase)) + { + e.Effects = DragDropEffects.Copy; + } + } + else + { + e.Effects = DragDropEffects.Copy; + } + } + } + } + + e.Handled = true; + } +} diff --git a/LuYao.Toolkit/Controls/FormItemContainer.cs b/LuYao.Toolkit/Controls/FormItemContainer.cs new file mode 100644 index 0000000..587526c --- /dev/null +++ b/LuYao.Toolkit/Controls/FormItemContainer.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Controls; + +public class FormItemContainer : ContentControl +{ + static FormItemContainer() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(FormItemContainer), new FrameworkPropertyMetadata(typeof(FormItemContainer))); + } + public static readonly DependencyProperty PrefixProperty = + DependencyProperty.Register("Prefix", typeof(string), typeof(FormItemContainer) + , new PropertyMetadata("标签信息:")); + + public static readonly DependencyProperty PrefixWidthProperty = + DependencyProperty.Register("PrefixWidth", typeof(double), typeof(FormItemContainer), + new PropertyMetadata(100.0d)); + public string Prefix + { + get => (string)GetValue(PrefixProperty); + set => SetValue(PrefixProperty, value); + } + + + public double PrefixWidth + { + get => (double)GetValue(PrefixWidthProperty); + set => SetValue(PrefixWidthProperty, value); + } + + protected override void OnMouseDown(MouseButtonEventArgs e) + { + if (Content is UIElement element) + { + element.Focus(); + } + + base.OnMouseDown(e); + } +} diff --git a/LuYao.Toolkit/Controls/MasterDetailLayout.cs b/LuYao.Toolkit/Controls/MasterDetailLayout.cs new file mode 100644 index 0000000..a8ea24e --- /dev/null +++ b/LuYao.Toolkit/Controls/MasterDetailLayout.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Controls; + +public class MasterDetailLayout : Expander +{ + static MasterDetailLayout() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(MasterDetailLayout), new FrameworkPropertyMetadata(typeof(MasterDetailLayout))); + } + public MasterDetailLayout() + { + this.CommandBindings.Add(new CommandBinding(LuYaoCommands.CloseDetailCommand, this.HandleCloseDetailCommand)); + } + + private void HandleCloseDetailCommand(object sender, ExecutedRoutedEventArgs e) + { + this.IsExpanded = false; + } + + public double MinDetailWidth + { + get { return (double)GetValue(MinDetailWidthProperty); } + set { SetValue(MinDetailWidthProperty, value); } + } + public double MaxDetailWidth + { + get { return (double)GetValue(MaxDetailWidthProperty); } + set { SetValue(MaxDetailWidthProperty, value); } + } + + public static readonly DependencyProperty MinDetailWidthProperty = DependencyProperty.Register("MinDetailWidth", typeof(double), typeof(MasterDetailLayout), new FrameworkPropertyMetadata(350d)); + public static readonly DependencyProperty MaxDetailWidthProperty = DependencyProperty.Register("MaxDetailWidth", typeof(double), typeof(MasterDetailLayout), new FrameworkPropertyMetadata(400d)); +} diff --git a/LuYao.Toolkit/Controls/TextBlockWithIconBox.cs b/LuYao.Toolkit/Controls/TextBlockWithIconBox.cs new file mode 100644 index 0000000..77f1804 --- /dev/null +++ b/LuYao.Toolkit/Controls/TextBlockWithIconBox.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Controls +{ + public class TextBlockWithIconBox : Control + { + static TextBlockWithIconBox() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(TextBlockWithIconBox), new FrameworkPropertyMetadata(typeof(TextBlockWithIconBox))); + } + + + public ImageSource Icon + { + get { return (ImageSource)GetValue(IconProperty); } + set { SetValue(IconProperty, value); } + } + + public static readonly DependencyProperty IconProperty = + DependencyProperty.Register("Icon", typeof(ImageSource), typeof(TextBlockWithIconBox), new PropertyMetadata(null)); + + public string Text + { + get { return (string)GetValue(TextProperty); } + set { SetValue(TextProperty, value); } + } + + public static readonly DependencyProperty TextProperty = + DependencyProperty.Register("Text", typeof(string), typeof(TextBlockWithIconBox), new PropertyMetadata(string.Empty)); + + } +} diff --git a/LuYao.Toolkit/Controls/Utils/Boxes.cs b/LuYao.Toolkit/Controls/Utils/Boxes.cs new file mode 100644 index 0000000..95ed7b9 --- /dev/null +++ b/LuYao.Toolkit/Controls/Utils/Boxes.cs @@ -0,0 +1,18 @@ +namespace LuYao.Toolkit.Controls.Utils; + +internal static class Boxes +{ + public static readonly object True = true; + + public static readonly object False = false; + + public static object Box(bool value) + { + if (!value) + { + return False; + } + + return True; + } +} \ No newline at end of file diff --git a/LuYao.Toolkit/Controls/WindowToolbox.cs b/LuYao.Toolkit/Controls/WindowToolbox.cs new file mode 100644 index 0000000..e8e7f41 --- /dev/null +++ b/LuYao.Toolkit/Controls/WindowToolbox.cs @@ -0,0 +1,165 @@ +using CommunityToolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Controls +{ + /// + /// 按照步骤 1a 或 1b 操作,然后执行步骤 2 以在 XAML 文件中使用此自定义控件。 + /// + /// 步骤 1a) 在当前项目中存在的 XAML 文件中使用该自定义控件。 + /// 将此 XmlNamespace 特性添加到要使用该特性的标记文件的根 + /// 元素中: + /// + /// xmlns:MyNamespace="clr-namespace:LuYao.Toolkit.Controls" + /// + /// + /// 步骤 1b) 在其他项目中存在的 XAML 文件中使用该自定义控件。 + /// 将此 XmlNamespace 特性添加到要使用该特性的标记文件的根 + /// 元素中: + /// + /// xmlns:MyNamespace="clr-namespace:LuYao.Toolkit.Controls;assembly=LuYao.Toolkit.Controls" + /// + /// 您还需要添加一个从 XAML 文件所在的项目到此项目的项目引用, + /// 并重新生成以避免编译错误: + /// + /// 在解决方案资源管理器中右击目标项目,然后依次单击 + /// “添加引用”->“项目”->[浏览查找并选择此项目] + /// + /// + /// 步骤 2) + /// 继续操作并在 XAML 文件中使用控件。 + /// + /// + /// + /// + public class WindowToolbox : Control + { + static WindowToolbox() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(WindowToolbox), new FrameworkPropertyMetadata(typeof(WindowToolbox))); + } + + public WindowToolbox() + { + this.TopmostCommand = new RelayCommand(this.OnTopmostClick); + this.MinimizeCommand = new RelayCommand(this.OnMinimizeClick); + this.MaximizeCommand = new RelayCommand(this.OnMaximizeClick); + this.CloseCommand = new RelayCommand(this.OnCloseClick); + } + public bool MaximizeBox + { + get { return (bool)GetValue(MaximizeBoxProperty); } + set { SetValue(MaximizeBoxProperty, value); } + } + + public static readonly DependencyProperty MaximizeBoxProperty = DependencyProperty.Register(nameof(MaximizeBox), typeof(bool), typeof(WindowToolbox), new PropertyMetadata(true)); + + + public bool MinimizeBox + { + get { return (bool)GetValue(MinimizeBoxProperty); } + set { SetValue(MinimizeBoxProperty, value); } + } + + public static readonly DependencyProperty MinimizeBoxProperty = + DependencyProperty.Register("MinimizeBox", typeof(bool), typeof(WindowToolbox), new PropertyMetadata(true)); + + + + public bool TopmostBox + { + get { return (bool)GetValue(TopmostBoxProperty); } + set { SetValue(TopmostBoxProperty, value); } + } + + // Using a DependencyProperty as the backing store for TopmostBox. This enables animation, styling, binding, etc... + public static readonly DependencyProperty TopmostBoxProperty = + DependencyProperty.Register("TopmostBox", typeof(bool), typeof(WindowToolbox), new PropertyMetadata(true)); + + private void OnTopmostClick() + { + var win = Window.GetWindow(this); + win.Topmost = !win.Topmost; + } + private void OnMinimizeClick() + { + var win = Window.GetWindow(this); + win.WindowState = WindowState.Minimized; + } + private void OnMaximizeClick() + { + var win = Window.GetWindow(this); + if(win.WindowState == WindowState.Maximized) + { + win.WindowState = WindowState.Normal; + } + else + { + win.WindowState = WindowState.Maximized; + } + } + private void OnCloseClick() + { + var win = Window.GetWindow(this); + win.Close(); + } + + + public ICommand TopmostCommand + { + get { return (ICommand)GetValue(TopmostCommandProperty); } + set { SetValue(TopmostCommandProperty, value); } + } + + public static readonly DependencyProperty TopmostCommandProperty = DependencyProperty.Register("TopmostCommand", typeof(ICommand), typeof(WindowToolbox), new PropertyMetadata(null)); + + + + public ICommand MinimizeCommand + { + get { return (ICommand)GetValue(MinimizeCommandProperty); } + set { SetValue(MinimizeCommandProperty, value); } + } + + public static readonly DependencyProperty MinimizeCommandProperty = + DependencyProperty.Register("MinimizeCommand", typeof(ICommand), typeof(WindowToolbox), new PropertyMetadata(null)); + + + + public ICommand MaximizeCommand + { + get { return (ICommand)GetValue(MaximizeCommandProperty); } + set { SetValue(MaximizeCommandProperty, value); } + } + + public static readonly DependencyProperty MaximizeCommandProperty = + DependencyProperty.Register("MaximizeCommand", typeof(ICommand), typeof(WindowToolbox), new PropertyMetadata(null)); + + + + public ICommand CloseCommand + { + get { return (ICommand)GetValue(CloseCommandProperty); } + set { SetValue(CloseCommandProperty, value); } + } + + public static readonly DependencyProperty CloseCommandProperty = + DependencyProperty.Register("CloseCommand", typeof(ICommand), typeof(WindowToolbox), new PropertyMetadata(null)); + + + + } +} diff --git a/LuYao.Toolkit/Converters/ByteCountToDisplaySizeConverter.cs b/LuYao.Toolkit/Converters/ByteCountToDisplaySizeConverter.cs new file mode 100644 index 0000000..2a1e228 --- /dev/null +++ b/LuYao.Toolkit/Converters/ByteCountToDisplaySizeConverter.cs @@ -0,0 +1,33 @@ +using LuYao.IO; +using NewLife.Data; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters +{ + [ValueConversion(typeof(int), typeof(string))] + [ValueConversion(typeof(long), typeof(string))] + public class ByteCountToDisplaySizeConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is int || value is long || value is uint || value is ulong) + { + var len = System.Convert.ToInt64(value); + return FileUtil.ByteCountToDisplaySize(len); + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/LuYao.Toolkit/Converters/DateTimeToRelativeConverter.cs b/LuYao.Toolkit/Converters/DateTimeToRelativeConverter.cs new file mode 100644 index 0000000..b2b9c72 --- /dev/null +++ b/LuYao.Toolkit/Converters/DateTimeToRelativeConverter.cs @@ -0,0 +1,19 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters; + +public class DateTimeToRelativeConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is DateTime time) return DateTimeUtils.GetRelative(time); + return string.Empty; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/LuYao.Toolkit/Converters/EnumToBooleanConverter.cs b/LuYao.Toolkit/Converters/EnumToBooleanConverter.cs new file mode 100644 index 0000000..92a45ed --- /dev/null +++ b/LuYao.Toolkit/Converters/EnumToBooleanConverter.cs @@ -0,0 +1,39 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using System.Windows; + +namespace LuYao.Toolkit.Converters; + +public class EnumToBooleanConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var ParameterString = parameter as string; + if (ParameterString == null) return DependencyProperty.UnsetValue; + + if (Enum.IsDefined(value.GetType(), value) == false) return DependencyProperty.UnsetValue; + + object paramvalue = Enum.Parse(value.GetType(), ParameterString); + return paramvalue.Equals(value); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + var ParameterString = parameter as string; + var valueAsBool = (bool)value; + + if (ParameterString == null || !valueAsBool) + { + try + { + return Enum.Parse(targetType, "0"); + } + catch (Exception) + { + return DependencyProperty.UnsetValue; + } + } + return Enum.Parse(targetType, ParameterString); + } +} diff --git a/LuYao.Toolkit/Converters/EnumToDescriptionConverter.cs b/LuYao.Toolkit/Converters/EnumToDescriptionConverter.cs new file mode 100644 index 0000000..93849ea --- /dev/null +++ b/LuYao.Toolkit/Converters/EnumToDescriptionConverter.cs @@ -0,0 +1,27 @@ +using NewLife; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters; + +public class EnumToDescriptionConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is Enum e) + { + return e.GetDescription(); + } + return string.Empty; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/LuYao.Toolkit/Converters/EnumToVisibilityConverter.cs b/LuYao.Toolkit/Converters/EnumToVisibilityConverter.cs new file mode 100644 index 0000000..6de7936 --- /dev/null +++ b/LuYao.Toolkit/Converters/EnumToVisibilityConverter.cs @@ -0,0 +1,26 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters +{ + public class EnumToVisibilityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var ParameterString = parameter as string; + if (ParameterString == null) return DependencyProperty.UnsetValue; + + if (Enum.IsDefined(value.GetType(), value) == false) return DependencyProperty.UnsetValue; + + object paramvalue = Enum.Parse(value.GetType(), ParameterString); + return paramvalue.Equals(value) ? Visibility.Visible : Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/LuYao.Toolkit/Converters/FunctionBackgroundConverter.cs b/LuYao.Toolkit/Converters/FunctionBackgroundConverter.cs new file mode 100644 index 0000000..4d5aa52 --- /dev/null +++ b/LuYao.Toolkit/Converters/FunctionBackgroundConverter.cs @@ -0,0 +1,125 @@ +using LuYao.Toolkit.Channels; +using LuYao.Toolkit.Tabs.Navs; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using System.Windows.Media; + +namespace LuYao.Toolkit.Converters +{ + public class FunctionBackgroundConverter : IValueConverter + { + private static readonly IReadOnlyList BrusheList = new SolidColorBrush[] + { + new SolidColorBrush(Color.FromArgb(255,0,0,255)), + new SolidColorBrush(Color.FromArgb(255,0,98,102)), + new SolidColorBrush(Color.FromArgb(255,0,123,67)), + new SolidColorBrush(Color.FromArgb(255,0,148,50)), + new SolidColorBrush(Color.FromArgb(255,0,148,200)), + new SolidColorBrush(Color.FromArgb(255,0,149,217)), + new SolidColorBrush(Color.FromArgb(255,0,163,175)), + new SolidColorBrush(Color.FromArgb(255,0,164,151)), + new SolidColorBrush(Color.FromArgb(255,0,168,255)), + new SolidColorBrush(Color.FromArgb(255,0,181,204)), + new SolidColorBrush(Color.FromArgb(255,0,184,148)), + new SolidColorBrush(Color.FromArgb(255,0,206,201)), + new SolidColorBrush(Color.FromArgb(255,1,152,117)), + new SolidColorBrush(Color.FromArgb(255,1,163,164)), + new SolidColorBrush(Color.FromArgb(255,3,201,169)), + new SolidColorBrush(Color.FromArgb(255,6,82,221)), + new SolidColorBrush(Color.FromArgb(255,9,132,227)), + new SolidColorBrush(Color.FromArgb(255,10,189,227)), + new SolidColorBrush(Color.FromArgb(255,16,172,132)), + new SolidColorBrush(Color.FromArgb(255,18,137,167)), + new SolidColorBrush(Color.FromArgb(255,34,166,179)), + new SolidColorBrush(Color.FromArgb(255,39,60,117)), + new SolidColorBrush(Color.FromArgb(255,39,146,195)), + new SolidColorBrush(Color.FromArgb(255,44,169,225)), + new SolidColorBrush(Color.FromArgb(255,46,134,222)), + new SolidColorBrush(Color.FromArgb(255,46,213,115)), + new SolidColorBrush(Color.FromArgb(255,52,31,151)), + new SolidColorBrush(Color.FromArgb(255,52,158,105)), + new SolidColorBrush(Color.FromArgb(255,56,161,219)), + new SolidColorBrush(Color.FromArgb(255,56,180,139)), + new SolidColorBrush(Color.FromArgb(255,71,88,92)), + new SolidColorBrush(Color.FromArgb(255,72,52,212)), + new SolidColorBrush(Color.FromArgb(255,72,126,176)), + new SolidColorBrush(Color.FromArgb(255,76,209,55)), + new SolidColorBrush(Color.FromArgb(255,77,5,232)), + new SolidColorBrush(Color.FromArgb(255,78,205,196)), + new SolidColorBrush(Color.FromArgb(255,89,88,87)), + new SolidColorBrush(Color.FromArgb(255,106,176,76)), + new SolidColorBrush(Color.FromArgb(255,108,92,231)), + new SolidColorBrush(Color.FromArgb(255,111,30,81)), + new SolidColorBrush(Color.FromArgb(255,113,128,142)), + new SolidColorBrush(Color.FromArgb(255,127,143,166)), + new SolidColorBrush(Color.FromArgb(255,131,52,113)), + new SolidColorBrush(Color.FromArgb(255,131,149,167)), + new SolidColorBrush(Color.FromArgb(255,145,61,136)), + new SolidColorBrush(Color.FromArgb(255,153,128,250)), + new SolidColorBrush(Color.FromArgb(255,156,136,255)), + new SolidColorBrush(Color.FromArgb(255,163,203,56)), + new SolidColorBrush(Color.FromArgb(255,165,55,253)), + new SolidColorBrush(Color.FromArgb(255,181,52,113)), + new SolidColorBrush(Color.FromArgb(255,190,46,221)), + new SolidColorBrush(Color.FromArgb(255,211,56,28)), + new SolidColorBrush(Color.FromArgb(255,214,48,49)), + new SolidColorBrush(Color.FromArgb(255,217,51,63)), + new SolidColorBrush(Color.FromArgb(255,217,128,250)), + new SolidColorBrush(Color.FromArgb(255,225,112,85)), + new SolidColorBrush(Color.FromArgb(255,225,123,52)), + new SolidColorBrush(Color.FromArgb(255,230,0,51)), + new SolidColorBrush(Color.FromArgb(255,232,65,24)), + new SolidColorBrush(Color.FromArgb(255,232,67,147)), + new SolidColorBrush(Color.FromArgb(255,233,82,149)), + new SolidColorBrush(Color.FromArgb(255,234,32,39)), + new SolidColorBrush(Color.FromArgb(255,234,85,6)), + new SolidColorBrush(Color.FromArgb(255,235,77,75)), + new SolidColorBrush(Color.FromArgb(255,235,98,56)), + new SolidColorBrush(Color.FromArgb(255,237,76,103)), + new SolidColorBrush(Color.FromArgb(255,238,82,83)), + new SolidColorBrush(Color.FromArgb(255,238,90,36)), + new SolidColorBrush(Color.FromArgb(255,240,147,43)), + new SolidColorBrush(Color.FromArgb(255,243,104,224)), + new SolidColorBrush(Color.FromArgb(255,245,36,67)), + new SolidColorBrush(Color.FromArgb(255,245,171,53)), + new SolidColorBrush(Color.FromArgb(255,246,36,89)), + new SolidColorBrush(Color.FromArgb(255,247,159,31)), + new SolidColorBrush(Color.FromArgb(255,247,202,24)), + new SolidColorBrush(Color.FromArgb(255,251,197,49)), + new SolidColorBrush(Color.FromArgb(255,253,121,168)), + new SolidColorBrush(Color.FromArgb(255,253,203,110)), + new SolidColorBrush(Color.FromArgb(255,255,71,209)), + new SolidColorBrush(Color.FromArgb(255,255,107,129)), + new SolidColorBrush(Color.FromArgb(255,255,159,67)), + }; + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is FunctionItem item) + { + var code = Math.Abs(item.Id.GetHashCode()); + var len = BrusheList.Count; + var idx = code % len; + return BrusheList[idx]; + } + if(value is NavItem nav) + { + var code = Math.Abs(nav.Url.GetDeterministicHashCode()); + var len = BrusheList.Count; + var idx = code % len; + return BrusheList[idx]; + } + return Brushes.Black; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/LuYao.Toolkit/Converters/FunctionBackgroundConverter.linq b/LuYao.Toolkit/Converters/FunctionBackgroundConverter.linq new file mode 100644 index 0000000..91050b0 --- /dev/null +++ b/LuYao.Toolkit/Converters/FunctionBackgroundConverter.linq @@ -0,0 +1,19 @@ + + System.Drawing + + +var colors = new string[] { +"#006266","#007B43","#009432","#0094C8","#0095D9","#00A3AF","#00A497","#00a8ff","#00b5cc","#00b894","#00cec9","#019875","#01a3a4","#03c9a9","#0652DD","#0984e3","#0abde3","#10ac84","#1289A7","#22a6b3","#273c75","#2792C3","#2CA9E1","#2e86de","#2ed573","#341f97","#349e69","#38A1DB","#38B48B","#47585C","#4834d4","#487eb0","#4cd137","#4d05e8","#4ecdc4","#595857","#6ab04c","#6c5ce7","#6F1E51","#71808E","#7f8fa6","#833471","#8395a7","#913d88","#9980FA","#9c88ff","#A3CB38","#a537fd","#B53471","#be2edd","#D3381C","#d63031","#D9333F","#D980FA","#e17055","#E17B34","#E60033","#e84118","#e84393","#E95295","#EA2027","#EA5506","#eb4d4b","#EB6238","#ED4C67","#ee5253","#EE5A24","#f0932b","#f368e0","#f52443","#f5ab35","#f62459","#F79F1F","#f7ca18","#fbc531","#fd79a8","#fdcb6e","#ff47d1","#ff6b81","#ff9f43","blue" +}; +var converter = new ColorConverter(); +var list = new SortedSet(); +foreach (var color in colors) +{ + var item =(Color) converter.ConvertFrom(color); + list.Add(item.ToArgb()); +} +foreach (var i in list) +{ + var item = Color.FromArgb(i); + Console.WriteLine("new SolidColorBrush(Color.FromArgb({0},{1},{2},{3})),",item.A,item.R,item.G,item.B); +} \ No newline at end of file diff --git a/LuYao.Toolkit/Converters/LanguageCodeToNameConverter.cs b/LuYao.Toolkit/Converters/LanguageCodeToNameConverter.cs new file mode 100644 index 0000000..6ac440a --- /dev/null +++ b/LuYao.Toolkit/Converters/LanguageCodeToNameConverter.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters +{ + public class LanguageCodeToNameConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string str && !string.IsNullOrWhiteSpace(str)) + { + switch (str.ToUpperInvariant()) + { + case "EN": return "英语"; + case "FR": return "法语"; + case "DE": return "德语"; + case "IT": return "意大利"; + case "ES": return "西班牙"; + case "PT": return "葡萄牙"; + case "NL": return "荷兰语"; + case "PL": return "波兰语"; + case "JA": return "日语"; + case "KO": return "韩语"; + case "AR": return "阿拉伯"; + case "TR": return "土耳其"; + case "TH": return "泰文"; + case "MS": return "马来语"; + case "VI": return "越南语"; + case "SV": return "瑞典语"; + case "ID": return "印尼语"; + case "ZH": + case "ZH-CN": + return "中文"; + default: return str; + } + } + return value; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/LuYao.Toolkit/Converters/PathToFileNameConverter.cs b/LuYao.Toolkit/Converters/PathToFileNameConverter.cs new file mode 100644 index 0000000..dc2e9ab --- /dev/null +++ b/LuYao.Toolkit/Converters/PathToFileNameConverter.cs @@ -0,0 +1,21 @@ +using System; +using System.Globalization; +using System.IO; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters; + +[ValueConversion(typeof(string), typeof(string))] +public class PathToFileNameConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string str) return Path.GetFileName(str); + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/LuYao.Toolkit/Converters/PathToIconConverter.cs b/LuYao.Toolkit/Converters/PathToIconConverter.cs new file mode 100644 index 0000000..fcd3a7b --- /dev/null +++ b/LuYao.Toolkit/Converters/PathToIconConverter.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using System.Windows.Interop; +using System.Windows.Media.Imaging; +using System.Windows.Media; +using System.Windows; +using System.IO; + +namespace LuYao.Toolkit.Converters; + +[ValueConversion(typeof(string), typeof(ImageSource))] +public class PathToIconConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string fn && File.Exists(fn)) + { + //return Path.GetFileName(str); + var icon = Icon.ExtractAssociatedIcon(fn); + if (icon != null) + { + using (var bitmap = icon.ToBitmap()) + { + //ensure Bitmap is disposed of after usefulness is fulfilled. + var bmpPt = bitmap.GetHbitmap(); + try + { + var bitmapSource = + Imaging.CreateBitmapSourceFromHBitmap( + bmpPt, + IntPtr.Zero, + Int32Rect.Empty, + BitmapSizeOptions.FromEmptyOptions()); + + //freeze bitmapSource and clear memory to avoid memory leaks + bitmapSource.Freeze(); + return bitmapSource; + } + finally + { + //done in a finally block to ensure this memory is not leaked regardless of exceptions. + DeleteObject(bmpPt); + } + } + } + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + + [DllImport("gdi32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + internal static extern bool DeleteObject(IntPtr value); +} diff --git a/LuYao.Toolkit/Converters/RegexMatchPositionConverter.cs b/LuYao.Toolkit/Converters/RegexMatchPositionConverter.cs new file mode 100644 index 0000000..7503963 --- /dev/null +++ b/LuYao.Toolkit/Converters/RegexMatchPositionConverter.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters; + +public class RegexMatchPositionConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is Match m) + { + return $"({m.Index},{m.Length})"; + } + if (value is Group g) + { + return $"({g.Index},{g.Length})"; + } + if (value is Capture c) + { + return $"({c.Index},{c.Length})"; + } + return string.Empty; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/LuYao.Toolkit/Converters/SingleLineConverter.cs b/LuYao.Toolkit/Converters/SingleLineConverter.cs new file mode 100644 index 0000000..8bf13ec --- /dev/null +++ b/LuYao.Toolkit/Converters/SingleLineConverter.cs @@ -0,0 +1,26 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters; + +public class SingleLineConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string str && !string.IsNullOrWhiteSpace(str)) + { + return str + .Replace("\n", string.Empty) + .Replace("\r", string.Empty) + .Trim(); + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/LuYao.Toolkit/Converters/StringIsNotNullOrEmptyConverter.cs b/LuYao.Toolkit/Converters/StringIsNotNullOrEmptyConverter.cs new file mode 100644 index 0000000..26bebc7 --- /dev/null +++ b/LuYao.Toolkit/Converters/StringIsNotNullOrEmptyConverter.cs @@ -0,0 +1,24 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters; + +[ValueConversion(typeof(string), typeof(bool))] +public class StringIsNotNullOrEmptyConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string str) + { + return !string.IsNullOrWhiteSpace(str); + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/LuYao.Toolkit/Converters/TruncateStringConverter.cs b/LuYao.Toolkit/Converters/TruncateStringConverter.cs new file mode 100644 index 0000000..b05a156 --- /dev/null +++ b/LuYao.Toolkit/Converters/TruncateStringConverter.cs @@ -0,0 +1,26 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace LuYao.Toolkit.Converters; + +public class TruncateStringConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var max = 500; + if (parameter is int i) max = i; + if (max <= 0) max = 500; + if (value is string str) + { + if (str.Length > max) return str.Substring(0, max); + return str; + } + return value; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/LuYao.Toolkit/Dialogs/DialogWindow.xaml b/LuYao.Toolkit/Dialogs/DialogWindow.xaml new file mode 100644 index 0000000..d884661 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/DialogWindow.xaml @@ -0,0 +1,12 @@ + + diff --git a/LuYao.Toolkit/Dialogs/DialogWindow.xaml.cs b/LuYao.Toolkit/Dialogs/DialogWindow.xaml.cs new file mode 100644 index 0000000..e31978b --- /dev/null +++ b/LuYao.Toolkit/Dialogs/DialogWindow.xaml.cs @@ -0,0 +1,40 @@ +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Dialogs; + +/// +/// DialogWindow.xaml 的交互逻辑 +/// +public partial class DialogWindow : IDialogWindow +{ + public DialogWindow() + { + InitializeComponent(); + this.Loaded += DialogWindow_Loaded; + } + + private void DialogWindow_Loaded(object sender, RoutedEventArgs e) + { + Debug.WriteLine(this.Title); + } + + /// + /// The of the dialog. + /// + public IDialogResult Result { get; set; } + +} diff --git a/LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml b/LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml new file mode 100644 index 0000000..e2c3b50 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml.cs b/LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml.cs new file mode 100644 index 0000000..c76cd25 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/MultiboxingDialog.xaml.cs @@ -0,0 +1,33 @@ +using LuYao.Toolkit.Services; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Dialogs +{ + /// + /// MultiboxingDialog.xaml 的交互逻辑 + /// + public partial class MultiboxingDialog : UserControl, IGrowlTokenProvider + { + public MultiboxingDialog() + { + InitializeComponent(); + this.GrowlToken = $"growl_{Math.Abs(this.GetHashCode())}"; + this.GrowlStackPanel.SetValue(HandyControl.Controls.Growl.TokenProperty, this.GrowlToken); + } + + public string GrowlToken { get; set; } + } +} diff --git a/LuYao.Toolkit/Dialogs/MultiboxingDialogViewModel.cs b/LuYao.Toolkit/Dialogs/MultiboxingDialogViewModel.cs new file mode 100644 index 0000000..4956339 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/MultiboxingDialogViewModel.cs @@ -0,0 +1,47 @@ +using LuYao.Toolkit.Channels; +using Prism.Regions; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Dialogs; + +public partial class MultiboxingDialogViewModel : ViewModelBase, IDialogAware +{ + private IRegionManager _regionManager; + public string RegionName { get; } + public MultiboxingDialogViewModel(IRegionManager regionManager) + { + this._regionManager = regionManager ?? throw new ArgumentNullException(nameof(regionManager)); + this.RegionName = $"dialog_{Math.Abs(this.GetHashCode())}"; + } + + public string Title { set; get; } + + public event Action RequestClose; + + public bool CanCloseDialog() + { + return true; + } + + public void OnDialogClosed() + { + this._regionManager.Regions.Remove(this.RegionName); + } + + public void OnDialogOpened(IDialogParameters parameters) + { + var func = parameters.GetValue("Function"); + if (func == null) return; + this.Title = func.Title; + this._regionManager.RegisterViewWithRegion(this.RegionName, func.View); + } + protected virtual void OnRequestClose(IDialogResult obj) + { + RequestClose?.Invoke(obj); + } +} diff --git a/LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml b/LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml new file mode 100644 index 0000000..8f367d5 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml @@ -0,0 +1,14 @@ + + diff --git a/LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml.cs b/LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml.cs new file mode 100644 index 0000000..622da97 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/MultiboxingDialogWindow.xaml.cs @@ -0,0 +1,44 @@ +using LuYao.Toolkit.Services; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Dialogs +{ + /// + /// DialogWindow.xaml 的交互逻辑 + /// + public partial class MultiboxingDialogWindow : IDialogWindow, IGrowlTokenProvider + { + public MultiboxingDialogWindow() + { + InitializeComponent(); + this.Loaded += DialogWindow_Loaded; + } + + private void DialogWindow_Loaded(object sender, RoutedEventArgs e) + { + this.Owner = null; + } + + public IDialogResult Result { get; set; } + + public string GrowlToken => GetGrowlName(); + private string GetGrowlName() + { + if (this.Content is IGrowlTokenProvider provider) return provider.GrowlToken; + return nameof(MainWindow); + } + } +} diff --git a/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml b/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml new file mode 100644 index 0000000..1171f9a --- /dev/null +++ b/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml.cs b/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml.cs new file mode 100644 index 0000000..7572da4 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialog.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Dialogs +{ + /// + /// PreviewFileAsStringDialog.xaml 的交互逻辑 + /// + public partial class PreviewFileAsStringDialog : UserControl + { + public PreviewFileAsStringDialog() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialogViewModel.cs b/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialogViewModel.cs new file mode 100644 index 0000000..3d38151 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/PreviewFileAsStringDialogViewModel.cs @@ -0,0 +1,84 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Prism.Services.Dialogs; +using System; +using System.IO; +using System.Text; + +namespace LuYao.Toolkit.Dialogs; + +public partial class PreviewFileAsStringDialogViewModel : ViewModelBase, IDialogAware +{ + [ObservableProperty] + [NotifyPropertyChangedFor(nameof(FileName))] + private Events.PreviewFileAsStringEventPayload _payload; + + public string FileName => Path.GetFileName(this.Payload.FullName); + + [ObservableProperty] + private string _content; + + public const int Limit = 1000; + + + public string Title => "预览文件"; + + public event Action RequestClose; + + [RelayCommand] + private void Close() + { + this.RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); + } + + public bool CanCloseDialog() => true; + + public void OnDialogClosed() + { + } + + private void ReadConten() + { + using (var sr = new StreamReader(this.Payload.FullName, this.Payload.Encoding)) + { + var sb = new StringBuilder(); + while (!sr.EndOfStream) + { + if (sb.Length >= Limit) break; + var line = sr.ReadLine(); + if (!string.IsNullOrWhiteSpace(line)) + { + if (line.Length <= Limit) + { + sb.AppendLine(line); + } + else + { + sb.Append(line.Substring(0, Limit)); + sb.Append("..."); + sb.AppendLine(); + break; + } + } + else + { + sb.Append(line); + } + } + this.Content = sb.ToString(); + } + } + + public void OnDialogOpened(IDialogParameters parameters) + { + if (parameters.TryGetValue(nameof(Payload), out var payload)) + { + this.Payload = payload; + this.ReadConten(); + } + else + { + throw new Exception("Payload 为空"); + } + } +} diff --git a/LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml b/LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml new file mode 100644 index 0000000..0a8dc8e --- /dev/null +++ b/LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml.cs b/LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml.cs new file mode 100644 index 0000000..95b3af5 --- /dev/null +++ b/LuYao.Toolkit/Dialogs/ToolkitSettingsDialog.xaml.cs @@ -0,0 +1,32 @@ +using LuYao.Toolkit.Helpers; +using LuYao.Toolkit.Rdm; +using LuYao.Toolkit.Themes; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Dialogs +{ + /// + /// ToolkitSettingsDialog.xaml 的交互逻辑 + /// + public partial class ToolkitSettingsDialog : UserControl + { + public ToolkitSettingsDialog() + { + InitializeComponent(); + ComboBoxHelper.BindEnum(ThemesComboBox); + } + } +} diff --git a/LuYao.Toolkit/Dialogs/ToolkitSettingsDialogViewModel.cs b/LuYao.Toolkit/Dialogs/ToolkitSettingsDialogViewModel.cs new file mode 100644 index 0000000..af9759c --- /dev/null +++ b/LuYao.Toolkit/Dialogs/ToolkitSettingsDialogViewModel.cs @@ -0,0 +1,48 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.Toolkit.Events; +using Prism.Events; +using Prism.Services.Dialogs; +using System; + +namespace LuYao.Toolkit.Dialogs; + +public partial class ToolkitSettingsDialogViewModel : ViewModelBase, IDialogAware +{ + private IEventAggregator eventAggregator; + + public ToolkitSettingsDialogViewModel(IEventAggregator eventAggregator) + { + this.eventAggregator = eventAggregator; + } + + public string Title => "设置"; + + public event Action RequestClose; + + public bool CanCloseDialog() + { + return true; + } + + public void OnDialogClosed() + { + ToolkitConfig.Current = null; + } + + public void OnDialogOpened(IDialogParameters parameters) + { + this.Config = ToolkitConfig.Current; + } + + [ObservableProperty] + private ToolkitConfig _config; + + [RelayCommand] + private void Save() + { + this.Config.Save(); + eventAggregator.GetEvent().Publish(this.Config.Theme); + this.RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); + } +} diff --git a/LuYao.Toolkit/Helpers/ComboBoxHelper.cs b/LuYao.Toolkit/Helpers/ComboBoxHelper.cs new file mode 100644 index 0000000..04c561f --- /dev/null +++ b/LuYao.Toolkit/Helpers/ComboBoxHelper.cs @@ -0,0 +1,39 @@ +using NewLife; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Helpers; + +public static class ComboBoxHelper +{ + public static void BindEnum(T combo) where TEnum : Enum where T : ComboBox + { + var values = Enum.GetValues(typeof(TEnum)); + combo.DisplayMemberPath = "Display"; + combo.SelectedValuePath = "Value"; + combo.Items.Clear(); + foreach (TEnum item in values) + { + var desc = item.GetDescription(); + if (string.IsNullOrWhiteSpace(desc)) desc = item.ToString(); + var dto = new + { + Display = desc, + Value = item + }; + combo.Items.Add(dto); + } + } + public static void BindEnum(this ComboBox combo) where TEnum : Enum + { + BindEnum(combo); + } + public static void BindEnum(this HandyControl.Controls.ComboBox combo) where TEnum : Enum + { + BindEnum(combo); + } +} \ No newline at end of file diff --git a/LuYao.Toolkit/IO/FileType.cs b/LuYao.Toolkit/IO/FileType.cs new file mode 100644 index 0000000..8907eb5 --- /dev/null +++ b/LuYao.Toolkit/IO/FileType.cs @@ -0,0 +1,66 @@ +using System; +using System.ComponentModel; + +namespace LuYao.Toolkit.IO; + +[Flags] +public enum FileType +{ + [Description("全部文件")] + All = -1, + + [Description("文件")] + Customer = 0, + + [Description("位图文件")] + [FileTypeExtensions(".jpg", ".png", ".bmp", ".gif", ".webp")] + Image = 1, + + [Description("文本文件")] + [FileTypeExtensions(".txt")] + Text = 2, + + [Description("Word文件")] + [FileTypeExtensions(".doc", ".docx")] + Word = 4, + + [Description("Excel文件")] + [FileTypeExtensions(".xls", ".xlsx")] + Excel = 8, + + [Description("压缩文件")] + [FileTypeExtensions(".zip", ".rar", ".gz", ".7z")] + Zip = 16, + + [Description("XML文件")] + [FileTypeExtensions(".xml")] + Xml = 32, + + [Description("可执行文件")] + [FileTypeExtensions(".exe")] + Exe = 64, + + [Description("XSL文件")] + [FileTypeExtensions(".xsl", ".xslt")] + Xsl = 128, + + [FileTypeExtensions(".json", ".js", ".txt")] + [Description("JSON")] + Json = 256, + + [FileTypeExtensions(".js")] + [Description("JavaScript")] + JavaScript = 512, + + [Description("日志")] + [FileTypeExtensions(".log", ".txt")] + Log = 1024, + + [Description("Liquid")] + [FileTypeExtensions(".liquid")] + Liquid = 2048, + + [Description("矢量图")] + [FileTypeExtensions(".svg")] + Svg = 4096, +} diff --git a/LuYao.Toolkit/IO/FileTypeExtensions.cs b/LuYao.Toolkit/IO/FileTypeExtensions.cs new file mode 100644 index 0000000..38d21f2 --- /dev/null +++ b/LuYao.Toolkit/IO/FileTypeExtensions.cs @@ -0,0 +1,115 @@ +using NewLife; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace LuYao.Toolkit.IO; + +public static class FileTypeExtensions +{ + private static FileTypeExtensionsAttribute GetFileTypeExtensions(this FileType value) + { + + FieldInfo field = value.GetType().GetField(value.ToString(), BindingFlags.Static | BindingFlags.Public); + if (field == null) + { + return null; + } + return field.GetCustomAttribute(); + } + + public static bool TryGetExtensions(this FileType type, string custome, out List extensions) + { + extensions = new List(); + if (type == FileType.All) return false; + if (type == FileType.Customer) + { + if (!string.IsNullOrWhiteSpace(custome)) + { + foreach (var ext in custome.Split(';')) if (!extensions.Contains(ext)) extensions.Add(ext); + } + } + else + { + var values = Enum.GetValues(); + foreach (var item in values) + { + if (type.HasFlag(item)) + { + var exts = item.GetFileTypeExtensions(); + if (exts != null) + { + foreach (var ext in exts.Extensions) + { + if (!extensions.Contains(ext)) extensions.Add(ext); + } + } + } + } + } + return true; + } + + public static string BuildFilter(this FileType type, string custome) + { + if (type == FileType.All) return "全部文件|*.*"; + var sb = new StringBuilder(); + if (type == FileType.Customer) + { + sb.Append("文件|"); + if (string.IsNullOrWhiteSpace(custome)) + { + sb.Append("*.*"); + } + else + { + foreach (var ext in custome.Split(';')) sb.AppendFormat("*{0};", ext); + sb.Length--; + } + } + else + { + var dic = new SortedDictionary(); + var values = Enum.GetValues(); + foreach (var item in values) + { + if (type.HasFlag(item)) + { + var exts = item.GetFileTypeExtensions(); + if (exts != null) + { + dic.Add(item.GetDescription(), exts); + } + } + } + if (dic.Count <= 0) return "全部文件|*.*"; + if (dic.Count == 1) + { + var first = dic.First(); + return $"{first.Key}|{first.Value.FilterValue}"; + } + var set = new SortedSet(StringComparer.OrdinalIgnoreCase); + foreach (var item in dic) + { + foreach (var value in item.Value.Extensions) + { + set.Add("*" + value); + } + } + sb.Append("全部文件|"); + sb.Append(string.Join(";", set)); + sb.Append('|'); + foreach (var item in dic) + { + sb.Append(item.Key); + sb.Append('|'); + sb.Append(item.Value.FilterValue); + sb.Append('|'); + } + sb.Length--; + } + return sb.ToString(); + } +} diff --git a/LuYao.Toolkit/IO/FileTypeExtensionsAttribute.cs b/LuYao.Toolkit/IO/FileTypeExtensionsAttribute.cs new file mode 100644 index 0000000..a47a314 --- /dev/null +++ b/LuYao.Toolkit/IO/FileTypeExtensionsAttribute.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace LuYao.Toolkit.IO; + +public class FileTypeExtensionsAttribute : Attribute +{ + public FileTypeExtensionsAttribute(params string[] extensions) + { + this.Extensions = extensions ?? throw new ArgumentNullException(nameof(extensions)); + if (this.Extensions.Count <= 0) throw new ArgumentOutOfRangeException(nameof(extensions)); + this.FilterValue = string.Join( + ";", + extensions.Order(StringComparer.InvariantCultureIgnoreCase) + .Distinct() + .Select(str => $"*{str}") + ); + } + public IReadOnlyCollection Extensions { get; } + public string FilterValue { get; } +} diff --git a/LuYao.Toolkit/IPLookup.dat b/LuYao.Toolkit/IPLookup.dat new file mode 100644 index 0000000000000000000000000000000000000000..a958a4013bb85f231924dd843287c506858c06dc GIT binary patch literal 1500888 zcmaHUcR*8F+V{KbDC;naihxLoV}Vhch%_l#MjZ!5m=P5a0ZkNCnutJH|^-%Lp^e*)2H@HrF(DwcDvp?#Rk)boKVKJw=LnH>F9}(;`}_Hp6`QRZIfKb z7aTM0JFY}&bA64uyYs}}55H*#glSa%Xx;DrMmMMQzz-GY?ohTR{b44WSa|O4 z#VFicz4npV^j3D6(bfsvf7cVAc1g>Ps#k3nP0f0{o|LN~a3}d=ziEc+rvzFQ z+DDwo*8RFos&#UQk@C(~Mbd^{-iMWJe%f9BQ>9ZTMWp!h{;S7t9axpO(cDO`y6`?} zeX`}b0GkM1dfeZ3o44OGUHjKv^ZnujqkBq!7)fPD?KjQaPIFmzXqVN-KMqT*dG)b+ z3%x4yjpTH~bmWb#_~kmuLdethwuEEY(-ncz|}ewU(w$8d#AkEFEsVn`i}w( zZ^oXx?%}CJ6So+h$^7bnJ?2c9TI)J?xY34fvXSC48;|W*6R*lDw+5j}-V$*<^OyT~ zcWu7#DBh?%_B<;-z}WLbnAqa`m>J#@g+Cl~_&+td3g4~$fB01K;MSE(7ak_s-i-OG z5}0ts_y7iS=veAz{j+y3whu+r;=5dq-Fjyr|3@kIlJ{>SzCUSH{JXFJa;f5rpcx4x z{fp;DZe7~!Z7PT|~LM>$;mK;fSzv(7*8?w?1u)%JEsq{m|KIj?2CTj}L@V%?D+Cn{2I z98UUlSZYO>`rAG6{mkniu!-{9ZyTwW9slEyhT1oW8#^VN&O~F8Kv{^)C8Q7f@0zs_ z{mfsEZDFAm2c*tP{(vgpmOE3k<>4>W;!w`IoZo^0y=AMx}M!E{_LXvbgEo#wypFuV99 z^k3yMXJe0!v;L8C3F0Je3I6HI&Sd|6ao$GgZ6+D-Ru#y)muvoc&*m%pk?jb-yaANuQ6~0d9B#->u|D))t?yPC95+tQnK?1dUNW8h@LDnSZOOkd3O4| zuRJrM_5*M3{r5xVI`Jy=A;QWhr9Z7YQrIC!%9{!`>U_Q>Nq3NoTQ?T%KiF{w>3>LL z$=$qqD`9JpB4KaPX3-6sW-87kq|-}29^XBo9WXn|V%N?$T+lgqY4dmNmg`rq{PH+q zbKHfL=${p09Kv&Cue|R!Tgh+;VC8KIS3}FSt}{SE`XJ+nxjtB`pNJN}s=P{|^|M%6 zCBw&FR>*5VRuchZn=|2Gc<=r?9j7r|43i|YM&n#h`0e{zZblKZTv z|9S7Hs?++@F^<(O5U*&j5&#mm{{9fJ);MWlL^m3mZH|-gR;F?H1l{ zmp{^u^@ot#WDZhSF(#`l2IWP9Tj~EgsGrQ654$6kU)HQWgr|kP<0@Y0+$QD3F8EqW z_>X+TN(1groIujoLOTXwEu^LG_6W1+V49;|9$xB z!|Pi4(&rMaPBvml;x&0Yy7gh@Kv=UOkFp{JXQER3?LP6Wg4LNsxd>LN#BC`^In)rK zQ&tU94s7zGD_IyBFZ^|mRXqIPv1b?Vhr6tjc8Hqq$P8FVPKR{3PVRqb#@phBOygoW zK-7Q$#G|+VyH9uHG1E0iU)3Qc0|3xk-L5-90EFH?EV=UTv4bm|uWG#0$x3}$W~i9p zex%CzmWhJ5K5g~bs}B`Nev7pa)-I$QkS5=^apksOA&P8d#+*v}XoPxelKIa*et|L$ zaQ$(g-gW2D-o_Cqjr zQ!8EC_a}2n8T|IHc>fIuDpNaNx{~d*ZmhcGhb*R1rJ7iAX5_l#gd>-YoG>2%TAGLN z)Xl`(s>B>NR~g=hZ`ro}4Z(0#{p=nk5KSFs8VeVDF+lD0M^Ix~g``#tTow(z7boU$0UTGtM|LaV9)7Oj}*ZhP`RI|TR{xY@Q z^L}o!rHevJc_ILoXed~sIjj^8R;JbnK92zU%Y-IcI4sfJVTtDYqhO*50BiXlU|f%^ zE4-ACyFf~rx&czkCbqCr1_>#=lt*CkrAor$D+Md$MfoBSU-?xKFgPLyi?1lGReG(0 zpzDLsQN;L<@ccd@3ju>((DVKxycoL%y;ed7=pEto<#LbLN?1NTG1?&AdCX*`$KDZt zzu#gox7T>;c857WEY=g=JPrte*TqPZtOq%-i#Lp*8o)*;eJQ>Tp~}pu62}h;W~x3y zluH?+kdD@E3`e|+KXn}!x>9ej2 z;{bc-`@R4Hs6qWW4|A933Nrq}2>|2At3TqATrpzD7ld+vOxT4wjzr~M#G%anb%ulO@?u$;@>Ym zh>Tv~%J&Mym*&K*zBruD*C6s00(c~_s&~t*SS0{I$r8xS0(zAIABlyv(-eQ07SJTL z;xzvxENQ3wzEA}dE=KBv&8pT!F-XrMC_=Kz>OZ`ST+n;pv0{aZKd(1I#*>3^xFWBz zvX7wM$P)zeWakuTo?Ld9EY-S9(c7N(gY@y;b7Ip0Hv4|U=6N=D35XL?+}*iZ^1?dV zmR{7#g%LF;1YX+qjwhE2Q0E=%(Nd6})*U~0<$QherdMH)hF#t?5jOelAnBUW4zjkXEZdjwm<~kE(j*tuvny@AMf}h>kcjR6@rCTFi*?XT&h$los9H% z-bFY#G^;E|L{DHU>}(n#pkn6xQlH^3m2usU1Z&J7 zY$~xeAuV#xHc0=Nd<{doSM3)&1q&986r`2-!7`t02+4exlQ87C1_IJdJ)s(;j9}&q zXpmj=O4{P7&pHarD*gW~^*iSJNj#*VoO6No6YC}YWI~{_(HfDPmmsoeMnu8S6-X%=WuKEm%s1F+I%7_U7+0> z`}9@(HdXHKpVdlhbHAEefqS34yL-4GV5cNv1P;$N-bL!_j`d_km^Va$6)eGZag>bD z9lZQsX5@Wf_%uD~_3`(-7Tbe(qJRHHd-w3J1yu$yVKTlL?Z7^6_(7ODwuG$!F)z34 zPv;L6Bl&0UIUg%Vze@>SNP{Uz8lcxf%IuGYfn5Wrgx%UO;kjA&-V zrZ)vPy?bCica#KC7rw|tlEDn7F4Qe^LT7F72{V|w02R84P_-!$7T>Fo_`ZO|_eFld zi=_K6wf|;_?(^G=YeyXi0iWKZgB?)&L1{%vK*<)4+Nz9n{}7ZI=4Jr!(XfJ>2bD%! z5xe0!=|5LEhyT!&EaX<)?@3>EFFk-mmh3e7K|Qjhh`j!Q>B@Tqjo(?;CGn&mlWJC) zqvbxU{qPno-pO_Pqj2M0RS{n$qxY9S6ibG^5J}ha7eh;(=Fq=ZpjT&dFYX?$^>5EH znm~(fAQ_k3#0w$?v| zyEFGJ)BVFJDd4kOi3*8(WT;<1X8SOC)y2`5)hj2ZjHI;B&E(vVn5?|twab#rD53P- z?Uz%t) zs=nV(GHqwxdx&1Q+{TInv=P~65%flDCin^*B8$vn@qDe{w?<>WU$DP%1HDP;md)RD zvKD6Eq3ZfLAu?8YE^f!*7vSb~0n>oD@bL$GMG4sN7`c5nrDT~Q0z7KqMGM`hc=q!W zFag|~T+~mq>nqpCm1pqn&jvB^pXv(86cGik8l1q;i~>;(vKT{R}B1hZhgn!yB^15 zYs{_C_^yVo6Dd$5J!&Bav6aiLO|4*1|<0;g==77AF63Cj!U)3BM_oJ%z#-+ zl~B+}6%}qNy@vEo8bg@ffb2tMZC<+mHV67pFcR<@rh%fM+X8)%vC8=q0{X%spbz7x z3L&n8@sQp*NrZvwYFO`_B0((1W?1hugXKdLY&K2TF7tF|_v2b%@g+e?iykDteuhhC z`P{Y(boZ6(HA`B!sOroAw{g|~N&Xw(iZ z4*c$}dMdR0)b9sE6=-jQMHOjrK|#6o4}%Z9y1Z5O*94vQiW|1lO8?Sv<9PWo2wsd3 zi=r+Y6ss|%X0qACi+y3ZFQ#K>Ew25NjMGT6LAzI}vBT-B)y`rjGgS3zSy7d-haTCD zXQSC`^#)&wzR2$_UR|mFMR`OeY1h1ww6Z(6)xTPi|%Gs@(Wt?;B zY(?Ze-djcE`yv7r(n_zot7KN~>T@2u*#@>uSKG1PYr9OAV9A@zVw|t{6n;G)Uo;4) z?+10#^d|}GWV@NXUAUsbfR$2Vr$qX-h5@?}5ryL5qh#5Z224uPpyiknv$Q3K<)}Vk zGxIfr8l+g2{g1otON@r?6%VCsSBj~R%2XQet&1AlvygVe)w@B&aQvye{XkhFHC(No zqGHFf#rOD-1}VCB1%oe8M>%X*6xP*MWqdfMcFG}C&a;W}l5Se?^;!I2{16xO%&OZO z^W?RbcXi9SZl^d&myszm=zZ?JQPtjBOl4ZeM^C*0j}L#QBzRQh4B{?)LX}>1jq%-N zahm&9hjWP8^rteHo=bmVOv2>nNm|+88_T}-)yDoX~F5?x=)46zn_91JYoUDkM^FaEu$EE)HJ*(=sTogT4tWaEc~L?*nQN;X>vH`o)j;+QYS-n zzTeGKovfD=JGxJ78 z%P!G!ZKnGkO1N5nu%UJQpVIWui`|wNo=T-#gP+>Rx(45? zZ|>wB&nroPl%WfSGpnRvV&QcjlkScV_ zYAB)`p!RjU+vU^rsM8g6>PE9`%~>aL6-u^aQC_}Zv7~)Hjty;Nk1Ezc4$P{CG@@{5 zBeKRMdrMlogokIhTucv$*w>YMq}YS9Kk@~v5fRWyyIcNU>s?Z*<dFGcp$xOc5zv{yVd7y|S__HLJ}j)Ol7nKqt%RI7 zUjo(<9FUH%v}6pt_2weBWDb(UAmytENk8r`f!lN@?Kfn`j;I!NBpph=S|)rB`dXN1 zH*Bp;&1^sE+Bon(V#3g0>3Dh+O21xib`Hu>3P;oF5(Fu*1O?;{oWLF2<;r{EC()RO%0@o&h~!E{`e`M%Tmq#z zJp8<|Kg5Ed+CKb34Bv0wgCEFeqfvp0?7wo)ee4rJSzNs&@XpHV8MK@Gj=}h;Q1wdu zk32!jS~~|gx4)u*5cYWSfFQjU>xRwNrSYV*&;`-uumhjs_zy{k`l7>?~wLLfd-S zlwF6ybDEeghw*2|dP-NdC>zN0+peKDuTVj4UbuwEZJp~}gMNN97cO0^$}Ckh%u?QV z(#rL@cE9I8hfHxhHNbFBDb_*Yh(c1>3A@b;$Q7row`5c>^x5Z`saXWo?xc`|QJ`nH zt<{;1rbQfdz{Glm(pPw;ag;IuCWymnK_+i{`D~N+#n>7n0Gbb*eNR-qe(&CcL1rib z9@ace7)t;_^CIj$SEEQQLZJvShcZ8O zXGaJK6^incnRoff$(A$mvyI9&TsZ1ujmLa{k0u7@V4KKc2Msd#K-O#~KE_>J^3x5;P5tdE6xY&3p6HEUFXGFM%ox0wFx9IA(0er}mUTw!1(zF5L-^cZ zjd`+SC$SW@GSz7nZ}IrT0gWCT&)O0@gpQV71=QrPFXYX0?8?mmQkf0Vhx-jefYK>0 zJVH{$PoO1m9Wd2-R=XG~Rl^8q^<2&I%k5}m2#hswwFM{8x4+G6@;j|Tr@W{KNsZ|= z+#3YQHRu5vSUcmX@A_KX29SSoFKmRI%T&J?hGDDEG^}CUwzAd{QRTe6Pnvq$_%&?j zAwF#VD9H2KZV-GkzH>>>oP*cygbhH0xbmil-8)}D+OsVOAuBBDWiUbX#VH@C`U7e#p zv67ic(vOwz(PzD}96p#)>+PdK4_Av2E8d=rw-SD{$4m=n9I&7l3ldm;?WC(UBLr2| zt}-6Sw}26h6gVTYlZG*(Nn~s+qLOITf*fI}6f}!BXZ}Je05CEvK^+0S-3b6PHVcY2 zPYJq!YVyU3dfyX(m+(gIX$0uaVFANHJPj$5w+2L$NykO3B=j(So1zKlJ0wT-1y1Fe z_dR)9VI~~3;@6-90|Kd$rQhAOgl5D;Xols%SsE`^tbiys$k>Wh!rqLm(Xl{z9pxko zoIrqZ$v}Eju`Udv?}hXx-y=d(nDU}j=%^~5h@^1+^m{MXp6b|*`=*kIA9Mt?JZ?zrg6^T9QhF7<$j!&`03(pXmtq8xK4(|b=qrb` zp=UX=lX>$XIu!Q6P}~#+0W5w$&-QZ08Vg%WY*$SF21h^jZ1$B@?w7`~K4zC|xg%Mk z$4}87D4a7t&xvc1T)V2FyAGhiugUhVlkZzgD_%`l$B(u_=Cm07JtYReQA2+>lQ_@J z-C8e_d_$^9ZZtDOCLmOtsz%Z#SHekU(~uOjUcEe#VW<|BLfPq{@-C>rZlgF^$M)*? zBeXj!teBJ0 zCX0CmZ;b+zsyBWa9&@@7rbj?45F8UOg}|p|sq*QBL#Mw5xpJ&d_k|syN~2nX zcTgqbeQ4}<%P&%*)AT?_xC&K@!TxUow}izE#7;%xxD;9-DJUK-p*9n(V<=}~k9p4x zDo~?;d)}D6u`ZfUQ!BS1%T5q9BiPrRrmArhIhbxnX&5y$07V-_mF5sOx^j$V^~Wa( z*ZMT*DW$oI8yzF*{SK7tcUc^F+IUa-m(MyrTO*#7P4{N(*;emRZmozlJy}&1u~Ii< zpLV;Ugc|-}!p!>^t96tg>8Jjznyz$vu2XC%GeX{#46yxhIwdMSVp<`A_|%>gZb`qJ zRUb{!w&zykDC$(7r(10ir8aIxQ&3T=Wv)S$ z1nqW~53^spd}Pdx6_0tZP3dGZ559Yp`u{V0>( z9{$AFZOGPSYS413D5KL4kEtdEnb(VzOZmP0I*rK^vthCVEIU*fQ;oVB#ptArW-XsW z#^d1q>J&t(5cC?*vpKq)Zp#Zca0i3wfQ&asK(^mJl(9rO4-`Hd%nxA%xkA(QTjmt8 zG`fApEMvY^IX6e0i@>0NQK>&(4DD4RadgxPDxmXhG zspZ#|@it5#8*=vY8^Ilm!tdZo|C!ghBf0K^rO41jq>XEIa=A5ECA%o-30lrNbuyN9 zNlSj3kRX}tB>?EQfM^1yFv{aCbeI-uu z(<>fjxxgkO*L3-_^JJYt$e5dPfsHwDL?ds!;^_3M&D2Nk>gSyfHi#q>6h=S}k+<~RgcuJlB0#r8BvDj36ceENSQ!y!m&lAL0Zg!nTmQKv#B*XC ziULz`%@$!azH*FELBa-zB)a1@V<~8UeG1AK|#xkhCaZWfz`50Zg2PjpuqH>gkndR3I#!M$uO~6a#u}+6f zx_680oL^B;th@j$T{=q*h*i^B8HmC#IulJc%rqkNvp>=e?X%EAyFC@_+{s3sW*U zm4Xvfzz4IGU7%8noLvhj=Wl}eVC2mL1vkxeUd7~=&G1&W5nGY9%NSj68CyC?vTfD@sMO3WC1{`4<(*Cs?=|Pb|?8A63 zYDhd|fEu>U^9FXu@lq3Dcej}eIR3szdG}TIB8+GJ`Xa_@+VU&n`F>KEIgYSoa=TK5 zx0lmlFa^X;W?A0xX2NlpNyJVRtj|TZ7S2QPl3tJZVS#D4$mTf>X=YP5V_ZP0d#7l% zyLVoxnl7Jn+Q!B*o~W<24c=C*&a|d~$!^4HM(kq_F#Ekqf9!F}l~4C5Z5hw=(Ma|v zmp#HcXu_?*eK$?*5Ami-AP(WP!N!3uf?Rx&O9eR`Ig5;GTeup>#%VB==dxZKqf!bC zJ=%!&t)XA)eZ8utlPsOWi)z43$Xk&CTyxo>a8wniou37BE~mry^3WI5iB$%c7bWT%TqT`bUwZ-^}z4H5j zTQ!n}TVjcG>}U`KIq40-cbo>^PcB`f*)0c4DULPdPD6RcHEWF@GM(KdLeDv<%QuNg z!L#uxYqAvB;;H8b0hs^=4J(&4Clf3z5EXm2*=S2*7`5fIMtwe=$rX3BSk@Y5jzLZz zFL?Sn)B&boe>7YmbQFFNzy_5dvyBCFnk=9hc@1*l^fJiqmJIU-%t*B(!ZOkec3_!h zQ;xrE77wj?ZHOe4y-Y$tY*!%HaAlx(O^tvZm>ROg2$@^zNraRTH3BxA3LtQuEG~c^ z1b3PS%AjDKpbZ1-)CD7IPDtl_cMJ%_>WA_R>Kx@?x+Jm=a$q(Y_r~2;$kG(5bg5-l zlQ;OHg0K#8^)%Jw%T*^-Cf~+Ps!Lj93j!6`f0}qz-h0FvC1T4{8oxfI6E;{Rnz8)R z22;`*)0VA!rZuqFv3|psFoj*fAVj2A!bwQuQGh)5Of1YSydx_dM2t2G63d=rw3YF` zbBkCYG58EB3p@4WsCQH{Hs{) zospnS1=awZo1;s?iU>mdXIbg5Cl^la-69D6CqMB(atqjkK=!WEnwYaIpO!=CGn)7- zLz$dP;3x1lU!q_-ZKU0Lo}TW3$X@t;g2IFpd5>Wwal|Fpp_@cZ;b3?I^X1Z44`arn zF<`yw8h;_vyariE^#towJW{NSAYn!BVg0$S()pW`cAz60u!z<2*s*)&i{*t`6L$V- zjiFEbY>pBX%`PZP)j1~w^S26X^3Q#$6&UEQ$ZDKD7FkowtZpC4LsqyfxIXxS7bpWw zsg}atc6|Q~Nu7PZ>h;2kELTa;I-9k~>7p3}4%oKmjTrJ#w3Ie}bi{3bQR^6fNYstL zQYm9gS>hjY&9k9-5m1=9BINnAaVk;B zEsyV8a2k6pV9hsYA!V1YFbZz^&ff`deQa#r?Q#FaTY_y^0+v_?gLzN$@f3#sbyk<3cf$g1si z15*XY_InCU6k?6<^eZ$yi8r~kU8CZvO@l{)jka-q#Z_a4I%*d|o;qDv+qWMzU3Ia? z#;wjkoLWY=k9Ek9D(cq+;H~9fV9m6q!6n!64XOONhQ9NIF)g1KRf=!#9b{o+*dFv6 z_o!1B6OU#$^=>2Sbcc!hjeaA6!4mHp9GyCrZ-A(p>G&QIVj+=IH5zsh*c}1dMf4TZ zzTa#Sh^JZWbswQI3Pp zSC6XE4iN_dx{hba)Xtn&&MB!WVwI|AaTTI)6{4#ZIUL_W{9th~P+z?zeLhy&f}PkL z^v}sV%B4t~EZVM6A3w%@GEW*Sl(5bCXbl!Itw{NkCA^k(9pfv+oJVqZ7Ej07Nd5p$r0?W=d3_NlLA5mwt>}xc=L;s< zhTl6-enU+)I+zypCI!c;SL%lreLJ5HcJIK-5bd#hvFBSGaYM!AxQ>gWDp}3fre!@_ zqoeH04%eQe?9VY&(@F}-DeNg!a>?)ML`S$6XAg|f5BXf7XQ%~<6A98CW-(XBCB zp8W(@aY`c-&1P7%oF~0ijUDl3zC%Y)s$PM?*6nR*`&xkx3@Rcf}Yyr2Cpi= z{$_$dLpDp?-4zO2)Oh~4XU5+A1S9%(zZ!Xw3ogV?)-FB{1tMPyUVoUr6N8OUG#q|3 z>3|KcwAYL6Xe?1r*h4(G&y#HwMbLoEbV#M6L zE`@jb)CGz_in`=KH{CS>K;)yWL4*s9?3@LMDeiwekX1{ZunGTmjS2*?+KHc?70WictNR?Y(7s? zv$;~;=}Np;-_*Iy0q^RERc7X=@y{y9jEPOkcn6f+p=2-Kg%WHRE1JYEd;0SwZzG+l!j~SdR(@!P^q$Q>SP6l4|wb zZ|{q%6gpbcY@+nn%GB(3)#=k&qZI6uM8hlPE6w!7CgrDtEwKUO$>@-xByNS}*++FX z1(=hrChVs%9T%UcoV%S$&gX7n3< zgSc-rLRk1V=7V7JMm3*mNxjyW<5sf3JVBZwS(X^vD;-)$zhRAaqdJf`^w_8~z4cu( zqy~^BbYG;)&j6_Uw(g|0YgW!cX6@PeL4%tcG-gQj*xx?dg-#~L25BPV(@wIyYvbUp zTHg--rJPG0isDsWH~Tldt^{euzEDrj(ND=#XRo-DpPoW-5T$z0Yzxor8)B61s4WV6 zaO zB=AN7j`NS`N$)R3XrcjOy@=dcm8tR-t{Oe7O^5$?+wIC0#thgweiImT>E?MPG``?v zDSkcHarSlNYK|$TWmRbD`F8rd8e~ZEerLc9;Cnz!iR`1`BZ?`eI*!1B2eU_Eh5*XR z%=$v?m-cKVBPO04LH2MfL_qhhwYv1gL#xR?g{aRYV6!L3S>#r7Z-F_%bhBYadmxUu$Dd0@tfma` zRt<839;ceHw-M8z2c2dm;C3q2^BYb$W9IAa+HeZ~(h1MPvjr0a9@G(%lu{w)5i$m? zP0Mt_f-c3abw#8*CjK=EHSJEHZ-ZT;n0rNQCtIazND)f5oHsa7Fc2b2LHM$PnW9p)W-!#Q<=3EXt$S zjdf0$)u!M>?Ik(I6ORs&H2`VBAJKQ;CTZmozLSc`@4RA?$@Zbz0sx3S4!HF=V7v0+ zBxN4G5yXk{=ab58UkPB_YEW4zDzB<8@#hS$3v*lM3rlWx$Qg3Hn6b0@*&afv&V0+i zDKMnk=Blc`#R;Snk|oHb$`+hdNT-xWIs#QZUGKX{Xfrlkd%)|B3{{3v@U5xEt=H6K zn$y@D^GJ>v&QRuFXMJuhVBQ=kzD$ioZ<67mbB=Ezg1F|&KT;2D(vSoMMmk7`fF_`8O?O?9v^^<#UlZS{IujX z>NJqtTVv?)#>#vZHh%!%)Z!k3s;yf)Xfat`ZovN3)ovZT{7dr8uc?_0)g8DQDf(0H z#@cJ`23bj9HNNNqzjNA07cZ?6?1+g`CgsSvV3>bh`MmJ^nwBEh^aYfrHeXWSS$^7JL*u(s>i9=Snc~`-vN$SnjcUQz zF5Affovd|I`b;}a_9WnCr_x)#+xYNdK)Fb$8j-wF)MlK6J!bvBX@(KcR`{pOrs<}j|d(?l^J<04YKexLW;bXcI> zTpf9BK-c7^BX#KhuD*;zL>GkQ@=5gKUz}mU%IH0!I|$NCce~tg&#VXIM^j+Gt4(*y zs>*5%UCIDDYBA5G5zfZ1g?X635ZZ7Irg{WH4geow@=YO7zE6T2^Oc<0wf9*`Id7D- zu2uRNj%L&*cp}xL!BnFOKjzs5GP{JRaQ8rnN?UjnKPBlhQ~*i|5{nZ?kE6|;g+wT! z&kC9=87yWBZLUplje~%+rNT4!EQ)v-;ayMh<&P(FTD5z(0APX)Q46QhDDYyj0IUq3 zgQ@H73LM{@HF;fS@7mIp>!`rBNgXXpBn?XwxJ4*~xXos`ijxdfs3KZ3X*gA4(0c}_ zJf7JAmatt!s#vdZ%_}0!far##boONFBa%E)InfCQ(q_qJKx$bWX$?q1{A>WDglHv5 zq^rSe^FqTk*$>O$!}ha-0A%j@vYt|YB3vyyI$=@;2JRecM}!yf3K<`q*MRQ5^1s)mcJq)};kmR1=dl;FY9By~xK2_T ztTBclA}+3ESNgTLo{W~hTm05&CkZ)j2ER2fSF$+XbH}Cg(8!L3sCIu;BMMEvd!KT9 z<1<+`8g|kE{_ueKe)IRpo0I|vnrD(0Ws&waVNdPk98}Bd(}T^FXrbxhVoLNua@gAw z8NGe9w(qR3eOR(udbx8X8NB!|R2oSWeiSizFdJcjXur@)RVvmr97hl+raY$%fK{Gk zU|%!V2nH4Scj5V`QRP#Rp|lq|lmNCyBp@KXAVZ1AJyi3*M@=hef>*tVQ+v{e5Y-|{ z%(q`7CD9A1yO|nXtMZ8Q_`~Qqsuu}9?Xkw|XzqGgdILO;z(O8F0|Q$TIT~-KX@M8= zgv~S=&e6hNgam#IkI&!Z5J;Gyhcv`tFjE$bkKEH1e4gVcOjlfj>UV z6K%z7^853_7VIzsQZvUK^m}&#jQeBy(i=m;8u;`AcUmkT%)A8^jXb>#?1Io67Ef=U z%FBm)h>0xhg8cT*=lK;LxOlE-I~pek1o8wKg&E7Lmmg+Xpl*LI;&EIto0Xn`+OVg? z0ekbW;;YpkNujme{r#ND#z|4P@@FX-4F_{lxlbCMO4KMo)Oj09-r!}x)=y?%lI4WQ z=u5Q7va1_8*35;9lOfA#*p}{z_w9Wi&3wlwA8q3475uuaZPV_Zpe=`q#M&~UrO0A0 zCa~b>h{y?KWRNtt5S#Bt?{4iM~->Dvl!OE=GS!4n-uMIS@a1;}x0YzTI=G zz1b|t++Lv^F?<4HuYi!A| zSfjzV*8(u>`kGQcZWapku?6gV;PgIeo=#F5bdjfHI%n1?*2E-A9!Y)87m#8}(hY59 z#Bh=X1IVrMp1z*4?1bDT35!fR(o=0`dn(W8h(`fIf+s@kfQS&6ml`jK(w^*l zaq&2v>^QCbOOOTUqSLMrN(enwjpJQ4J)G;8zyHb zUbzcX(@@@Xg4y0s7WzeftPgwfXe#@rrMqr69$S^W!JXrgz)IF(SG%6;i~eBnuZ778xb7^o7n7MkkJKk9w2CCwhj0|}tr(p`3ZnS!Q5`R*pe5o7 z`;x~f1!(a~5!zp*@QGFQNbWl7wNYdJk&%oND>0Q#A=61Sf8pxEYyKB$m#Z=xnRa0s zX4pPLn3UhnZgz?#OWAO$3+JV*HFG$X^(97IUX-BHZBnZ4NHCB$Ex$_*f`};Q%*WDo zOhK_}o*IxP=EQvQdAZYpwmQ8yNZTog>4mAUv>Y$UxTrNgV|yA5Ap*MHM?z5E5`kpa z?xph9{4a80xYZ`8seMMxt*O0Cr_&vD#&qUg;8hQB!M{b>D#F!Zips|%b3$*xAzR8~ zd9Q|Dt5dweky<`$369;1C2R^!U8a^D%|88Ku+rV5K5`jZe{-^t`m4ykNa7UIB67uYfGatyiwi*>ekfAjM-q zo0zhKAvbBL^jI6QsA`O3Gv3ULx4Mw*z9nI9Fz}|QyuaTPla@9PKIjHq5`=}02q1XH z(>!FTyUZ>4uc=dI_#?Y@0P;Vqa~l)IUb0noZ`D*H>v-;?ANNaO-I=qfngo<96&dng z!|~xfov$o(a7*{bQd0+f-$%k`nIGwL4%KXjjQ0m~^zAmL<7O%`p^?Q}k96jw%>`Q% zP2|tLS^w_i9bA7UJ@rHn-QCRZU}4YePkeo}_po=X#=vtde@6vzT@`CAeRkUW9aSDq zX3rUDhYup@DrGSJnmNDT!t+6sIh8SIO;7Ys=CexTzU%bS8YoJdJe^vDDKo3A@s?R4 zSi@JU(!&kpC(C0lg6$Pt-F|cAn`T8Fx8yuB81Z0n0@?cc0>K-j@i3P19f~)o8|sRD zRTgQzEkXwh(B1lA$wZZh(SVD{C**|b*wpp4d{Y2;_?iwbeA7&x{Q@SHcjKxwOkbDB z5u`}_`tncY(4ta`^-i)rc#F5t4o0@n3m9N?@`@fHWB!a#ZP_abmdqEQonwwvRKY%4 zwk~>|ULx~RlNWY@Yylw|{2xaGGD`eL_F;wWU5PD2taHm(Y}hpf@~`1fjRIQ4e)I;0 zL68c1vt4|fxKI-SMH~>LM_Kr7wVyfHpZP+2E$4VEw>Rc9YJLdEu{6{xF$HpNHEYDd z=U9YE^uEJch|P<49HirBjH`qSbtLfW@hl#UeE=l&5yH$OP~hv*0bWl=guFQGw(647V+oDmEXS9kJ($=p_24@Rvjhu# z*|S?$iHBQt#&*e12gHCC2gF@lVn4(pAEgnNh+JL106dJ*FOcoy95S&BURgZ!nH$pP zO6M=+h;nxeDDhrAL&O^@W;}vr@N1aZ^d3b4JNQHXCv3-VF4jE97VpX}tTGWcKp?aX zl*^N0YC2SXA#8?KbrYnjEjY@8&Ouf?MQ{VI*HN6KFL}zj`6O_Xz@7tHZb8o>tglPE z^6_zEBRg8%LpzFdBK1`bvQe=B!q71MFypa6n0w{sR7GUV>Ac!pZY~kq*hgXPk2pKv z77t!(`A?$G*_CJQu8nM&HJL&QQhHpYDJmN5SbRo@S>V6D3OVJWYXF=?ybt zb#h`DHi;F6YY>w+7GOk0^jRH^Bn^>iJ}s}w2>i*}Wz=7Pn^k_nN}+peTy5~0_Qhwt zvuwuCZUh*D7aNw@E%9s5QP%gg?w&RQv{U|&@A+z}GLfVynq@}_WrRKyT?#D7%il<) zJ;g6me&H{)^1wx<0JvDpqRSSs=&{)iH?IEtk6*2;+~HPJtVXQpp?^#dI{1W{?A7n} z=DgiZXzryti}IW4A>PrnvGnkXXSA_69K)_m(Sr6tyDVTT7pD?&ny7cwZMXo_O%4xE zW0rbR+8MzM7VQAc>?3RQOvdF(x(nE?U8IUclGP%-`={xcLnc$#arH`qUYv^%&dpoh z0-tr{Z$Q~7P(z<&>vn%IEBCD(2VX7Yt@93~U_$va+hAO?lv(^tolvNrJx+N@3a(UL zTN*+NC(22O`J$y3)|7~JA0j7EXBe!Y+n5JpAMD(=L@z$#*6bZgDw7plQ7oCUiwG!Y zHd-occUfQrEx0c4gy}ChAN_3hDcO-CMFkpy85^KrC34ZVdhiWAZJ01(3d7N^OL4SA z@~lA4IVnVy>*l6Nul@Sw|3?4CbWi{*+zM^y_7pUE*hKe^lZ@}gZZ}ql-5&Y4FTX-n zL&Nya_KK==cVb->jPF#Ls2ST|i)}x5tzy*vQ|0!8{yp5<9(M7>q+fCIm4+1>>R%pp zBWYG$UQn#nH-WwWkI~WBC}E9T=~z9YlKtjXe35+) zP~~obujG9P3K7Rxzh8Ys`Bhb@RV~z6CImuc+w)9$wZr zj%xusJ|1A^;vGI6GnvRuL6p(>!b{QGMSZ#81A?M<)Aa!aum`iJ;onDW2$DHz+&`RN zw;6(d05Z!9ym=YHgKba%r zm`ZY~!!*sL&p0ck5-By_$GmG zU&(u+d2=H@JU07eSz0=gVe%|Ol)BELSRF}@Ku1ihl01;T7(UjQ=t0)S8olw@e2U87 zq3+ZTQfg&wuHhozvCj@wGgEh*^d4-%Jn_iJwaL4J52|DVS2T)Yaw(`+e&R0jN<*Z@ zz;Lpc+(d?%Z-*oG+E5EN&Z_&=nWta0aAj+!tGVD~$bY@oViR?S5}CK3rZMr>r}HIw zRX~*iRWO(MV?rN5PP|wRn)u=Ki9ax&Bo4m84ZcVb%VINMQmV2(>``mJ5TCeKr#}WL zAt55ob58?4MLICvmyJa!_S|_WL~dNK^KUVmp*)$vn4x&}GLtL=y0;pxqSAD-$~iIxb8|zRWY(i7chJEphMUyb z7nP^8az`KNyx!1*@6JaaOltnYe5zf*t1qj;$MnHB+)eQ7#eAytMO8)~hJ!b3{`WRw z@}1%f)_WVVne!%Nf9oc_E(QPA1A%tqif26df5~(Yh>{H;dL@qwbtLXU_6-z8doA zzuJ&M4js$Z8<3&;T+o1Iz|?e1wuHIiW-1$N(i9$R?^8ZvJ9HJ9qh@!ZwSKQQ`W0{hf} zB}itzL4-nCpi3^+`Ty~DvhT$w7ryz#U$Z)b z?FZ}mA{!@a^mZzx|5>N1Ui3?^`07>p^QCTcy#@p=-x9Ge-wu{dw;7eJdK?#UNhi7S zO*ejLT~89FH$CgW8r>JWQTujE?7R7PTW=YyyWzMZUW4!5#&I&Jt~Pk9UEH##+BWUtE{XZ-)oP#WjPj?^ z*_DIKqva;5w!WKfI9m4IWVY4!jCw;^3(tW=Qy0I3gaf%%wg^&A22x;OR@a`n5m94A zuq1!V<$Y;42|g=ivR0751?|(T(3j>P`(O zQrf216y3GN=mbW*h)KSC|4U%;*FQSLW{?ZK#fmm
92UX@w2X;qvtE+XRtZHHiy#}OjME4lD3A7U27)b^J1$Q zulA#F9K_=^_ny4~pk8ik*{uz$TA7`xC*~}c(^{DMatch~SXT817ESxM39B_#AT{zO zYswldq=Sd|nXaidt2IpoYs#bvNhjFDx7WDuyR73?R@Vx$cqDKZXUOVu^FX17>)ije zU#1ei^~LO$twhYw8FRITZO#Tw2h$giEWsv>=PXl?UL8p$Hc3W$aboh>+2OrmX zR34u5ai0I06L63H!mdLY`U)_onc404n{9^8doMM59&e4!Lg}*DGFw(P*;vPF%cRp- zt-%UbYf!;z4SeAmfM>)RI`XlOo@m;EyE9I+T`CdIf~)hPZD{Yb>n@fF;a1__4^3~x zpC@-)+G+`1#cF3i!)mcOkO+QCXMaU3P?adl>_;3hO(-4X$j`dLQO%*?y{!^eQ+GM* z=wK}ssm)AA(9iPb@8HrC$rqHjaUqpCF^Tdqyb<+DwsDs)c-Q{7!v)7;`Z0)rO#3FW06L8<`rGI-R!8w5OT^ca&f+Nc`97_)41mue_iV4I z9N1kKJGj*wkW2Xm3=68!=Z9RdP1)U3^Fjz{C@!3U_kcd~b5{do zaZ5(o;&x_ReRa}pDY>j>y2XRBQlRwmKvN}7QW;j8XYX4{LxQ@jLyfoy5N^MF>_*3wYdP^t-*^$72kz=(NdbCZdN}*D~+) zq3X!TeVcPF`EFG_Tsue*$(!z?8?d9^tibMZh7AFN(KG-j6DaUor%~U+LEbaD`OoNM zWtUx53g-CL?I?wDf)0R&K`%a}$Bu*oWezApUrx@>E*y(j*d!s4(rt9yi$Rsrt!}O)NX7D|mcPzXOOQM^#q8lTGs|kPnVsAG7ElIvw7H zZA?us?an1gLvqQ0k}gRYS?sB*+2MBJLGvJu)`e?KUN>vdd*t9Ex@CS{=pU!9=d0h~rA{HrCp29i4sIGH1F2rI^2naeFE#Lol5}>B}!Z zXqoR1?a}N0{W$`q^W|B}R)s`ml!OG{>IUAna>RA?6(P~2z2@w6=t#HKZ$H<#wc3j~ z({abqUpH|cw@doBc6&xyToQ^-!^sp#4g1%e>mD8KuRSx^a#6;~T93cKuFWWPhSzUW zqHazvwZGazH@kMeH?-7n$F`b#$t8D;s}?V`%pL;o@9hc+ubj8`Ydv1`a5yc#xTd*7 zqApG`@L0{i3W=K5;vR8I?en*1rh>Z87Nm<+OFkH?Gr1OuvUulG`=TT5TD1&#Epnd% zF7tH6k9~JMlgcjm4SC~c1?p0=M2nPsCJwn{2Ra8Yreb@--5@L&pVcM zZuNEFuTA(Ap=6nl7YLm&>iQK_t5xS)pBORiuRW`0@MGN9JFab(;JYYMd*wyTlxoSu zo30SY!Nq^e$37d3uXSFWE8ihEe!#cUq;4TNwO_jH`fx(i+mbGGzc~VUHJ?a_S9-Wf z*FaiCcf4=(@jC;F*-_o|3hAGhg^mVV#F@)4y*y10d#p^*k&apL{fqK$-g7K=Yx7Me$Y+55J3)S%OA!_7zATU#b| zFFZ@%$C(y8IHHa_)f1ti8dy|w-8K2Z;n{aZ;MEn(=EwxoIf6~eIj#a8hQ8)!6;@M0 zFtd83tbU`fhN;{<*I#q|*ySX>gEI>`mlcBW9nh2u(X5QlVRV%%8 z(!15R;mowE)cUs9x;RxCAKsm?(ObglKi}8Qbuv4))xGQxJZ?Fb8v3SUb!c~9m(QWf z>9-|!b=yHO_LqmBO>6`Ham(+jyyYdMt>A49UkHsktLIaw$ z83E%tg>;d{l5zE}`+inq&;QXL?QyLIz!&JzIY*4XfZwIki}{T$NZNNHs%C}#Tf#s~ zg!yB$&dUXf0(WFmcA|`rnMJ81%)MnkJoFu$j}4o&rP2V_>tALcx1y?CM(=yF$(@<& z5eHT7Mf}S4!(xEk&Mi_hW8w?MHF^!|QVI|$>Vs>epq_mbxHy*W$G#MGBo*Jy2S4Kh zw1MC{I&FaS+3-0MD2sZTh z21U(qW;r!j(aum~rgIq3&PA3$IvmczHNQb<2Gox=qgY(F$7(2IK%o2XX_9*XL!lVoU_%%w*D7idGNIpAYG^Xa7WuD|Gn@ zEQVidO>Xp@##Q5Dk~hXkWD|m82B0cyoqr6tSk80JMA-Rcb=B%Wu?>bGy&nk$Jy^8A z165+))sZ#NP*za(B+CP@pg=>=)62jwR+98PxfE97zX%KQ-ywySinWkPvsv5IRcrDJ zWNFO9D=gO1N|n_y4BJ3iORop59yHi{H;diRkY>&uf8%4dHze;XkOmwS7?(ibaDCAA zE~xI5pFzzF@V*!8+6TIq6OeY$n96EJ{8^A#f+ouwIL7J*!dcw_Yw}yo%C80QGAGjR z%3mAxdTQPv%1Ykxl`g2bn1v4Cv0S$)_R+!1D7jRUZaC7(6`<=Ko(U&GK-`s$_6^fC_GB^F?w!Zd# z+#lQbxZYc=IPwkm_-nu1)MIM~l@WElY7O)1J-i+F>$Pc5XLD^A?`VFiw?yNPnw2tD zD+0Y!)T<1L#uNQ)yptGdyk;=zc8BPH2j}`Cnz6x&ksZ?MF&^48Q|0ZFJFAt`R@a;# zP5~VBp99X1hAMm^Mf!6-VgyCEHqqB~fD7~;oNPKj_cJruWV%D7ad$Fe?*KFM&h8Ew z1+R3XLtdqah(T}5!Rvgf+Gz^n4Nup-ls9Tz`)2S+OVt!`r-9JH*+oa(4jem*d#C{3 z!A)^4fy5(cWbU`bbDtkt+~ho%6b}?wiWQ=e#!|hOV{8l1P)wU|xmh*xDERw8BF0*p zs?kL=8w$|W^kdPG{_!RXBecl_otZ?pU#Cx+!id03eZ)+l1&z%@G{vJjZ-T*c7i1sO z+mh7p9{IRBop8h=;M<>;&Ram1gb=}NC#PR`V=Yl+jtN%>s#IeQW#kk?Cs=KH%~tWR zy?#z8tEu_-PA^AGO)7^+zDEpsfy4un8qljblI{UcZOowohqlp=gtY0)VF)Cvs-LFZ z>SNG%jE1xQt^`<(4PqjCcG6f{6otLXo?HPjzjy`k`#nQY+G>Pdp!mhUfH#hTH8PcF zP@bRs{_35sIt8AcAsPv*gc!Gi)S(yGTQGz%=GD71t{tX#K*?$xV@ zW}yD`mUSO}qfjeN)SG@Bco3%!57e{tu0rI_!8xxmcnOS{V<1CfIb}+dSC~rNUM)fN zGb8q@k!(bwqyS-*c&s8&ByZk$TgxBs8S+wYYn(ONAg1B)RqB1dRnfYQb=g%VV*-BZ z5ANkY6oiQlpc6gDr3C+!SSDA^x_g!t0R8eB0|W71(S3D_;q6X8Y3CrZi$-hvu{Yj5f)A^2tZiL zrboYqZ=9(A?^tA01yV=%kLb|(0A+-gLwS|pF;k{WMs*qk#6xVyfM0JS5H0pUk{diY z`gpfYXuq<-kL_(`ep*xJzjD)wIKvQf3@v}m)ZwjR4hYf3Z^$MDRrUk~xBMm^ zZ$yh!P++n07@8hNlSUfhUMj7T)GuKmuI(DQ7;J4|tWwj{<2HEeKl%BdoFG!hhp2Bp zze2`jj4Jv~oH#JGfrWYVuLgUcU!MePXy|XnNoE z76loD-Fuwpx)5?O+aWBVs!U z6vD!6FHW0&wo^#G4a6*pm#7WU6?pW_a7WysJL8{DN07QGKqHnjM;SH?7?o`XS5|@_ zYnG5D2MXR2<|0Tr9p^h~$lbZZ*ampRCa|-XByy4=FF!;+Bfu+#fo&#}$|%j>A9w9KICZhE%B0T>B+ay+$b$sv*u3v$9g6rNWAHtcx5^p`R#`U5lhZ`Y z$U904dVTFJ4ql73meex$qj8tviYX+)n%cKJ^jCa0a_F87<;*CTz?fTLwCmt_YJA)( z-Q~bsv6##PFY&AhuAw1ws5L~OaRkXkerg?Mk)A3@Z2m*ytwmTeS7tOqQQ!v<{y(he z@H-}p622hlIC+oaa<->Z>YIMAB^cBKkiwSYU)TaF&VkN3?B8uXZgUWS9-LqaOJnJA z(g*>+5)L9q^(7JC!qXxqn|)!z^+g2HqmODJMSmzxy1MTf5tuj)#t~UX<=$)XZ+$IBRu7ac)+NO62HCx~-MnSAHZ{8IA%4FN(KQU&Y z$cLuEJ2lA(94EE6098X2^lX4v?`>VKH7Uu$i!>dW_8rL48j9*n_hrl^TTZAj4x(O^ zY+WppcXi5$B4K-9x>@n%WQ#h{Y<(5)BzZhZABC8h{w6_S$W1%nfT(m z!7$&|_jXPFi1=WBVDx%Fe&vo`{p8HmE|7UFdv&Ec?b?mXlw1%fLcF;Svhy4D_VCW{ z6C>-v4%z!YYs!xn)4B}P(azxAgH4!XKZX!Aj3XW=wqFpG3ufW)jShD+%c|u*6`KbU zZx1VJY6|<#*EDrJiPpk5Mw`=h>>03`5uF7r#kW7KbS{D{9Jl0v5=7mc9kqmlnl*S% z_PD{Q;6U)#M@RMgBY{ES??HwSvYgj^t$*jT2KSWVNinK3%o_}Uy}V?n zjiFS}7CW=;DGU4W|MTK##yYF(+cw!QJ5;$Rfx8{#g<|?r^l*#2Lh>rwZsyck^sDL| zF?uek(4yGol(Dv!z#pc0_0q~;`)(x1t-CMK&7M`p)i;Yc+ zbmaZcr(dhB(BhMB?k!h&BTFvLA%*ATtH2z`KKDJz%iblAQs%#HD$A|LJa&uYe&4F&dm$j~<{4(s;n2By#uX=RV2O9-t z=aT0uTV=y+dhRNo+*bPP<~g4Idka%d_zbYo;I+_=mqt&QcZkwo!JE51o&3`g&s8^9 zn>nbY9?ak3r2J>Xut8<~&i$Id`t92IyBt?!S!`%2GF1Ipm@aff!v(x~5xZI-&f|V< z)5F5cUS}L<`xL?d5%EIP1b2h8-ao@hsCV0DSEJpYLW`{!6@JHZk)q6X%a=bKJ+neB zqA}>*%-Xgxwz4O0zdwpDMvMj~m4JY`Guv5`eSR=2Ii!SXYFNL!0Vh?0ENPiU_ z$xuIz+3!_SKUc=i-60S5v(??kAU*P(ynTm|r|@|>mCW_XqK)4XB$%T`4ePI+Qr|Y7 zw4*lHFL&dVS?`&aONzOCVVb_gO*zit2$xL4xs8{4F79<2AAjNsKhH@(%`HLxcm zw9hRtE7s-7iYar9zu~Lv31R=9>nHF4$;VavG}vj7v|!Sw#oM^V(yY*U{3_d%Kt0I*;UoG`CSu%!;9D4(igqkbDs1 zgRyie?{nE4k{(pqx%zTtuUylh;N(1dRjFp-h4njHx=w`S8zoWeEHwQ~9h;{)f~u{{ zJ*3;z`vlky42IxTHw!Sov&0#U4fr#e_S~+w`o!)|=sT=;*WWNV&Ccw=T_YVh%&@?_ zS?imBw1}rBVy%`XpW!>%HwQ}_HJz*l?>u;8u+z?(Tm06{OYEPd!qWl=M~2ebnzT!a zi@XXP!Cl`5REN_!Fxn65m)D=S;h0?2w9fik!=~9fG_O(tJ2yB>w3Tf%Rflnx-^Q*N zu~9uZ(tc5ZYTtit91j*)9mBSz zUa4Tq%3D`Xu23`eyQ2nbTIAl7Xink5q#!)-r9rXK}SYNS_IZ zy91WBWFx8bkrwJcZVkBa#eR&+$NDQ7hI5j8lGt~A?aSa*^5z7KS5xcF6Sm5M{K!!cCk0pGY)Il%&B_^?ecME;FjN8HaRayFzIpD=pO=Y(u) z5#hXI{My&Iiqh29{Pa7u{jpgO`qevfBRZ4QX{oSpwxlrcuiBj6Wip=Qg<26fVzG~< z?fV#Ku{Y>+!%*irnM{nhXU51@8%^7oqG%0C_$l}88(cZdBAzSfkD{B8j9obHoMkL4x@pV^i>yI7IGa{C z+XT&pRkCb!*PYwC&XRcOiU9}dr+7ah+b z?P+NpcQY=9qpbX;rThp`6F}+W(%HA8Oc;7a9dRG6*5~-1-2T{cG1^9a_S_a5niHdZ zSg9OzuCG4nIn@en-G5!a6YBWK|NScqt%E|N0_cb>8b7!{S6)3YA9fQR2d9z(hhtHe z?TUbHTkJ*TCJbJP^4=+ZyF$Xwg;UIeV2}OZgUTFkxPGOC&`tl4rh#mT3+|v`<4OzNQ`?92FPrF+lT4b(~77OMb8EWA%`8H<@9?16Xvm`ap9XvxSqBevwzg|vO~ zB7U9zixm<@x*Rk^JG@q+3m*`Y2Uo4Xvgq_-4oSZY0tfHImD6S?t=u3=OmvfzUe=vW zgklW2RK55!9n|CDIZQgl|3q=DgN@uaUfNrY<{DKAP8(>zDO^ueT_~BhE;tIQoBrUH zw7G1kWM+fs~d`9(PX+xiz2@!M?)K5E)k=K_)Dkv=g{1DPP8Q-1c&j0gj z0Wz!+IMBh#eBtjgcC~zhHTHiBEuE*zeq)9H5Q5*oG1HW>kyqW;^jfjIp`<}={!-=w zfqna@rUnh8!LSCg4|$Be=^ctox(uB_ki=!JRf{|~a%#WVhYbQWfT@)Xm_9W*ODv`s zz7+nAe3G>U^N#sML?vSba`q^roV=C==+?Ggs~U?wGrfIRNCiF^`eL;~1y*M$B%RZu zON!W@>sEm`!NAeJ*spjN45-c(uD7qBJr*Sum>G#oDy1oKUYQTmYBm~ZL2WyB!z>mR z-^{XWG_q>21aVeJz=qWkuw-=v1jt8#p`Z!&EI`|4QX#RgUiH3K25FeHI0P*|IVtor(bPIej%k_Q00!%gN(e*nBRY;Tns5}|OJzDkAMen6Ez(gLf=jgGI_AG?m zkCB52!UTukmEp|sM0B%@*raGX+ma53k78Uy<${?8Der`NVLI45LK>(9Ik4XV-HDwY z6-z8SyYVl9$PGHF51ZcTXEi){Aw!(XwV-NzClb;wfoleUFV zbczEq^|C{r4yDhS+wkO4V5o@-$|-|xYLlSiWg+^;2T|f(fw}a%5?p%Vf0s*bcxMGR((hpVi`y17P3w49?544yj7N zi|f9${77)RI)+}tHdf%L*=XVTE7Lrceoi9i{nXS5!S3R2xO_Ay*Ikfh&;HJ&2SQw^ zAAvovCh`p+qwqdEMCj|XaLBrNUEVsj={OxXlWGfW-AZnFMD_8kssBP|0_g9yl$END0tfcMphZM@}rhkK2cYyUwT2BQ6gmS zp(}ziifBXtSr-Qa$BGF%-q(|KC0NQB7KmVB8#ofVJ)3Fh9YWVlaQy7d5f|YI3j`Cw zIDIX_BeO&V!(8t<;JY48hhPk$3I?y%T86&yPyj*2(q$k{$wfv$Yumeb6FtGfU#5jD zR8=sQodv$aA7*uKx{0ev1SuW7Q0_o9C(4xTODrTQiO0e-=+PO@2|T;{m}yt$t)?X`A?Y2OK~wwb&6i159>|w&At3CanjEv?cHtS0 zZxJsAMcVM!JL%O|sN;&ExQ9Ge! zohTZDM3IR7abpO%lh_m;pq1 ze!kI`9Gw)M!=hO?G?TeKMbIR%1Tp%iFm4wUo3WOgsxX@1YMHmJPqDUw)2Y})wF!=N zTb)ZjW5GN`bVgRcA@{KJWz`t*XDB0p;uj!QUPOz^fn=kkV@9JHXJ&TDl6V(XkD|>< z8%AHacpXM6|2Gj0YqCVc)vK2j;)se4RBee`0q77Wob^zXr{VbnHq)1Vs6uxGkmPB! zC>rQ=UWnL={c}hhy=pbxK{%}OR0h%eX-GNBgZYT?52PItf+CguWP&!ua2kl+uN3XE zq#q1(k&$%5V5gFL!ouaH3j@8L@4U3#l%gGtKe6c>=4U3_4AYty#G5giyo~)j-g9JT znvHDPR4n+AQF@gY6+HCZP)t}HqMQqNL^9Upqiw=|r(i+k6AJ>UgYU-_0rni|kkK}r znMVWLpzmB;7nH?v=GuLL*k{(`=Qsjvo6v32{#JZrEk*aVP3NmRd3Dm!Knm-gRNw(X zozkoRwV+-M9Y7rxAdB& z@lQgulPA+Cb|xCfzXHNv2~Ai{DLwkOr_|rbHd_q!UgaTsbSqIp58LQ$%W9URj2(J< ze-|S9BF6Gw;w&#K*=jW>=*n*y89+6nu{r5riMW+Ov>di=se}H&S7{>VAA73vvqy&n zZlvkJjh6po&Pe}-Ud3n1uYh6?89nSBlf`UMR|Rs=NV!qMYze|`5yZ%ckI*NXD!t#a z!oMdL?ey1rxQ0xtW0+~BmE3f@MLjaViaD51nGZ5#b%V-3h&C%qhxwFws^_4@bR-tj zq4giLtv+N4cOkV?++z_7g@U(4P#13##)+m8ABb)lVFzO`+1TT=>Ghui9(tD~3WsDlDGfJ0DupZQAf$Yq#{Fj0&i;=2n$iAl|> zWA9F5iGaqB1Y}U+Dw$>q6r_y+H-Rv5G=r=Hn}h^tX-j;eWG0jyVa+HhW{M9~9k#%` zrV*@(BbuF+beTHRmphFcrJ$}aI9h;#l%M3; zK7+lKQHR3oQHJB_ST%=V+pH{8wocHYYlcevXhfLrA;?qhX_|4x!VxLLr~AP0!0E1Q zom9(SA!2GA%S%-T>d3^Zl&Bb5V_LElb65VN`n{+XNO4H*NlI!WgHh__^JcZJ4=5G? z!<&z!3#xZnP*1FHUpD$@G6{1at{WNqf@Z=h0q}-l(2||*hGMqQ)zZKxYWYo>V*75; zxEIa9wT6x&ne7rGuNtJf(4&UlbTdS`3ni!W~OldZ^%@RT1H*Gcg+jQxgr}nQ*CA z7RtsezNPFL0EopYnqx>yrSFhI_O~i!Nb8VbPXK3Gq|1kAh13X7_RkJ6mCaB9Af;mb z4@2xp%mn?YS@cPj>#H_$L&TL=2!WsM5E%?}c8R04_(|9sd=xalC`p>o3PpH620&5- zq+uZE9sf=pJvrKZEp03vsLvlY&DASmfhymr2HMbMP zG`V!ogvnv<^5!Kv9&@zaVc(pL4QFi8;$1~XXKaiELk?Pzy>`?}&}T`;n1ccj$rbY@ zOIQwz1BxUSNM3*wvN%fI41`W}$ivLpx9XQH& zCCDykRUY%^tj0V9_7PJ8Xp#^N!J^Xsl@$DvNQejaRnG?+$$an#i%|e{K#KWDtKwba z7IwIPj^`@g5kbNFrV=Sx^R5^o)J9NtW;^G=st;Hy&TB+d^HJo{h)B6HA#X7#`K6Y= z4ja|At>$7%IaQC5M`E`(2TkL1!U_V5b|-OxU?31lwejGOj%3h8E-c*nDFGysLXFR( zRvJ0DiS*WVCI=HbiUebNWgh10aCg}Z2)d+mu&S7Sx7|I?biAMbOgQvDww5YP5So1^ z!#B;0+ra3TjRNnTFl=6TCybLeb{gwN9uY<~3jb6mY1E3nK_p+OiPZV`BbmSpUwany zIEZrii}uJ6z*VZrKCPM_ny9RJErz`Z84Y5(DCDS=%HoC$5MGO^;(?jTVve%NP&sE1 zO4(N}?oSM%{Da#FMJkIc_-0JtQwM@@53S_=CLwq}N&Kl9h>jKW01im;oR@l$L;qn& z(UogNE1N-J)w)`(#-vw(aE;*_u%uh)l34%=9$=z(;&4=n$tNCH%=__GA4s}FyaU6g zxg}Ui9AR?O=7=YY5oAIM^Dw4+YgpwZsthP)P8F9+MbJxZclEA3>Y)6OP|&*u&$En= zE9@CpVurY|(2p1EPOTC;E2yrt;_c~#Q>JG#GPop!KG>-!T|AXw$15c9L3f4H$4dz! z`@#~%!QXj9U6fRIol5Xj+GS@~ezJrUi?_#vMP_&{IE14Q!*VpL_CU2qS|vwfH7u)ND*MOMs) zTUXB-M@jl#lF%NzATStS8{|va26{|n+qKN7T?2s`27!RWZJbJ&{RqLA<_)wihh)G- zaB6+B{d5ywLr{>1(*qlNB_VA8z8hI_Ai>LiHrK|2{oGgv%=e((FSz+7FS82meuK#a z*yZ?>#%0nGIKTXnl>W-DUhJuWYmFl(+4lhf#2|9oX$r8WimkXOo@Tqg73g)~>l-s>P9YAlM@4E{qG$)8^5* zelZ?$0Fj1LoHTMf9g>3=IN-HzgrIY)gVbtbg50pq@HYUXWmot6Z$w)J+~emg_i!5MxrrZXSwor5GWJVx&N^2XH#t~%IdG4 z*z#{Ak{85kJKZU%`Ritf7~l!|ppAMa-7ZWMe=6xiDWSOoEcRg|bsyFX*rtr5*R_wG zjD0ubJm@WO>>@_F6u*AcKboIGWS{MUc1f)`c=_FWr;se*s_KFxI&K2vqt|nIe(k-I z{MY*2zy4#XyH{5_VQVUX-lKOEyqyuRtkrTZ~O>Mv_{{q#Mt`Gz~8-6!vH zT4DT(TKqBnmjGU7evty-(L1ErJIrpWZNdMsO0Q-9q~cTSh#3r6XA5aA`SFxYl=Qj9 zy&t*tc3M3<^Gxl+}MK>Kxvn+D|ZaaOW5H=5*bG zCb!^wj)c>N=+e)M-5WzjlWitjJ6CwbbPegTH}~8FxMDHvKCyA(qL!?(fC^zlhP`F< zxoY0SgjU7mzc<|OTOnf6!nLGJF6?K~NQ@P13~5jN+ZbQ=y#iUHh85P{xlN4QDu4i^WC3T`?ZR49;+aV?7fa9Far zMK@_W$RZm^nGPF&1=Dozc$^#uxnD8VNib(U{Uk8{+I>pvYC0qw!4{xFA> z-x(0P_Xn&o0bdOCL1w)oCQusyiVS=JWx9$IiVM-CvH}^y<+_Pad5ECE4S@nP9X7LbY zR3bmMCtFLh>dCb*ti)_HUeKSm(ah#b7?@2+S>E+zqd4(9-Mii@@U&+|8?~tZ65!l; zM?^wmRq5wHy_WP|DY=+o)uK2INSA zL}nIv5=d#z35p-!V4pEU-!sSl@0znwBaaM-cB^jo76&R86`H8*bH_rEFe^sBPKYay zRU4Z2W!}03wLZ@S@mK0#2D97IV#V~~f~^g*ZzGHj~U96(A6 z8PWV^>PprL${;nbc_nH6nF!E`;GKBO0N+7=`c_f?j;B)oDWsd(tIM@!pkH%qWzXv2 zmK9^a(N~HEY9p~q!MC;f5nzX)(yN4+3?}2J=b2)DtN&&&8;QtgtWO3$Vsq|*?+^$? zY;|To`tW_t|E>`+Tj`<%8o*%0*tV@qGxiSD^Z4c-f zA)tVS2Vg0`Jn-*tOgtaF1&diNEcJ4wq4rJ&Bt$HN-_JO>obCJs>o@_7-%WGEi7=kn zycLjkvEa>1*NbMW<&ks#mV%`Wh;TO02|P3cX3bmRu0wjF=|w70&b!#R)naX3f3krTY0 z?rsoxZ7obkW&rE5gjyCoXH*|j-~>~)v3+mI3$YIbkf}|T1&N~z4EI)tCd~*E<@osk z0A1-i3?s#KXF@UI%_PDli>L>K0CFMxUKTjgnFE5$CTgRyg&A7swy z_s4PEmF@CGIOxM#0YRh`+8#Vi`0bv6yCgTyw8ZXJhspzK1YHT67HbkDavLg+zC*ckiZw zZmm@4)}7Ll3iQLVa(h)M!6^EPF7AI%N1vZaL5Ma)*fny3f}@J61)uC|42?chRW2iUK0cNM91f^egrYF;YdfKylPIGU`<%)F&uB1D&PSxAS*garjd zL0>Xn>2>`#-XTJr&xBvdOab}}LDs^O>qbQV$6)qGe$3Mj{=PJHO$WDeI%X!TvkwJR zAxtNV3q~brV7}O<)m?wQ13g2KZ?hCg0*@`l3dwFkNjWbT7cQ>cJJW$BkH273K%{>| z;s$Xg&|foeb&z@oNE#fv7##C;SaT-UM)R`;5=`>BpbD783D>p+E-3$`pln8ntX6(K zCw%stieVM_AOir;mLb?L@`VwcdVtJ1JF|dI5*!Ri`OTg1VFC8@Z7ICuySXhM%KqJ;Y&I%<{()==8pOS5EeE&(5kP#T zkqE$JiYmXHmNpcisg$QEp3b!v0WAy4Ke6fzy&pl*3#DYt#jw+_s2f@M`wfODLaZr8 z19KUXY}C56(3CFlVJC-#T_0O9{@@4+tZ5Wq|~F< z)nPK-V9+djn%PF%)QIF89>uo{o#J$8tI8P4Hze`1@R}lsN;?9F{_-IJY`cD=O+o&k zfT%p3k?dzjbhAsNxh*f~`V6A=ft0P-2b3;cMzSWRLDa-vV~PbpU%Q*x$$vbuMh3j3 z0Eor2we-qJE(jO`gbC{GIxR*&Q>97!y``k@Ev`0;APR!=RMI&G9?dQcN&#+NFyDRc;%bt6~R+Vyh_zNIpkW#fk&Y1)=;JEY`g6=M{`|= z&^bi+>s&C$)XsHM7p59MLQMt!T32Pzb|C-sADNNR31|i7A0%n{1-PPgMT31lGzy%0^HRS~P}u&=~N^AFd@32hnO5%gB%gO7m2$qqERx26wkw z1Zaf}S{#rLo5Uc7B9bI3g+!S!zoe_?6jBE-isT`9fmNdlh22CX+&K>f7BKVrEwPBK z0mZovV1=k>pK33J$w#t?t5k(BMS5Rio+6slv@?k9|DggC$fC&bv277ck`5wY0E>YS zfD$9JRPWEvfe5;kGDS(!D@Bk_L(7zgos}z&DX@<|Y|H$UU8WG_F zb|^f3x8@aB!w@O$u{dpw9G(qki=#e%Yaln@AE!jGoGS&An;4~!d|0sf38lHwOgZ^V zvL11Qu#7mcfS+5wnS*ZswUNV!rAT z6M5i)Vp?-<5I&B_#GG4x!0!r-qSk)Jt!WCb~kg{;DTwi=rJC z^Dnb&5p?#>4`Y8tZi*GUgl{YyM1hPC^2Q{J-?bCMw=HWK%^mzOlgTX<3*R|Jl55C~ z#twgYB;y!=Il;_r)*8!Eq0;th!IEmN5nZ)vJ(@O|# zndBNF)1TV59WRTN21F(jLx)D?SSXoQTr% zbK$CwmX(_$*BN1qNxe;j1gB%lb+(sfnAIFxFq^6CYAuF*FnMXrg!b78*jl`THUH|e z57{-IT?nu_7)Tt5By*Lh%2dNg5SR%956FT5t!V7pHj_kcf%)V4(57*wIM~Y&2iz_; zAmbkfgVxT4sj~oW-yo)^y!VNXj)Z^gc4(B5%b!R=7COoo@|pP2h@w}_sOW7O<~U9E zUJ+jx*UZMuT7in@EDPnT+L*-}@iJQ@Xqf+|6Km*dQk1?XH~wzsGys+`tt)LIH;p+o zwgHU`=9{~%yPRajD?ih|g}>0bqH!grEqFP<0$XZ__`?sj0o(O$C(1a7TlPFu%L&Xc z9p-Y8#(?Mte9nd0zAA9gp=By@1Hv3VaihBCO`>$yM|I7cNwkAOaPFgHGLQ|=cF0j} z*qML81H=e|q#Q-%xo9-Gk2DQ0zn3_GK-@3YB1c5Ni}h?GJJw{#hB9I5MT-!Qx1$=# zx@$VghrWi=GgX@mrL*Blq$|do)wygHp+mV;t$vu9cM2XFkzoNMI}}*r-y84=3_5KG zYK4H#anepO8gw-WKqQzEizv}g0_@P!tx(_rp<(o^ABy=%>|nXIti_E3D&QbE3CF3B zwZKZ0Yy&>4v({|{di1A)DpxEPfLC%DJ=f4uvEbb@FpEOBj26xounqCWo{09 zByGe3K4Hxa8LN|!F=GDHQ7{P>1qtGV%nx@Et^YTsszX%JvcjOG}UB0^E{ z?Lly4y5h|B_fF2E`geFX%D4P;w_CMVHO!(u^Vv0j!euq<`($^Y?32XF1vQNPrL8`KnPx>BuYiTjYaYLL*Lgi?0 zbrAY#g5oSM+L8zVPl(oohJB0coJnWTwo_%l4Qw2of&eX<@V#`p2d38`w$@|ScRXw~ z|B!t3%cc?V|mlOIR)#Ga=>41k|RtJL8NtB@^H4fmiT-fniK{nzK zqgIxaJ!hx^6I-1F%h9=Y;U-4hxJ7lfCB=85NKa0*g^lDpAPA9K((@prZG_L3lO0o1 zSf}SQopMKR1A0s^MqSfLgQS3yz+*jrjO_5zOqfzKm4rzwx@KIAC>0L}700wN6=qn? zS#PnPn4=>z2heAWms8gg-I?;Gn3u*8E?0W0&(N;@p?$vq-iAna#RW2gE?uV5pCi zq8QWX-Z<#SB1KwI!rRbbH`_rUTDgygnxiC{T_G?KU0I=b1$LH`OA4m-X%hpaSvhxw zfl-q)h(B0v5qMUbp4~sQ7Dmi>m^(aPz#*_#FSRY<7XzHsT_YQ690;mz7;nZ?MZrN%@>7R1c_E~Oj`hvYu{_H=el*Kjml@$VR*%&?5KM~rnhkY`AgG`h`ie^hm z+HP5Jo5#4d`DUaz_goSE{L{|5RzEr5 zps#|i=gZ*DtgdCj6D>r!naT?)vLz1Kzut9@@{Za|UOjt?ujeWo?RwlSM-P{tdY-_R z<6|SVa&x-zgsOGU<|NOT!`WL-b3D8zpqx{y zB-`?myDh=<{1fkb9_Q){d*Ds|7CvQKZ+of9qiVG zZAw`=GyF;;@cyagrlCn%M}}Xw=U;lhyx^v)C(*!JfE(JSxUZ85x;*%PWH#& zUM}2rroLzYHX7S}MtapX-eriF$}uF7eUd9` zhmv6YHvcRC>-|})s1}kCF8NM{BbRQIhRwLwi3*=hlNG(jvwW|;!mh^aoVGc*zrWna zD0@Et9l7K##Q8%w(s}pUaUPVc;k(d@)4bO?FTj0Lh+AW=>aVj=n)P}PYX5#XcLJfiIJz7#6x(E zqucbklm%WD&t-LgAE#xmf zZ|aJK+Esfpy~N3^J5m72V-9=-rqnP#h8Pp~Nqk2=^I^K3r3 z=HXS^g%=Y}2*D|_2lia!TfKL^1c!c_*_}>4`IBAg`gY3PQm@u=-`PvrgZqD}yMP<> zP+?oI@|=zL*M~D+e11H~?z}X2fOqt;P^Q(?uJNv6BKw^^oF9raRs0ntRPSFElDof0 z)X41x$0gGmv81)cPBI8r_3Y6+Smu&Aw!Y1BY8&a#%Q4D%k>el4)+w^u(5OdjN}#S! zO3iB6F2DHU^j|4{{8}w9K$#2aQumhUjoin`n-NmiO*S+H3l5uV#`o{0=_h;Fs?Qmm zao6?}nIB2cw$rY3+|r@suJMoA{txKGe7=8=yVV%;hw?Y7aG&_gz+t`G*rufYtM-t4 z;eV%;coIh(&c3M#82^(w#b3XE#mY_bJ0?2+{-Kt*j;G<3z105qDY~E9m8*u&5)TzT z#N_q!lc*~{b^HR`ioZi0)`|0MO4|jN5|i`XVn<1;?WLFF&uA_*=iP;MruXAT%72Vo zaj#eDI(z1z=+(bV#Osl-2#u)phJCFi+#i1C^fTd8T(}itOm4)J_C~IVEK0uAzEF}F zTOP8!TEIc$YDU75oqesR(gHX#e@Hy+))PT-6_veWkECz?4`1%D)f zJH0iRlVhbDE4Ia5b@X#7e&4>uJA=j!$Fl4mzN*O%7}3fct2S)WDS765zkUYeJM;Js zpA+GhTV2g$M$V1vziyV|?{BkMS(oe^=gG0Nx2xHZATuy`Il@X+4wW%sz2QSaz|Z23 zi^uCxJ2DHhF;0$EnRii6V@~ZeSJ@P}r?T4fYWl?;pKbrLwzo~OM95eF^~`U7^Ywps z7fo#}&C=+t7hXIzu*z}E8SRTT^RdFw#h3aW!%s$t*JDu*O{kS`Wf3^>!Y+y-WB_lIT6hleRBRRKq=_kN4s< ze{+6}Qejv3J?7Z-B*HW4cfrTe;C&JGyY>F9-i-FvwJ~|Kxv=N^N{=gBCimw)-TKi> zE3`QKqRHz$m9i=uj+V~ceBEbW)FVF{UFI23e|6p9lhQ0bk<*4=+Kbl>cj=~Wkb1n~ zSSs7+`gi@f_bOk+H4kT<;!hmTM9U}s$@(0;;cb~ppLv+RQk=D5N4&rPhOW4k_Ti;Z z6$6qp@#W5o8+H|B;5V9mzi`?5RZEqpT++N-l1sp_dx?dfnBJ>}YX9G7W+Wa(C)ez3 zGpQfa@*g|D1;6qMS5}X?%HV3lu{F0*80|LIz6kEr|Fv1vyKyCkzmT+S*oFW3qI^!$|suHRZOvgSj&L4z-; z`8b{5WVb?S;FXQRzwb{Ro7ltFv^Tb5!iOu%?YXqBV7?mcj1)|O?UtkO>i}m6X2B_! zv?(#_;T4Ikrt4?TuZ!#atTq1oW6cRk6=jh~jdiOpzE6xx*(3gj>zO@^*1*TIHB_h& zTLY;H^7*iPz`<)+qp&Aoy|7_Mvas8S1pXHNBq{AZ%UmvX@l*|y2Jey{S>{feoOMV$ zo_6>jUxJMx0$i_g&yT#xq+JXOB(2;@f`OJTSRvic^ExNF;_1f4-k1W)*ni|eH@A^N z70Nw4?IcLXIJegEJ~c?-CPVOW6)FU$#Un3PFAOc&9Jf=;qD@cASUnL=alk1r|Egif z{_A~`JQ*TeDW2rA*WTi@-s<%xOyH3{|Le|q$@4hmgi%CKqV)^GRAwVJ##&>AzS3W6 zZktYR_;hXgGs#*}@BK@pY8}QLat&nv{ZsgmiZ+9V#7)gmf*XNP~2&N_U4y zsDP-Tlr(~{G$;xRNG(gM)Y8p419Hr+8_c*>6wg2X1TM36sc(c>Js5^^q)x6Y=8U2xYiG(D6@@6v@rvx(-N4ysI z((alc&%@rWVPe3#dAkLhv?w@G{%ifI<8^dJe+mmsl%+QQin0VhrI(04h9@Cc8MX~d{Vr6+FAWL=Y>zlDCPP6nQh;NZV5fCGubb_B}Nzu92+W;@bm(jpY)1N z%;q@{u#XrCbaNX>I&a+L>bKZeH?{2OtLyyMAaY^5DTu;$6t|Y(Ck2F1d;7;NQn$(B zxCKv=Pr?&jJfbk6%aS^Jb!(mJkcuK;b%fp0IwV`r8cfyfm<=X$SABo8!avx4y}2p? zF=zfxCFvLty0Kn?rWNTYvOxm+9KxW6rtjQ(mhD{eXRv3r|bU+DGUv_+1Ql@TWO~v zA4BXRDe&L2S`Gzsi2!a#mj(4H7lHdff-PzL*fPklIA~&Dp9=NU`X}2iRrv!Melz-Q zejv}{$Z{~U;5B011*ZvHA_)}W=%d34ah}Uc4txv;=)1REm`)BZD^fq6WFiaiQypnX zm0`m+4o(AIDphf46I`(?=**6`v+yMD+q(Eo?ypdd2bpo&cjsFFYvvC=AF*f5RqY(n zDQWGYkCx$F4abBZr2nblRn7JzbdL=kp@2p~`QrRr^N{bw1A1b=5=q6-eKtFu*DpVn zX?dWq07S#b=v49Fg>RYc7xK?4qFL@4x~+n4H?G4lRHyVW>_mztn#wZJShpUq<^7uF z<`{tIA<6hRLSqO$f(RNwe?h7BGLN#U9HST?CS5fR>o@YzdgP#l!BQSj&-6F(YjiQ~ zE3A)^hwv}$4Cax0Wsc76W&;dbAyyQ!q?G>kvhgKa^(W? z6 z?ZeDCiHlFBrHXv@g&ddkLJPYKTl8|HX7`?V z8_J(VlG_-oJFvb^aU?dOVNpj(EEcey2xp+lUo^i%<-?2wBExPSvP0-ls_lh=h11yx zTC=TOS)=f;j0m~SimEFnNFFGo~NF|9z9TCjgiSz;$gE59_l z1KACn-PK^|W&Y`Z0{$E2F}09m*S<9Zx)q1)HDWpjL;cv~&kK|@{iMlhtU2V7;@$W6 zsU^e2x>>-f)k5mFp=BcEgENLoDSeMj62>^A9_5JW0`%EBjc!l7tyw$7qedBBO(Pl> z&@RNYB0z5wTE}=~Lx`vmW-vChNWd>+FlPOr`!y;at~|S6s@Ri&3v~(}?`a#=K9K^D%~QnAtLE0JvDZ^*lAbAK6K`YtY2BHP zTS);d8<~#cpm!~nKa$N9#vGb9vYFlme6iEp^0$@dW`rh;NOycPvHb3!;l;5Xa#v}& zglM@2tr8BfM0HQ5Gg-i!xkGVD(dSc5?uutlDKg9!5mB zOYp=9dx^YWGs_)gR)FXFM6A@Pt2&&=3mZ*lka1VBOwF#-+`8cw{n@Jhsor%sr?sf_ zeWW)t;2@hb>KM`{eDtB%iUFvRLdCmHg~l69{3(0S_pOS^H)d_})Kw~$7|T^(n&-eU zeT<63ZhUgeGqHOWUcAk|Sfkb}#SM7V?bDWco+c#Gs8}GSTjTAvOPY-z78kKWs3arQUdwt(aRY6#{z$Q?N7097CMD^8m;aKM zCe4un{N953i9k4zv10;DrDK?x*LenUI zZ+5_yzj8oOF-GE@Ehv}r+#~rw+ zwlO4i8ZUtc0#jhC?DI~>Z8!GDq$^2`7Q}0P?P4#V<{(#zh&bgVnv}MUh$wg$pI;+U zh|_weC^@x|baSG{$ZS4#!(9pOQj1-@rTkV;sDx?vZJd9YZD^SykpN#NBN^?v0tuV| z6qaTFWh;ax+j%z5M1aRWS4F$+RE*!o;|$p8GZXeuN&KBRJ8+4l8Nc^$<*Qx{K`ayb zkIBDiP>$y+Z)I77*u+adnvi0Xlo{jaVlFgu&>BK+)>hEQy-}jrhy~gTZPKwHDfBYq zCq12>{2;WxjC}A1)%eUKi0!Ew(YjNKF>{S#ADAeM-chgO@U4r(v@)oq=_%^sAF$?7 zl_H0df^xH66})1qSVONXwKUN-*_gER?UIRZnfWD!e8ujhbF=9Fq$*){g07z*GCUSEFU92sBfi*nf6jIQs-vQFfE4TPf5KRuY4wB#@aL?>OqCL=cT;~ zr3_pTU*?P(Vs|wn>g5Jt=DUsA6||%2O0p7yn28I$BjRNVNEybZV=sU2gQ(U z7ibbjkMToQxZp{~XJ9t6K%ZiQ|Kau%5>@5T32(+vew9vAx{K0EwaOvxI3Q(ROuzaf ze{~D-TTEUrx<0ehU2uKYg%}2zF#B<|`qWsWf5(k0)fIy(BsozUZ5_|s)t2@8U$kBTIZvBzDYx7tsvonNG+lx#wpSJOM&L8d`rhCICx?OM~yfXoDO!S&mPD z)_byZv-qscbD&=vHE2P=8bT1y*f_#t5F(^Vbk&&K+`W}+jUgL({RQCMjV@kjlly36 zd45naJc)kx@zg32DI;K3FmgG>?91dp>X9O%0If4-OxMvZ#|H~>7q#AT8l#&Hm?n-X z9uAJc8S!4i6)T{{D@M%xgFDWDl!;xIQ)7g~Y66zZ^=~8cZxw#8I_Co8i!u4(!JPAw z*sAf4jSXw~N_?R>q*Ugs>BW&UC$m)qQVXL$dNX0<6P2Q8vV}!Evf2`84P`ZP;iS~|c(qpvA*Jj5re4o?^lmaU68#P60e2&KLc%lG(Onm0Y{kLM?$`P-7 z4_eCfWL=5^?WHMrMsh**g@C`LPf>rdSeo&^D^Zl7hmW?Hsf@wfGg+f9#c(r4K6(*$asLq)&nF*0V|IR! z?~Mvj&M}_uoCzUTdo9PM);SVNpj{@L+&NB_fnq%t@*`=#*}k2c;+w|`#DIS)Hze3%={VqU2ucOrtU_t|T-w+NZLCnpz?w^bd zM@3KIHnUsH3`H}a*SnpX7g%MbH zbgd_F!u$PY`7XxddzVtkEbw|2a=LjmvAtA*oFvuaRsPmxdGc*^$11O-#m$=DY>H2H zNeEXQ$B<)X*Q|Y&JH@-JIfJ3+)_car6S95V4$Ojc?sRz~3aCs=ibo-03E_3Ey|KC| zju+7Qn+X|;XoLHCoeG27^`;pL4DvqEOg4P7uE#DNuWt)OrZqlBdpm8FpCx%;_1D)2 zChW-M-)>~Ha>VV(A)#MA)z%CkM!7*P;qoC(P!yA*G%sfVW$-IBULcYp`r4e>nzY_LG;Qeoxz=#96khgxv7CcoU4 zkN76-HI*sQemXVZ%%Q z)mx774i1nF!8zp)u*Urkao)G+1k)^lWd59+`Ss}`gu*@}Kik)py8B}S(ZWDU{nyk% zWc;5e#Q2TJ`aZp}mHH|RyJ}3ou*%PN^8Q+`Dm~Q&tm}hb66vor{$->Z7hlX(>>uvl zb^GcaoL!^Ivk?2`OsG$J{|MtVt|Gb>U!uSVhU^O5z@Uvx#j*vbNg8b&fC%N6ubx|h z0EOdc6-RO<_?-ldQE8U&9Dy4woY-3dvpR}$Ir%;sWv`q=Tq1mxU%s^b-b1ubp(J-J zUCUSdx~WafJ>J$!OOKkinDrcDzw>rjJfeb(`i0sjZxtxI2RHiMd?wyB#5`gWFSFrm zc1%>JRhX%j#VKU-nW3+Ws(<&A9XmBqi@U{4b(|Q-HF$Cw|JTj?B2cz!VgVuc z_t7@+ zT3}&*O`|X8J5JliD=mBF&Lmk$cGtmf++|I(;n+0EHb4EPbb%=Dh&}b!H|luxphU3y z7Ed?21fX1Bpu}WDtVA9h@4tD-Ux&E2iM3~*hds0~n-Fy}pZ8p>JI8v5w`uv5UJ#61 z5|xn3S+uL7+NZJY;4~Do^wdM`VPm}tQ>RJ6B=bz+#+OKl)oDhJ)(Qz5L;!TryLuqrQ{vF@vNh@ z+MC9{SO8L)Z+2l7v?2}fs+xCi2mW9swS=*4c=vd}z3RGpUqb#Zo@FDYw z0vDy|Uch7idlUg#c;vjvtwf#h)jm=HAUR9a|FRDnA zzKx(wYKMh+PC)}0#-OuQ#`R;EWJ`}_3E0!Z(D099oCxXoY|-!cCLu+Pw~fz4EBpZheaGOYm_iZS!UmFaqrvJ&w`UihPvD2c4#6o#Hi{ul0m?dYje) z(i*mfHQv&P*Ck5I+P4oaG*&V@4aQ+++0gAbvy3=?)dj_Y1*oh*7@ z?|!cOanpBPYlwzR-6ov-14x(U5<%m7_&n8_i7A){jHvKy85XN>@AQaHjK zsoTK*+Eg*7QCI~%1Lw9s;u6oc2#jv^-dH9Dh|E;s18yohE+x#|Uc-J}A%}D5wK<1; zCvk#J+oOdhx>v@)ce4TFT^(VD=_bor7e^V%*2th|3hy%ZFm2z4=AO(|!A#Qqf@s(1 zUkylqK^gRrle-eo>$!Z;qKO(%ZSyHd&mG=wAm8Z(+!$au<_}Rd!gxYYAWGDuM(1yZ z8B(MufNt1x!FK&ZJ7WP45!;5mLZ=zAee3|Ny*^JV0S)D7w2|n4Xw>IVciwLk_*fOY9DDY{!YE%RqD`H+e{en>?go(-%Yhk>!9ur!KJ_4EuezZW# z8*x&qi75Iifc4TAr*2_$#>(F{J#k&jPxS}Fh{MmaJ4y;YDXQvcc)Wv|3P`XORwf(@ zV9M_*NA_9G!g2B|DCW|X%dR;Aei}~;m*8U#iRf9hW;MXN+HY=qmNNA!?vI_qrhAAY z=z&4VDgCzKmRlC+D67AfLzUOMnRez(d{_&8h}Ap5wrTo}Dth#tHu!3;ne>e?h@1}#m{!&eOnP;{L4c3}z}p3dMRLaV|}`t917}ddGaHjtB7UG3|2W z(EU+{10nyECI&smhncD+S!-i5tD}bq0Tv;8N>#Y&0nAS{c-lWsif&GEI|+T~B3DNr zr>JA52C$GDWgA&uy8Ck*#M|hLfhXQTk93J#X7Vyia=Q9IrM2Q>DKK>K0=F1<|Zj^q6Q`I^D?Z_%KtybZe{{LD>{~S4Xftz zBcl!JAy;|{7oS@|;5>eSEq*|KN96$h)_vp8*;jhxG*OgK!jsb{Qe?X0FtdjHDPLO` z^K*h1q6#5v!PZa0{yA>>hi6c6kkaT$PLcw}^B2zTs8ARaAIxcP_YnpBnzQcPXTxZN zWh*1*_q4MJ)Bap;(LE$w5i__^W;%QhGbafLy8jqS^^1$`r;&s5IRK1Ef6ruy<6QnV zVRK-6C22h&U_^Rq9G(L}lycwSA927SClxTIsTL}Y=~SDNG*c^Gmc(?VV^_V|?@hlx zNk`!ajRAn_U=H*$GNVz7o1IMt{Xd^btB0}geS3$ojw7H6CsTm&AF6qksm$zOqkvk} z2N?zob|+9PlWFrUlYPC1(8Y{C?oSN9CR`N;hDKg~43-laU3EVo*}%9;l&0SPxTjAh z*t}!8%7d6N^pw>>YyaLYVBF|WU+C;Djm5OI^zcqfSHhU-ng-#Bp${Q?b{(O5H% z5i3vF)s!!=*f0@*a<`$9uD|iluD$*3blZADTyhBUTjRLz+)sqtFaGe!p0yl9aBA`< zb4f4OC>cIqN^W>$d6x4S(JpRLLlA}T@f>WsZ*ukA8vFB?$TM-O6EzxPpY9O?)u`2U zzr0*Bq(f@sC~)n_FrjBh7{$<<3K-m*U1U1UfX2&eLMOOrgdb)|yVWn$ zlIGNQc71oYw7eTOII>zBn51W!d?HG0?&-|D*I3Rc6JnN>J4u^KDQSeYoAC&7_;!7? zpEIkV53&?tGi|u|QIK&Vu*fQ9M#h`!ZYM?ZkR#l{glwezqd;E1%R9NOl7^GZuii9U ziKnj&jTI1Z`XGvxzCx-*r7CFGd}KtvrBKdqf35j!Z!7s3g&lEqR z@wlUUCB>pjE@`{d%VeuQdVaGl&;hT{mg9^AS>QVN-M;2vM1F_;g~d5YgwivE2|@Vw zCr$^_;8U+F#{-4;Y(2W}n200NIPE>ZJ(P@YpdhPbOyj~SkKA&Bq_tV4-m3nd1Bv3D zTZ>%SxjmOjVBlj}$LN+2=<>Q^^2sgvy+FQRao{jqD5>tYtuFCxiNj7V(*!p~d5@MX z;8qWB&GRiOk=yv&t%+<&Latf@N1Nz2Fm1p(?6&L;JE8X8^8#t*G;2Z4rZ42Fwbk}# z!sxe1`I{+brPnejHpyUTG6zi`N!oj?>!l!*8?;I~%Nws}Wdx6Zs9H~k1*GzQQJOZo zw29TA${F$eY>OXX{%vgOJx7sla-NE*sFv$HisXYNQ)1&m<$s@8D zk4RhChH*OV?eYyCS22PT%kRMWoY-m{XL1`d5QQ_jurKA11!>$z@-X~ql#+-zDNnU^ zXIIc_?He}<+r`A)D3QqrHuD~{z^Pl4JA|$Kj522G+Qn1Xy7l8s8#;B!boq!7N|n8* z!J>9)W)>b=FX-zRwX9{<_S)iYcpJz!V-n0?M|AL4fUq5y zql9mca60e=hd$H$p=mR`*pKJ1bLZcO6k&*C{&rlZrKSuC4{&YH4^(<4zGQ=lUo9NK znU=V?)CV)fGIEC7I6%)V=ubZPMe(SPU^DLdrdU++4wo#{1-;#d>^cNE%t~XsORP0e zqPQc3o4lovv1<8cZTKeQwi6KY8EV1K)hE$*B`sHe?b_5^l_%75D5*sG!0om;Yu3^6!5|V zP?Qy-!YI@Jv8ZU&jf#bp_l27T!Ra)5PMm3%rlJFQcP;Ex`-v$@{nYy{ zwGGKvn-J-|IC#V`IhERrhMUBY`Sil~XFF=SW|z8CCmg?o@e(A@UB@Y@WAI71fWN)N z31fE14a}1FaqZtLMRa&06ij@LJZuO1f+@?af~%8uUO0~UZzHxHu(w?r2pxRPHyR;~ zF0j+m2J6=lIhQ;kpM`@vqI^^;rrz!#OJm^|$|@0;uZW=RAaW29`%jtpCE*Q}P?j|0 z2Uy|zVh4i0R~sdWe5L3H`<_}xpUI*{W=L>wSyGVZB&6Lv=*tJu4Uw9%)#`@NVaQib zaO$hYu*jhaLNxUNMA_FbnSCo_)e1}LXRAk+<>n$RE+TKw~F?!eSt6SX*sYS z{FPJ}h|D?nMs~6qzFHR5#rx4|$d7{NP`VoPpvp4QZ*fMY2rDCx(HCldY(8^^#ArZ` zJqyWq_W`aYZE;{wnrfu9lLw2+bzrC2v3oyZX>l;{<4wKvPLnaU;chtB`a=LP28EyP z-cGT*pVK>FR>ufLfTN2?9W&RPcI|4aJ7-(cUB6z7-_zHf7c?2L+c6=~1fWD5{h1#s z#~v2hA*cm?zL{f?6JKm9LZ#M@fHmFy3u9O079|?g^=CVxkN}>KDmd(Uq})ygwsz+g zcdc{#DRD6vL`Pz!v$c+5$~Djcz`iOtvESN&0hG07PTj%7{bLl!OYSgs zGQ;HtN?(Me4LpFmwir&BYv}l%8bI(7X>1@)?*MBGi}gn@2OXI-xZ=ZWt`O7kIA zkgS$}I~hjmZfJtNy=O^YN-nguWD=+o<%2zra@`nc%_)3;-vq}d3C2hXz0|3P1An;T z&|ogE4dY%%+3A*%KHJl;xHIAL^5UDn1%gy+rKroU z@Q?ZuM&RJxw@s>VmFQYFFnOrL(Bffgq)I-T%FHdlivLjkqf8-#GVxsVL)&Mbqy`8) zO1tttdQ2=5NL(6IX&{eR6>eeZ@U?o2p$k3>SkhJK(*BT~CDp3zRMP(e8t>WhYl|5K zJ`==wcEzwh{GT)=wj31D_B=cWtM|!P$rns6$@LAdHmYRBH=NXbF90Xvd{y-I`nJzZ z_VVkhx!7s>-B7*{7J~0f`f*MAZ==I@9w0+rqb~^ELD#!!iKZe3rZ3c9l{V?DiH{}V z0bHqwY(x=Ljx8F9`x7M}WQwK<9 zm#kV4njkArZXWl2O4p*YD}Oy_xOOppVRuwveP<$37-g}KIRKp6{XvTaU>=&Y$WoWr z9#+kLL3t)*&6a^pQIA$uAyvb*PF-pvo%qDBT-&3h&&!Vxn7?;z?ixV_6#~S2wi5@l z8o@gLS=Zi`A!LpYsgEWGuh;wWXeR^J(i}hJIN$>`rPm)>7HCWouwKi3z`tN+&|Cd8 zG2lRfk3itd6*NdSBI<~QM8@MV3LrNRwjT)# z1jPAw2S-x*#;|~p+%dgkCt|j0a#pHGEJ&vMd&HOMKr(JbB#JeE+Xe!#Fn}#~@YP>5GdL=!>-}S#eLf#4-BPyW5i)=V*cU`yBT#D6 zfgN`knJ;7$jz_!=V}(jbP-Cx0`Vq_T`a6Ejt4B89Am7%6e05CO>OsWHIKZ}`BxMl+ z(S9uXo@At`_(DG}u8psSpL2T$#yGdBo!U?J4WU_KMDQYT#D8I2ek%41mE+!YLv|*C z^nmnvsm(w>XR%pt+7EkXy3)j?I~x7`lvX>-$boMr_|a6E1h&&l_Je4j3saP#e%1hJ1S-@l3CP~A9ZzirE2vytfNA!@tv#qlmP zm+@K5A+Cu{RFv>kf4`qAzca|!i~+z>8%TJxAGZ%6W32Ln*P)VJd+vxY@*X=2u*&zy zO(=FpSpx$03M~~dn#yj6Nd1ny&0~9ohX&?axFl-F0s;4yJPNwM0vtkgk8wP1@n*_#70Y z51IoUs^QH)Mam-}Ct(1yND2ldSv5dtI{Erqq{{1sybYaUzS7=y2t8e(e)OUWkU7zN z?te;}h?+D1tUbLboCPoV)x7+YU#Q5x#nD;ZBLxRS4~W!>N+*=?Z!uGCyY4Eo>J8Cs zEZ^J1kFKSQ2*bTKTzx)jC$y&!&JY>UhVQ*+MRD1nOurExrWI8X9d{PX-a3Mz2{yP zoI%%Tz@kWhw@DoCfHfU9^PokGuwv-|2lQGKbFo`x9%H zrgQ+&_0aCV+N)K2dEMI&UH$f&kptg{3Kt$VlwTKfFf>k?&hG$}%6mw}Dq5iUA+x;w zmf9Z?G|2XJmc7%+)VB#Qm__qq0PW0qYZkd7HR!B~Mn}Kf#sGvh&83N(KvGaZI$|}7 zVruK75ZW~9GB#Lyg?LlVLK3i9H6!2ZjC7t=xwiQXkhWYAg@tl;Xk{t|^;RCts&V+*I;d?h3>NSB_L^FR97bg%HgH zJ0k01gnJR!><%6zvuP4B;vSRT0!_C-84U-N^e7!&ty*8{f8c!{Pg<%46R-NKjHEhulWJ{cOvcF0O2(~L507z zXw^dye5+X~XkU@LbW$wrDe6u=$GHZ1$*iq!UXp(3#rjw!F z9y&cZ>+}&IHO?>_hu!->9h0z)UF`V8N)5u81A~{el75L_ooyx(n|b3BzB|zn%CBUt}&cSswL-uU@NUUuC$U zBe;s2fYd-%qO^`AIY{{J{sG9MlE2VPQBf@~@Lu)8JS z7^rDNMamL@DYl0_;X?p~)u0xyhLZ+=j1@N^3G_|-e?G!C>(jg zOAt+c9p@*wE^#)1nLrx9eC|WB|H6aM-p+yV-UbOt+oNKESah<5@pAc8Lb*29g zJFAZQpibn~y4KB(Bf+jk(5=h$(vs0Duvf@C{M@UKGh)1@TvyW6E^?77?(^lxMv zR|l~zccS*K^1p5$UFG9`W+A}w4zn0kB|13(&s*8Xw(JlyQqS4<=8MkP7JfQ#QZN^` z=L3RHiNYQKpC*~M$U?m^{m0XLny zq+RUK28I&|>srA5)0YPPd(4%o6aHjf|3|?W@c&&4o8tl0U)X%7fCibLrWXeNC4VB# zTIJcYuj7x+KU7QvZKK_*M3BP0Hv)3LY9R68V*+}#>??ee`Jk*hZxCYZ8 z)oRcAXG#8xX<`J`T z{tLkY8L(>(vR?f^D)k|OD*cmG9BMc0$Aj%zkbE=2196dfLD#$I1>({Tg1K~cAb>Ui z19QDLg+UVT6Cp@EKqdZBSI|PlJ5LZK9-x9C#W)Xyv_UyRd5RH8zHJPG1Vpho*m`GJ zLFnx8LG$`RPZ^+Xe~d0%2>3-F_UrJ01M&@A7pj33I9IR&ci;^KOZ^`J`+@^>#f5IlWP;lGUX&mJ3?=zD@x8XZHLto5P)a~2M9ITzYPk0P=Me8OE?<=5P*=T1vy_1kn`mQKVLDh z^W_3NUjoqcZ31DGT>%H3_`g+X4oLi#fXDAN2%x2aXDa=vwE zK#eZ5Uk1XTZHK*^V1RZGY`v=mAQky7NWT5h0jbDb;0i+rBz}vCKnfh{8YpAG1A=EL zI}pZR3K9=>q@av_6$Hj#eqC^iV=(FR*@G^oND z1i`btzwG#5{*oI=JnT$^7Pxt^f?OBykDds+V7vuY7^n*%3AYQPi0TMI7&{#(;X!eO z09r5z;aL&}Wt34M@vv(ELLj2R2!tCbV^;$ql#6gM1(yqYzHl6nzWOxC`Jxy>0L>b7 zy-;D0^SuRjzR;kbW02EA=;4+q(Sv5BLwYcXqK5|lyI@pd|69>7)`1pePYRGeHHsJn z&mV-STL(g3Fg?NtBvoc}Bt3}6vK765j_a)BTxj0dvfVXza%0zF|0 zYLF9_CILBN2hfPvMSxHUIPSkE7giNOAgvLU@+?P#KpLYE2<7op2P<*fh9D79C-QF% zr{x0@5z^o#E&!y&`6z*u4Ap;kKhYGp8|-}dr&IrL@@BOK1k#uS`S(!S!vtD42cK@Z z3JSW2P~iu|5RNGiA3ogt+_AjrWA!W~B&<~qzXjHn8Hy$GWAZqC@JvxUJ??Q}W}1P{ z`J5;fJ{BSH?|tXNzkVp+GVs4YywsNgKkNNUbUH}f&wQwBvZ8murr>R_;W8@IIwhPL zc%{0G@x-=z1jofE#N~_Fyo;nJd}}62&rF3#>8XnP!?b2)j&T4ldk!_8kZ7^-Y54ZN zo2j$$Dwo1Vq9Wq2A^`&E=fEq1bCIJbsTUNE_OB%0bhF^jJ>}Ld?z3H z#>t>ZK(a?TFS)o%>VvPk0gjDkoEk+0r=DLvG2lc@fTSu|#K}UrS`%5B(I+up2<;EG zrMgOiegty}rs;t^#&}DGn2&n75P0|FGVpCUe`fS%4&vdp3k&-|jcGQ&FlB}VJUutp`pysd-VpFKmYqa{N=*}4#MyZ8aH>mW zfv}L8i9U@DNpEeYPk4fUE?rV05Q~=2IrieQ9)1E9!oZWj3s0hKSJ2OEi+e=qcmx-a zue*0^b=I2!KS?kcbD9kJ+JpSvQBs<*QzN5-&0I+==A;dU$NBpo4EKloBxIpqb@Y|+ zC!pp3v2esigdTMf(u$gVl;P*1bZzB0)}H)#9(bGDe(YGr_$4XGiUxQzq3n*jh=<@8 zfr`3FQF1Qmd`La%Y_su178Uvj5a!1zd^SSVJHR(F22VWVCXDF8qlq&IG@8yNvzUra zLD-+h+ymZD!D2@Le1aoZ^djy8^8C2Ak|sY^IN^N}TbT=n!1q2ce7bMo5kltS-$hPL zf32A-0CLK#@KkjX*(RF;`U{QQ9;a!g%s$_-X0S4qN`g=enPU~lglnK5Jgx|5{RZ=n z2uV0<3yk1fPzT4R*NI1Lp%;7$CB~@{de|`BMpHaDbKWKODD*SM>x*Zkd>WtM2H!$I z-4Vz{dBhed!EYhrs4eWVU2CG^l0P|Cc-GqS33ejzXudsy-gxw^l(}jecqBc_2E`=? z;|tN?C4$l#*UFr*fiV1)Vv`if+NUdq}tIxjxi>cQ6C&lo_GW-p=6KPgIoB;Qzb>%h>#}jY%^Ni8~0DY8E2sx z6*V3wmPcuVr*ygUQ3WCcd=rD<*s2`IVs?7UoT3*Z=thTE$tH(>UZ~pRfmBUP$XvIF zD$J1U3e#8-HAR0k@S+k;0$^rQLn z2zH5$d$H_CRcd_jO6?Z|3axi?FA@s!(RLK#KPoz**DA-3ewkvZiFgGeDL)%`L`DyD zgJ(1}4m6eoZl>P*o)VlBa`iayaxhiGcM3yku2If0hS$ zKr!;$J8p?ayqfx35u57ZsALO{N*m!v?ZFs4rT3Il10L#zOoqraxG_)$-v~ngipM&V zgvRGxtM5^v1f>Ior3e-9J)mx+hESwLTj~bC@4wGA@stGpTRih)I9o^>#x<33{C`f#-5r?v4r3AecwS@S67&x=A{l8GzsUF^CQGWxIR|c%{XrKifT!kx-;pXup5sNH&g7q}0N;XTw`}J-A1;`fZ8N?FJy{O= z@q8yTwU5E;n?|Y1rX9Y70le>NL3e zv5h$bRzIkK^3@(T&@FuC1;2$)Oh;^CI}bb;gjGNTY4gz$>DvJx6efCuVCmE=tN<%d#_(ec@ zz*AcC2&TlFy_gbIsrx{&(Og`hkQVrvL1Hl{%4j5!!{RCP1#r^60%ZqHh=~(Nu#EXS z@ai!21iZkZO2M&J;waj^>yXW!5-A7#Btsd)`RyC`aDn$pg%|(pTD*|Sw^al#9Z;{1 z3Mg6dv_@SAuW`BH=(-3$Dxjo}@Rm?lzyoUfDAtMsr%Ro9;F-P03La1%>_^oI=_3M) z6I_X+$c_l8*J_|wL0%3XPc-0rKq?=>ytlxksmcWW9{P^F2M+MWraa;vgu(aV!Fkj@ zM1!N#?sf1@pp1?nuHL-hn?N05kYRyuVnaIT2y~KG2DJoMP|V=y#Ck+9&7+b)x$9I3 zcr>A+!O_Vl_6Sp87n%c(PI*V5Q|1xqBy3g+2X&2iT)>%AWCFN713k(ob4vg(+9*75 z5+0Rw1cTj^12<@z6+w-%Ro+l|pZj>k`h<1g%g-yc@$T6ymd{#I5pVVc8LWER9Sk!@ zROW+BhECP3x$3+Mb6R!Xoqt_Bza&KCVlw0A*}=O$yy59svi&2n_Vop!f^b*Q>*?#C z-!v*zN+b_7?ma#cuD0r0t_$7rRtvWqnQ5u}I zg44d!4k3f15^la}d8pZfD$e!E)h&JA6<1mv`&g^!=`lTcta+8>Zg6x}^>XR0yw`3f zqFIAIeK#j6edM+&P^G7K#ihG++y;E}?|Tg}kqQ#^B(3e?57; zNSy~>3wA!pC(1Un$q2w%t||k zz2#=ZLftm=x$W|VD;vo?qj%@ICEf~*OiDpVjCxoYMsBL}EG+6fh4%(j`zY{)MdwGl zd*V~ae_Fb*$XOlc>nUfWQ(be4Y}jscOpCC$$#8DLJ|fb6GYU1!DarJq(z+BS;b~;^ z)NpKW&CMi?Ec2DCn?}lO4g8Z^DTrYEpiv4ciPOb9LY|rqR3an2TC+&RvW_*Ez z_EuM#dt=pC8^ie$tl^e0?N@K?gQi>0I*IqmS8u&eUq4?~jdy+b)7G$bHI#?U{jN+v zhs%!6Os|lZr`pBWyIFY!xvg8TYZyN*@+>$gY^k|d8RTUV8=7S;e3V-##b0#gr!>kK zvvTjb??5!UZtP07!y?6CU$}ApQE#~J+JoGzs)AfCTSH#Ifzab7);;fz*)+b&oB8e_ zJ<7vPa?4;2T9dKXvsA7Ss*vn1JETS^-zaS^tOptP%~tgjQXU!{JHFWYYLqcb!pYc{ zY`p}fAG%TWNIUGY_ke-Nm#S$6+-)zO{K#e0(^Sn58+;P&VgWKX-=9y9 zOOM+sXBfVTALA|bYVwvB2Yv@9d?j7+*!2#eo9U0L)LEAeuFkh1mPVAD=&^ zkdr3K2iK-adU5`4n$PawNyRZ5XccYxAwR3VU=af~HI`oU_N5uR+u57=) zDI31cGQx=R-LNmkR=>5ab}0}#y_8Wag&gynmNu^O8biDeb@f#H93s*@;9BJxx#97C zVXS1ga$4K>)-XfYq&)omOfVbS=yzKZ!t`m2N7J|SQv0<=zDXN$jagboha~qwIqmzL z2&bA(1+;|kD#%G>Q&os^?sl~|zcm{VlHOYAFVb*QX|mIb4pl?BtSBe*PT$Mj=)6GK zy37;0{arskV^8K~qDkaA#O0c&WW0Krye|g}zfQh(D7N1UUAAG|5q(=m%Shvi ziXx2GlBm+0wlq~e$G^lo$q;(3C>vWrS^Lgta9(JN6#-6WRg25l%!C;!MnRVo-U(bi z?`ZmHp{mMzSc}9&y<39s$!z3I$sn4B5#{AqhT{4~pk6&UEZ^SD2~L>Nr=TrJGpha6 zE(tH3+3sAC{4QQhnm@E|ZWZQ2K#n8Hg++$^x14XZ{Lu@^{~787Ap^y z9NzZHbqc0%hbX-f$m(V6w80~bMy{9a^;dmV*6iCJuPGT`vcvN-9&WMQWHoppo9Q$j z()0Eyo2hTj^VibTvkzjL9-U&S;Dj_LkcH?7EC(@8(z?&A?rn|F=v4bul3C=xn7V7f z!&Tgpal-QH?VL1bzgz98M$$}n@Wk`g&CvKN{4f{Y$}N~H!@a>Sh3A?jw>Yn8;plX(zj=rFR9@xOqFah^O+~ z-1Bu3?Uw|fGd+zMmj)Gh!)g)|cc|Eh3Y|uU){KeTxD;L)PdX=46>Hpd`cbxY8%lb; zv6aD|$WxB_r0;lvie5}gTvF71S*cnK zH>nxYGHR^2Fsy8cJ<87<>}4c6=5z(|X>X2U(Cx*w32eDLDTU1@jyE(y&&KYJwKeHG z)odVqjj(#{&bcq%h2PBE$SiCZi*79sm8hyH9pgM*YedCfdwcQ%XCJeM%}i7X9KR^(b8}4e*QcG>AnN*p%Q>H@(9*ai zD4ZPDctXb}b7d7BLFM#LdJ}*1htSrPMiVDM0c1B(?Eq z&7COz>|mT~jpAYrjq#>DZC&g0!(luWKd|I#do&Yz;3>2u>gja|an}fwyqX@HZq0bj zZU(^~=#7Og-pyKV&hu{WmpIBTG`HZ{ITqGJ;g55DLRS??a(2Jy-T9Jz6Rs!ixIFRd zv)09P<9eTZ9(p-F&)-W}caeF}VUo?WQ0?|%`0=xsOB0-oyOuBUnli$3&9paX)*Ek9 zueHP$OT4h4*QkY83Wx*mUSB%9!()BR%WFc+DM_Pil4vr1Z@4|!Vsf-R_UVo8+ll6~ z8P{Yf$Yj62(vf9L?ekcO_V(N0XBX6KGZ2BF9<;Kvzqc+YVdxYy_hH~iQEBGcn#$m4 zgYUNMPM65&<4u@#JKoPP2m9u#?71yoWghbG;PkD;N;EMaq`E722Qqp&U3@(*U;3t- zJd1B;v83d#TD$MrSzU@bf^$zrIL$Qlc;KUPZTG6554b<^hTX{%|S`Qv!UcPM4+4Hfn1*Pu|oa+s|ZoE(|A1>OPVp+ebAXiwie13BvL`mYm z#ij7LDk6uKOm<2x{tFz5bC#;N=3Jjooz;7;Ui;ZCXRE6tE_mq*1$p8WsUC^rv+c6? z^mwc^e>g+u>S{lgEGmShJpaLkxRLtNiTW><53jym=A7JqW&7-L z)@EX=3s$$V?}+kOE^ioQ?K!HT)!ahrC!$TJ;h9TsERwV<+iLo@gs)g9#v{5uzRsoM z9wbbBe}cZflJ!RL^v*q>u@CS4>%IX0#XC`>y7^zi`{Ytq#3d(te2bZj)4jXen=~`_ z{pzb^gk!FcE-7H$3H$QCij!Vl$Nnks>}>pv@@b#TONl!3+e?<}R^NQQ)ir_RP{&JRly>34;9p4NsnmytRt znU&Z+Rd>-JNH5Fo_zb<0?AFg{a_z3AN@uXtWdm84MvsA#k8(0f*#1Jnvr7<(5^lMk zjD`&7Z)U#EgHN3Q8+e{!YZ_ue>=QtL?8^v`LL99CEA5#3DcZ-9a*lfz2e68?TfsAiz= zQ99Cl=p7P5kS2ttg7lUUK)N7=5Snxe?ehEIb)W9reY!7atvPGWUgym0*`Lqs*|YcW zr3^72if~zXvz9dVV#+8^sXj)CILhXDBELztOk_5Pgk8p3>|vjPYSA;PPT9|1j7LIq zEN>&*5#CINJ`{`tDvqksL&%R*?;^40CRNHCC7XZOtYa?1Fyg#g``?QDy{y&;M(Cn% znv;<}CjozJB0y`aiO*pprb`?0NbFuu3kPyj;9~sv*azxnu#*0dA@}RW2hhBgk8K}Q zWL(0EH8i_@{o}veylmk^s)L`}Cr{1XHvj92F%6dl|D1oR-mYfd1mD5MdRaAX4~D|* zl6$q&4%9|to!u(hWB&$lx))LnzY2?n9^edu4(dQe4Lv(E>xyB$SwF*f4u<_97GVbv zz==L1wxG%JQ+xu6GxhDjW{19zF1902Kv;xROrI#I{?*yt#dbiDjkhGLcgf|r>tRYu zh?Ln{{bj}$O3O?0x;k0-@b(DuQvI^ihlQ_YALQUUhEocPZ94*`&lc?~8Zq|{xO)4P zNcFm8&ZKJJ`~pP!UkFRS$+nH!9jXS+)`b!LTyHLTcg5;_bX=ce3(N(W}1MfF}U)~Bx z1}$m&iRbKBzSy4KT?5U8YhW11uYCiYnBQwk$PTk%b$P{0!15amr1WLIWYGc3^Y*;c zR_%hF+YRP)6aJFUPj3|)jXa9cVXrar0h4;Mw5sQU*PDkcu3mk#ee?0IWVYJ3jEf{p zG^cmCN#w4SYe$!I}Q|WJon?=9-+GXAR+4JUq&8Q^f-)(DAN8N3WJV2JxK}xP_4H z2fI4wv5sj`ePk3iMw7p`w}q(E5nu1naNX^CelY}?sY%HQ`?C+`4pq?_D>_d)P-@<% zB|6-Bb?>?^-?mv;2)iTwTOl8A`Izi?b`0mZ!G23vY!AfJW+v*UZ%`hfIb(cUK2tPm z5n-_RFKGRBWYsp(T;3(3^SAWOe9&H@FQ9<)#u0Qf;KkX((Rfnp3yjP&wdpxiCwo1L3S08L^x@=>MD{HCMLWy?IA8*S{w~p+`F-QBcD^(GG71zS4{bH;)N!d ziLn~M>T}|5j$$wq!4@DP9?iH=Xgd^KkqvF#S68kRe?de;IB{aG_2n6B?!Bqt!NT5w z`~vhtqOD~g>q5+3eotS?loQoh%gun74!Dtps} z;repqPBze}E?GwQKfyf-|bB#q`>vPn4)TBh6-ZN0V-pHge{X0(1H{o@z$b??R^JZ{UOSHq0W z#CMi7E6AOjPh4Vc-<+n^n#`Yba+!(YZ~gXHd@dQ^aAyWOWo&!6(-4Kmk!UIr8{d=a zqo3Cv#FXMmtBy+o{Yq8a{KOy3-H{3aXUcd~{NhD6`n}Yo4%vreXSN1E@m9?VcHng! z23t|nVp=}WQmcLB6=)LUj1XXgyxpt#_By-t#UIM@sSP-g_7=Y9R?+h;N`V>tHLiz! zz;s>?ukikHuWe2BUn94GKV9itqdOqBG(JZ0l}D=4&Z*HG)EgC7x%(ks=FkjW6TG?>EM`?Ot}%lP>Ht(VEjK{wKlc7Rn{ zw&?=QkNZAewh&L|)7tUV85H7*pE!{>bIo66uSX}oxTdd9Ue3zMFUsf;)A6Wl^;NN2 zMqHR){nYIng?l+&Sc(4|cj)%)?nY1z6pv8P>g(U?%+7KqHo7OTG$r3JC;qNj{XJi+ zDVbRe;2fWaESQ_JDH1v2A6aa;82J9Y?_9g=>U5-HPVGsQ=>S9cn`S~w-h;``C%pzN zOTUF7Mt*%@3hF+3P*TZIL2c-3B%jOn{PsZJx7oVk6-L2<&28s>#rMm8{b0eTVHKkm zzB*m)zQB(uV0Zelcrfa0h1A{_}VZbi6pjywis+MZHV8UO=|J1?WRVRI1?PiML@((ko0QG|G&%Sf2*(3Mg_ zu8jQ;n}08}hG%XnQ^r4W3`9tDcx)lN%WGseNNXKTtYvrjD{3lpMU+n0C_Q-DuW{n;#Vt7(!$n8PF0K2X~%PW8!ZK>$XB;W32p7)KcB$; z`$Vemf4xnuAB?{k*xc*cR|wUI#YoL!`XmiPADP5If!<@3j$X-L`jiR@EvdGtx% zS1tPNw|o*1@aCG{7owI}J<-vqz$v6I)S#hJpTRXH59Zvb;B&$8ysSDHI;tUymG)vu zsJ0!OXiOn{9bF-9Qgly~jRq0gv{!0tmAUHRObgUx8|k^E;v_Y zBPx1qeY^JOQ+Qz~c|*#vUc&Jrm79!mq;*I@SES?561PiFmW=M=xiDF&eJyvY+^>8q zimId$ngR21c3u^}{`ZacDwdC<2fFEXeB|-)L92-B_KSk*SlT@w z`@VzEIGo#md65_Xd%9foe;hmJT3+Fu~3&dsBG~|gJLO)tYV=ukl zrJqdZyA85x9(}!$8|EYa{-*jD%A`!_+!Y-6V)|6vEMCzh{(7^WZ_>Uty72~N#%s-) zURy^n)w+Y`>`+u1s>`0K{~Wn44WN+g?|&Z^f`}5edz@V`%gmkh7*Otpby;!0h+BIu z0}ji(9w9rZ8B%7}h*~(4s`elj*Da)S%(MT|GpLXnoX4@_xoTJPlVeQk+Aq)N-EO1) zGyF}N0nv*lM>O(^NB!+{uxuVjop^p zb!yg|WOXcT=NgkDy%WV6lIIhqmWLt?dz&f@(VuWE`K*4t5laPfegX(}(K2OJOjEXb zDtWTiW^NRoGZd3|kY)*1k{h#qdn}>&74wV2zb^`%D32KWa`QsYWA_t9 zr|h?|vmOP`Lul${vAy~GeTARO#4Fs^{{#%@U!EK4U62JKClSR0n1tzeo7YhLJl(15 zOFkQehB{pi?^P9D3hmcbb-cvJdUdd#wntO|_^j2Yr}Im)3pe@M$kGYvMzPvBy-Sc+ zaKRG=mTo*9gN%Z7Nkr-Oi6yM{jY@bAywptmra!WSi@si;w%{b(960;C)Ok8}njMyJ zEgGO_;+Ww}*TxKP%qr%${{SI*#N?~0t5Da^htVInH$o{N5Dm2I5ZNlN(SUiClg_69 z>GXfI81cTM8eTI&$?{G@+&^?DlC~r4P;oVzq*}V$UHkVh-?t?G&_B@=GK3V4>=R0%3((wG4>D8GoF|>XgY{p+!|1138M-ZZ+{VB8pO+1m+QqL|P znYfZ&t?Sak_sq`}Eb~?A?-P}V=&UiT(7@}oYKz(*nSL59B|F&{rDeirlP=0c_$1T*olu;_?< z34#V$MuK|kCPeL%in_?o{8wmO&6mEA6QG5+prWL90{qPQUQf`AQ#9D&RRtLnsJko zP-@ou1*n)b{E_BlqEZOb-^F{y*=o|u>1&)4pW$kpH61amP^EUaRD1y)gU+h&t#rC^ zNd+tIOdtL8vYTx%e+!#GjEjk!s`>$LZMaXS4hA*WJ_DUUh5)|BdjZJj3t%y6UzV`R8_#8?eT?lOansG_ zIiPm}WqY7L=udy35I%iZEA}$GMDkji&&cCN%FW@W;x$c4an3t)?VnwR)my*0Hnl8- zrq;AvA`O8K3)V=hnBtLUpgWsfh`#urZ?V5XNDQM{mcT+@`sp9G@z2)PFK=pFp?_Z9 zbmK!w8t}vn?U>bF)R2$<8)%Z>E2Lz40Kx z$KTy?q`2Nnv62A+wb(p>c7q4#FX917lnF~AYK}luiK^)vmpQ+ooxiMI``f|*oo=5O zy>KXSo2r&M$P>G%*uDW{Lcs&#oz2CaGKJrv#-iRrmTAP=F0r;wCFrPN5~8SBPdt#d zu#~k<^M44+qWkDqOt(7#kUkxswy<`xRz(G5AwfKJB6t`O#G(KJ2dI^Ycz{^ zTVwv-Rpz(++`E63o-t2Of7VK`cc8h;l@8#`)oMeO>}L7pA6+f_5W!ZW)A#o6Od_oo z67G-|#din0c-l0{0fPrQYH(~q@fht%CS^4q(yLmR3NEr?e~Gn|QW z@NmDd$`@B}O`c9jxbq768~ye&jZ1dJJYZtU+p7~q&Q3!^-AleS1zB~3%LnXZUI4U% zTKa<;H89HP!JRy9O|n27S}`^iBDwHI@M~QX@Tt~}-dpiB+2+_a$t(Uu5-?}A=a0f~ zqq);}dl$WFrP6Wwzm?|Z^=tfKT*w#nPMK`9QNZn0>YE#!k8E@@qrKcDT6f49H3 z8CK7?68~J00HnXDXkkB7tGaFHalq1`(~jeH@O;nsW~P2M@P$(dXErDxc08^@7ZY&` zQgm}UT^O6*=AKEX$I-{wB5ELB`RW5aQPQxM9du*M{4#T>7D2Qb(ywV^=^i+2SfQWOzu+u zPg8$y{XXZ7iE;qe$ri3C0xh!YBi@#F3S%W(SfTU1iu)`{3Mz@UWp$PB`?=GzlN@fE z+HNtUo^&OUv9;5);)fVs4ynGKqgyUjTy*?VdF>=x@qJTZHc#?a8-|hS+)-D1O87p4!{GANZk>E-K6&7t<7o|EQ!K$fqwNL8Jnmn~0^heU`87SC09;9=T7j@G8~|I_G*4fS|5g3MW6Bw9M(h9NJ*19|zyAWO;UjVp5p4plVaT!ap|0 zEMu%UCK!}u6xi1D&8!Ytsgc7gDhu1(4QRZ8UO|hv{i8&Rk%_-qS&DV4T;-WBB8|V| zk}y$3s^nQ0!Ua7)&DDLUQ(Zy>_fcacqEb~E3meA4KNN2VefkW25H3VlRP`XZD>l=4 z#HW7#w2v*R_f_YMoCYQ!D@G~SNOD0tMb%gY+FL&!UN`RT_mN~IcBw)ZUfO#Ve>9u) z+R)t)l94&3qiGLUdpt%RG=(<_Pmo+$l~zxt?x%L?emkP^5ce0*cX#{T!&3^W7)f<# z4d|X%uE-6LR&ks6y3WH#y{>g^FLs&Ch?!>uo32~lC1bCjS=~6ATsXw~Y%dy3pYtE) z8`k^@bB|h~&}J!YASh zguZJr-Lvg}I^oeXj?f!lyde(b*t+k4bXiSMv9f<>?eoh=0DUyn+E*Quq6kIgi(;`a6o(r!|@)TNS-;WttncjctAXqZGqyQHxhs1bHcX>vQWwk8`r(xsj zLr6l*`-`Eo7H%MmW-94N4v##;0&3um%hM~Hjr7>QK2_{BD<3)iJ3{R6+izh+dV@ zWXlm@?vgTV8Bz-GZcfhrTo7nZ5Fnn=_+>E)a4?!&(%NCMH=z`&SF2|TkX6&wS=D&j z%z$9Dy$fNesyl`fjEhy8q%m%3kqDnLU~Z0Bx+K)<3Z&nYlBD_)_ldqpcRNO(GBnLH z+u2D%)PH=M>n4m4&uN7zUiY?bFSN*8Srr=%lKwd$BYX6kYB9V5-nlqsyw8WlD&7{%st zl0DnO0Ob!HqnKO%J#fr`H1H$$U()58738$zd+qW!+D9zh$%obmOn0D3-6%1@_O}n! zFuyHtZO$7>hXPN!j|8!_j_Mt4aOh$d%n+hU_KAjcXZt;b8HRi0^oK_qh~+7kXwiaf z<%mb)@V~7Z72eW{14&42hc0*E>!(>4mdoD;dy0Xo8et$;prNCh8lL<3k3R9%1EV4{ zd6%mS;LJzsw`~IBH2#NQMmlSV#3tkibQkAR%(On=oQg>VEshjmqR{)RP|{<0p6W_z z%yWi#>%C>gM|5!5A)PCRVqZ9L>snYrH7UO=kM%a!%FGNr?6VH@Bw83&QAw50sdG~s ztN!KR`b~0bw}Ec-erVR@)o`S^e_zy3cDIJav}0W$#azc4I;`3#yVXZn_EWSoNPi=G{bOYnL>afjWei{9%C0>YS5f0 z27*I&zmFy1Kd79&@wNWcaBZF`MvNnKU|8A~7GlfmLyLZ|I}d{aG)r&O2>Ng)+`f9V z$ulCU8wxch1P@cKC{7~?c?L;H1sV##hBGU*ZOC+B!-(|#>8zsG)9^sHKbGNdBu^Q_ zQH9H_4?fMq1KynOgYn??wf=YxjkJYzXxj9I8?y)m-g%r7QUF}yA-}TIiy~#a{beN8 z@9~l*RU#=h{hDk)+>>DPmq$iVo(yEuGp60*&< z-$e_&ugCc^ep1}LjW;Ms$z=8=Qyp`9`;VxtcpPzdt^ei2-ea9#q{bRSlIGcJ%ekbP z^Knd@zZC+%hwm2tyX}EiaUiU->3I7(?~nf5crR=%c}kyin=!~M^0~q;ej!dyfQv79 zQZLjW#DX}({4PQ`I_qe{qfR8%L_`m7;vY90;JG|BJv6%mOWCB`dEf2|Z{JqzAl~hK zat61op@YwneVmnUt2IiBc7NnFHDQ11N2>gkcb>K1{Ebsbe7C|^1Pmj}rtD=0;=k8Dg73fSQ(qbLE^;E*osHowM5wH_M{o6ThLZ zg>?fhJu!Sd6-7bgVwgz@Ih3dv^RvGaUWTPdKii*w7$Ptiu*GSouP}R<#JPvZWOlA0 z;CqR6m=Wd@YkZP&bQm?` zS{QoYZNydKnUTwQ@pq7I*5pGtqdm}$)QPNxCZ?E<<6kM|G$)N)WQNBf`__b#H_EZ> z!J%b9`gv7Fkk9C8T#`JNyAmA5g_ zdI%)4DOM)%ys#oehnkLQfz_d4;^UO|!+PBt4hImbSP;-F*)L(%X8xrYFDhWWBi!tS z-~F2Fauz2uQ3w>8N**xK^k&M`2k2N(%EYb9^ktJZ)xmDN*UNBO7+9-2L=Scj6>R_ zL35D^beGJ;$26+}*aMY0V_7|Wew^&26BgpgD!S2H>$BZq0^MsqiuULhT;Cd+Ic#fi ze*PBW)1M+gfK$2l!4MF{DSXR{JJV#|pPiTr5;6`jerhE~j$?e|GLJ46d;g&>UdH>w z8f~NNW7V%058-9B?{NNik)c)WaeL~s6RyAJu^s-)3eEL=-7?5+*#4=dYjZ}?)UzY| z5|SY6%*$P~zNRt*Hxo0>Y@1mLh{XdWDKwFZP{w6$yCvLM=fRP=+S8U?Y4 z4pTNp{6nzTM(Zb+D-IMJad5P1$`GoTq53zwoX-c(_r;yR!EGguQ-du($&cOnD~T~j zX)mCkIjHI1Y0%G8QuFJvyvb?#F=9zBKjh~9h_$uo_^oLfDPyk3kA;_g_Ish`UoyI&>I)s1&QZ$v1&Fxl_=#WO$2ol*QZ zH!v;K&!H%yJ3kljyq^VH?VuEwH<8*GD^7ywaGlO~kSr?etsh|GD)Sm9TVeFwbhm?f z{uQf^p*TsJeWXb+JB}U~qLN$tWc%`Q(0KX{#8o=@E!J8P_)QEH%-Bj{9RJJM1ugaSQuec9mhySnoHGs zsSgP*x&c#|xZ7|VTJcJW?D!+Y{^v1HhQJpRmntBeb2794B*)%T9UU(qcJz<^$gG~f zpeZ6%j>H}_rif?F%^c^~{2&VMQHuOos>?j^N^#?bdbOGFqoWj62}kKvl5__$b20b# zMyJuvCuE2653cKCgA|t6+FJemStr!%e`5njon{9MRwBYp^fD<}Fx`jn7NGgh=_soSiaO8~^M$wpFpd$(5k@?rp6GIGWnToOOpK9|Sy}!(h z>3x@D=lt15Lcskfa>0e7s2253@xOg7vPDoE ziuBqcMb#Frd1{Z_eu@#!CliV4eNFtT>dMBp(dHlYzW$9Zn;V$gi69exM~@$rO=b24 zbd{x&7!1mw%T#R~utcq@A{oC6eHJN;$ju1q_r&eA)n1E#f21Q*c?P@`6WXhJxK)m= zHv94>prJ2fG7&VvNm`$D7nU+TVK{nZQAh78vQ*7c-VL3im;M=}H6 zW9qT+QO)!fH*Q@dQ zA!_G^Y6eJ!G;_2=9OEywVvi>nt(WI zf2He%;*_=Gn1eMPHkNEeas5M2v5~JyzrI_-rJo`~VCVP(M%S`TtqMP`n&veGAVhxVCO}7gsu`catuxuTLo^%ZVXtGFv7sYI zZv-@0$3-{!U1riHz%~jbR$%y|+33YNwpwsU@vhw0)4>t6abz^4|J!FeXpgWF)#*oA zu%%T&MqnjYgURFWRB%|aDBAJ5Yphbj1ZK!%lJfbVwQN+`!9NF^baR{iiP3Ww-klxk z#knfFCp{Mmyc7-jm-tI7*}(AL?ZMAkV|iJEm#M$i(UawybyB-RSD-dz$0#_A9tXRY zB!`%qn(VrH*v;}qu4;O`*d|>t=_R-|j~aO2$9OUNy96du=d{B^&*&>r?kj_fm0^bE zhhHD0BT{O6TKlX^XB~S_raPtKQNOG@BrIU@dj{ka6IHuS6vIt~|5-e&8dZvUGlULv z+H*6xzRg-D2}?P>9Xxb%|7>e#m*PR{$53$W_-lhDUxj9&&=ehAUOR3(RHmcrw?wRy zK3?{?6_l8AWoUpliB2)0QMbCC3-DSE5@Nm%mD|@WshK>-vo#zCEYF3*D&r`CD`GiE zv1iOzL`%$FpDKUZRP)s-eX(iHl}L=di8_B`TKcZnRG>`hkPr^!)xWA4;<^D}mW(!3 zN?%O&l1Cl~eaS+{mDl|CY-zmlp>E7F3-7y+NvcCR1$+^4147mgglbPB=t2z)wFnX$ zQh_3W&zWg}LVgv)B#|XS(=i~FhIyD3e@_Q(w^L=MPUo*@?{8PW-v0TrwjNp0{%f5# zhrdU~I%wW<#Q5jxhc|K{f1lv#-g{xotHM^6M@zgB%~z|T&4!`>4g>}>z?bm(NRZWg zV}6HseiD4r7A?<#1tz%+F_PPpy%Jw5Lj!+K%qMoYw)N9@_B7p$-8jU=t?mTY%-u4! zMBaFOG>m-Lj=3tXXSO;?#*`l*sNw5z@bYkvVK}AG&2Mc!p;JZ~=Uwc-9UK4i$zY3- zd({@VvsLV$CPWs#C(K>UHAMROj(xHte69O_qetwv>qz8g3F@cy5`6*vzSaDaCe+E} zi)muc2`EZ@^y{R^=HzRdYpu2)B{66Fp>DSsp5C;V#~M}gMIn9kAy>yN*aKNWmDL^@ zlXQSRUu0Wp^m(yv!HYFyMsW|{+7`jjTP&8$n*8v<$pdcFYZcj!A5d%)+}k^p#gxn! zSdC0maNQI)MJEa9e$&Pa*Zf6y{3UAs;kTO+F=d1weR`S;zX5F^4ugthTC;3s=)DCFQqeo3|(vA~=Ja=K%22nz>@$uFV39X$Sj8?TSf%2@&@J#{T;~g6 zA24!c8QF1S%CaOW{)>@@%Y2Pk-bz=U<6Pa8w zD4M6?=5X1IPp^fJ?HCx`YJ`-jC+th=l?QqKojwxW_OHvz{a3L1xq~gF3;6^ecy`u2 z>gRc+`2~2n=ZP_#BMNpoV7&-6SpKV=Y8aVe@h|RaQ;uJ@-|_<+uI?Yzf4^C)RAU92 zpS)0CG$P6`FOkd2;yWXCcL@S%2mgg)Pm^yC!yT#$-}@I`VTXvG!FvVFjug+gR|CF{ z?WZcdS?>l%_8=;w;Q?Mp76yJl4UXpMezJE8Zl;egM{$+>Uf24fgqsak*L(+HVuDQKgma#KUK>Oacll>BC9YzGsuH*)UCXge{~kTyTRL4S zO?VeN&Ag(~sVwj_5L&e=-u1nnx68r1?-Vxxpy|B_!o!fv5(c|d2J1rKf7D!hN{M^@ z8eTuB5WIH0OveA69Nj|MFyasHbA^LU>XrCxlCplOt$n$uCV^)4+TNTGfd1v~5}zl> zY(c8JBM#Ujr=XQdF;4=^BYSCWyjDAI%<_hxX)a4PwFEWh2EMs*Dr3&Q5D}Tji@=e- zMI#d-cz0h%m%*sW=h_$PCN7E;d^g99ku=>A95j)v2dAw$C)W2zEWf_?><-XR-8pzD zMX~ak>Ed_vltD#x3TybaMT)l8j;BGLm)1)-Y5TBS*0>p(ERrGe)7M|izo}w>+?SM_ z;qR&F`JSWZ6 z?NZG1-=Lw_QA2ZquFvvr*EXEwX2oLpD(*4Y?aR`ZEr8dG|C;S7W-~Ej!nfJC>I%Qs z+e28>!h`g*Zur|CJngIQB!25~bN%(O=VUdEuH}vS$DCJs zWi^#FS)5hn#x8v3{PM}gIXPtxDBl)K^C**70!W|>tvOd!nS=|#TnMJ@R@v$dYaxea z&Q_eF9hURGW^_xk_Gnr5vI2g1wdDp|6gZI)YZ2b>^I9)+leP=mh1 zdQ&{88m!T_l#FnZ5>MsiloM(T>$m+}hObDarcz{z9+ivL=A+ouy5P0J6Nht!C->y& zR!pN9{Wb89!k-nXJ5~8%3;o%Oa(mQQfvaT)l?TXk6a|)WTl1vigc`4f_#pi1E}bu) z@mlcuV??@ec@m1tUkgur&3_#mkttj;ilX&b$Fp7wUq{`fHIze90Dm1k^)=sh%uR;7 zy|(4i;hGEy6+*g%-vnSB8?UV@=_N45w;elT?s;QU`z*-VTAF(^Bgs-vQ-SxJFZ6A) zH%)wbR+2`-2p7j9vi%2CZ^2Jos2xeG5F^x1du@sq=d_TH3k=rTN+@4KvjP2$LWcs4 zLLF+WKIb=(t{Y7Py^ZM(>)r|lCbxaI2v#VYCEn252NLHJBVJZ{l|95Vu)sWzjba5+dxcshwl1?eZ<=MOq0xU9=K< z|CB=9rrx)f#aG}D;+^Ium!4#3eT|DP3)5C@c_wozH?JfW7q27{Oy85syvmXZQEGV) zQM<%tFW?07ZYJRuJ$uV@?nm&oDJ-o1Y^aELH)FV!(^ny;V^*yVwq2h%mYe9P`@Wo* zcH9yY|Bq(eN@N38NC8CqYYjEjN@HWX^z}?hvX^#Cfu5}}22HZ`J*vW2zKS`?Yj2DJD51d_jy>Ci}#Q^0Nrd zuq)U^%8imKE19o9nboxAoif&$->9?!%}))&VV}sBcC#MsGIC3G7-y|~JK=gTKVqiL z^5Em=a)WnieEHECSp_i|UP*cfzT9MTz90rxlYLfy!ww^Cmak2z+~(1p4$V*k)JQDv ztiKq~%T6={VAh28^T#Ug+Jt#+GaUn?I!0G+faZ7=B@Jh*lF%5{kZXduYbb?!nIVG( zh=D7py^TMM9y9w*W|xVoDZAOc%*48ZY)y%QC}J4d}- zZD~UTwPay}Eip(87^GEv!A5Lym#XRH{-1Ak6p$nw2MIHB2}n|mn|j_eFJCg^Rqrrv zG3)?2XZyN1C;Pe~Wj1FkCbMM|boqmb@BY_AN~YCT@mJsQMJcc5my~jYkG`4u&y0a_UE;sRFV%4Jy$@0U0tC6NdC?^+Xi| zLy1I3i{SaH2G6sh28{~+cc#t%N6?OmKlF@gSzoeF7Pntm(g8eElCLbTtwEEVW`tC% zK&mKk&z567Gx6m;hKguC1naW!spfSR1I;rsr3ZzZ`>xmI{&D_12qUKWN5D^0PhCWr z1eas>Gh$0QQ2LUW`DLEtLXs3Gf(uyQekAvuE-#PIUoUG!)!r;u+dueU`;X(`lHDB^ zwhv}?Js8*bAa@e^^fg$AJ}2!b4?|RdY6*r%8DsJ+VDxGBM)c94?-G zHN~1=y-{@6UijGdYO-Rhihha&Wzqs#h;7pn@qLLepU^Gw%B-IO@kF(zegph?wj>iyNrR1 zTpXdf6JkLX%e$%*h%;)DvfRpC%GUpvpv4aBM9iv~w)-94EaP^vSpFw82-%70$vS1*N<3iHQK9H|I$Oy^+Hc-5 zp%EQ*@vMS`C)wI6cVl;n4Y#5V`=F4fpvDf=oTA#UwMeScObS`f7`mWoFe_7Q3palD z|AP4?R8FK}<&4@yO=Ao|?bI~S@&V_TQ633r)1IF3=>MM?fC=Mb+lX=Fx}`-svv1}| z=?gn1R5wNr!vZ&Ay3iq9 z#`8!=O^`mV<|6Bz9L)y1LW(1U27U+*-7#ozNB`xI)q7G_{5RqtZV0B@*y>}=8=RAl zv9=vN8Rv{Z)b;>hDv?RVKBcM5AfqZNf9C!S{iumYw|+vL|ZMa+AVIu1#wo}jYr)JnDSraHRO^l)5V!N zq16L4%6K(-SnhcKCZfDSce2OVUjVnZ5#f)fK1IF2CF7lomt*mDr;EtFln6icU0%G6 z|NP@zJE+Of@sG;BGa;><yvkfWWpU`-Vdq4kuDTHb&aOe> zhR~d<0Pl-QsCMLIi8k*j`Wcg!a}IDqqZv>x?VMs>l9U19!ITA0#9tL5Cp3>+S?Ed$ zTo3Mex~o|{olCd%=Nzeyr!_e>Q${##Vj$AL&bh9FvSwr2Ie)=o-w1O-TfIS|HZi#B zsyPf(yIU8)7NFZJCZLfgz#R4kuI$z#F<0ISKHiyhR@4Rn1?s!ABTOyc$ zjuc?DGj8CQO{&ZRX(n*3%P8YDZjCPEP3C3#39-M!{|vjSUl2#@RMkJ|mG=_Xdp|2K zA>e@R2>)K7t`c>jjHb+?7F6NQVnENi<2OvsOSUlv!0}67Hn^63 zQ_54(Kg9fB+x=r;o%5B7QZU;0I|&B)_4q$2GTy0~BG57YAnaCbrEJO~6l8wOdcBX% zSi@4B#8n7tnx?~KV6N`dGp~jAYr_D|#&UOyFoRY<#?^5L9?x$g?zch`EIr+gY0)PN zHWeQoA_T!4F=~JfoAJ+W+z_*ImJZi4b65CFh{brl_Nl)7OfU(t{;(2FWsiiK4m7_C z^?wg|Eikr>9Kyw-?t*Zp*~40CS|MSODrQ{uHlo6MW-OvnGSPtKfxbJSSu$CbkI8@^ zIQL6j-vrP+>rmmIy%ZH_EIt~}6JqA~jzXq%^PGRgVA2;!B{W`v&BI&`V%vemN<4rb zBVIk&R>d@Ki_u@V;}{z{bMyf58*Ai5N^nPNckf6o2Bq$A)@rG2ipC#cA-;2IFmpkh zSwS1Wf%Q-K!*qlxV=llwEh?}uog$b4^X5W%+eoV_YZi&7!H9YVgN>gt^M`lgI+N>D zuXH4dlaBzS&Jy6#CAF;IZnO1TyvVtF4lUlFbGxC21_<*>C9@vK1cwTi*0dyFz}Xyf zr^ivNH;TM&!}g@u_n_iDe7s|v5F5WBo2Xy}SJb4JSh#-@=WB`t*)#`Osz&0$n>X}$ z?dkcUGeD^NXli$IiCM&cZC457C!V9D>1$HPsLAS5>ws*rXJ=sn;us^z8*ug{3pNdG~q#4PNS2XnB$^0isaYHjh%H3+tEja z6h#HripU~$lWpl2V06|hB5u2PreUUueh)NkIwip0L9xl3o0Re||9ambs|FyzZlzyz zH+`EC%JehM+E~-pzs!jG4AUvv)^l0>@}%YHRa66i5Sf)xXe8(2q5G@_e!0Zi zP*2}YgA1HvaWLm3u3Cgv|0mAzBDf4VqeGHyu!*Za<*!ZjT^X{FzB4P!V_b^H-3YT$ zw^F8=ap!9T)=gab2OOr5gOY&Xlzj&7nIb@@pEfW@NdP_NuI(70|EL0TVn{TER~VQk zUz?zH><&`?(Rlon*H6V^hL)&L4Tcw|JZ8pcv~AF)9TCnSLIMd9svWXOrOp2bQ*bPa zv5<{rtfv#HqO^P`AsN)Ot#HjbTEkx?5me;kT@Fo%njts0Ly_?vYIU?I4!*c)T`?f>?F z0I46dqI(?`M}XHw#Y528|BJo%4rhD+|A)J@MbVeb79<@J7!$4Wq(@T$wek?*4y8vY`3wfi(_4}Ju`*u;`rwEJFm$kNIu)i`1-iG%~p zJWw?Zq)4+pNd$zQcrvPDV3gVrJ$1MN+1*GD76@ApPGJWglR>0NqDxL@opJU*&$Ob?JnIToX4S`2qE>*K@uH>pBvK8G0GkoyRb7F!f3L$ z4)NE&pVB_^u>*dIIv~f$*6u^DpI@h2?eK3~wza3K8z|pDEaBIx+(y;A z-1JTvtsIjYLT9dkc_1_&GV-a)*nP+)KCJ#@ve&xq9ApBS+c6$mhs?ruTSjr+OzMhI z+oC^Z$O1}<$=+nM{cpFBi7VIJ4U zNfNCbZ!)j(S-o)-VZyNKc$0b!UXH)%54tE36~mu?CmE$=z!F z15dSo<#uF&lyF-n1o^~92lmFkd(++7bE)Mo%neZev^GAXZ!WGobm{q!bc3#VKg+|$YK^shpx!jXB(2ym#$*H;3NcrbkXB>I5u}Kh|VT zi`84+yeDg1%VyKTaEzPJ;c* zZDHH68Nj4HZ5h+7=v~=phvqHD)7xR?I}n4im+_BHSVo3fS%G_iXpUjhYCUC^JknES zHV177jW=`UNVr*8#Xe7`Zd*>>?DENQ=MhhfG3ZnYSXR@2KW1XS^#SqyC_UodncAcD zOlR}y6J;ePAI^6&9Z!C@dLj1XNqk~^m_@{yK9;Sg=#xzUb!Az5c;_P_x~_RAF2}Vi~6XDx>}=y`wk_ z4SQicdj)sOr;&LU3UBDM%&7lOj4YZ7IjJ@#?Eb)o`pu@^vAWj0(n(XGI`cx{f&s4P zqAwv+a_3yV<%n^1arOmQhz3C%dIX&OiP`%BQa$Mxb_Rp$RXXY|*2`vpGg~hneX_+kk-75kNoNJ#KR;v*Uyv>`kIHInX>do#|t28MP3i zJQLKh-#yLq6#8Um_*!Vqdw87m4}iz{?TFVo4|6}{vXNtK>U}uK$gIsO^Hp?eCc9m# zJiU_D(v*DP5N})}x9Zvru05O{JZiZg3tC=9QZnQf*{#tIv6h9_2a^M9{6GUjO%2(b zHG4%{G)Y-JnXP9$F~=MiOR5|@0U?p|TLHN;15hjWLL$ikPm#!MQ5utp7&{eBkX0TR z5kTI8NRBcVPo|Ks&3qZ+WT9oGAHA#8_!DCer=!6X#nJznIkn=ek3j}3p2Ctn+?n#jMwTL3 zBxo`yGQ(ACQ%LWPDmh6i>M&6r>jRN2J0Spn`4p}H8<8Q|bqZ=S+_!KKDnDFhEW!}A z(>-aI0iEayhgvlB!P1n$QDO!LE!S9d9?a9|##0o`cM8c*@>6KNdDsm_RE1(AA4RE2 z5^VO-vrz&lk$^0*Kn5x^LUQgvfP-?+ z?Xzli>b+HeX?T$+M3BzZ5O1r9x_ewE9lUm6+#PKJ_qicXR3-xougPYVV^{PHYP?GR zEgfh2b&9g>1NFh3u9qGludwKHLp&QTpm-GJ4f*A~ei+oxTPeaVUHSDt;82~fbg<74 zS94q{q`2oI;8PS?Y6{rtanVFC#}MX3;Z0O5LT+9synrdbk+V&V8(!kvt+>S1cuP1H zuut;(z=tZsA(`PKj(xysNr-^?qdpm}!2gbZLUE(2 zg_^gBPpP~mT~iW#JKxT{40V)Dva%*KFagIT6*4VvQtn_1p|Y8IUy!fI-&OsOOx{#p z^ikupc2>_RN|L&s7loK3B<%B#4U^jsSUayi8hlV2~braQMb%2#iWN^`NP98y*ipj2%9 zCvX|~Cc55>ouG3W3_?Ao646$FNUT3zSB-XIr|Q@Mm>@ult!kW7{9F@RR?idsv=}~U z3u<3!HKwv&Ao#f#Ov7e^aaW1o&w3oZO))!7gB}LC&KXW3ubT zmvX$!YA^2$nFL&7Ysi=$DRpI34hM3ym5$6@ZicwpuKkbvo_6FXvz5y$q)5uvP|Pp@ z1LqH}KUkOFMi@NIx(sI^=i@o?!*Gtm{3(NTv5!r1P0UIzmyjGNUpcSB4-^eeFKMmk zuj_An7^Ky_(L z+jcFF)osC6Q&hd16_@wZH2yMJ1m`7N&h4iC#Qijnx7MjstgH%l_sgicp!P2%--Fkh z{4Z8MyKeJ@5Sh#of!BB^#;0e+;5J^;3?_DX!-u<@QJ0cdrCE`o-#PW zHSnCtG%s)OCaB-TZ8YKaM@|wl>}&qWl4x1{&=BWk=4#x7Uuk%{^dVxU8}N8Jtch(z zRJTYJ9#!=pr2p{!ipR>f008Wkin2BN0H>wXY*+~GZt?FnaUUFLSu|U~cXi8sx79}W z*Uc{NwUG)Pni|V2qO^rtgRMy6S~n5gOZSPM<{_C@n9ww|O$B=J-hUn@p01F`QlDia z6e=!aRe8wQ0U&rr+tQALrsgxHwe!posmucnPf(;>M+jd|C*lQ@ui+VrJnAULw8Cbv zZI%#*6~vL%AlZ@|LK#^!-1H50<7_X3jg}one4GrNjSZ2TrCeKVOD#*@_Gu3OIwOqGU~l zE(?*4P!8cv1N^CnJ9UL4AE1d>wKKa~T7jWqqyAF~5I9KYAm=ZxzknX>e}X3E4}S%= zLEiO5T&ghTEUt9a|NnieBl@thf^kN1jt(hv7<6j(V;$Q;;#}z!oKmovdnrH^hXJ4% zpu$!TwwNddXyWkQde0tnH%FbG+`9ysVf*^4?4-Nat&CgqitEqTHKX0wk2WvIFudkZ zuBX=vEj{1-mv4wZ*{0l%IL_u3YVRf$b$f8GxNWP6DqR|;0cVF%9n`2#JdPZAEy|4(Hir_S) zRIdCNNf*UlQr$Dd&^)6jDNcep&wI$L&(5#nlnH!}mQKi3b1z4*NYei6sh*hH+|*e$ z`#HUA>F=w($L)W;m9l**i704N=Bo#o)&FamPh?ZUjucqZ;5AygVvsA%F4UsXCFGHr zPGq9O*vW7>Af#9@Z3>E->ohTCf|%equcLym+6wmEar$dXq33G%{dMQyk-S<)Hh%g1 zdQ9*ZX@&5&X?%cz)ObVxWCQor`BkMKKOt!!+C2d6`0y{$oF6iPbB&l<`W}%fM!>a{ z`6`27j!TRl2JnK?uTv(%*TY3+gf27`0&30W|9O?sqgLb6M+^kC>XBPaGC9WZMZ>P?Zd4}{>UH{XThWs974RcV+GxwdC(q_vpZ&t}#(PLh<_TT+B`9Rfz8Q9pp zagMw2Y=j;MyQr=oD`6U*Vmr`2XHR;duD>L3Mw0Z*B5m14ZR@ze*QYPUN@_ zjHKZzFMp$WD3W@5oaF&-l|rS3vQqEotSQiHJOs|f&tQdFjx{>SgwO}DOq~}mb0PH97XcapoGDKWQBY6rjK%#6rR&}x(C_qLDJQI;TQgdLnw>M;Hc%? zFW>~TLQ^@v*tA=$XW6vdt}h>^3%0|<%@p}l7X{F5jl=mO^XJ4bix%FRwG|;jW=Ltv zmvwhvkK`{)*uh1&ALqCFz>tG4;;ckAV&AP-$uSPioD)`5&V%7L9tRi~K;UZMgk>C; zFFf6?8hrz#SEGY=RT>3-A7fJw=v0)zhy_==FOb03oS;DRY;ZLmhmiy4v^G7!wG7l+ z3f8&#hrG?lDucALV4V@W^F2Bk2_`y&jjn(s+MpbvQB_djH$L3P=H8B@Hdc}%H|+--u% za4<)wLW8TaVX<2Zcs|E?rgys8#o>KW)0Tr%@>6NcxWl9e!>6H_B_AKQjU={~%41Ri z(47MaKie%rOsNm%1youf&x&wjxQ*kbB=*+k4#ZwE&B}&61POpjssZw^^d+VWDwz5F z9r;g3qx8IGi!JLd@(zU;^ALK%4)>p(yEJ9UV%QhzhJRRg`6|O{-e>)n^`p@+d~%uf z2qS#{|7-e$|G#Pfx28QhW&dLo!aM#6zjk@SaJ|STF1tN1&h*mdOC&i;$&kY^Pq>+~ zDbFy_QOyI!Dg1;dPMv5wT+4Bt*Ih3Nm+;K3A*c+ma3bdc0~dbMGpB|aI9$SUnAcd( z^Hp%KGYXnmrTW@M82>px>vQB)l<2Oe!f_r$<@>#A*e@S8TJy@N6$)d|Hvtd|=J-{- zf{CTW(`3T&85BVb4DgYUs1)+qa$g8v#JBBTVr@-$mJz%SSHX0Ft06vfqw>1 zIESxM!qT4gBlZYeHDNHL~^o)a%((U7$C! zEzc`csJ=n(MUwi(_B-E!Zt}{YbH%<2lX)MISu% zh0YjyF8L9p8}c$jSqoq`mE4iyWTvC}?}@ZkOadiLGZ3rx04a>i^6`JL*iw?4G90-_ zj}JIQdpC`??TvS2J%>*5Jy}vsIaw21mzUx>-P`qAUM4Ck|5*+~@qAOalADCHOAQ|l zT$#r;O?hz961}ddXULxCvUw zyzawvAxrbzhKmr7^W2^vA;^277cG!gs8owItUT|y7h2$@GSP+|?_!lh0X*8b%-4!? z-^j+n&Q8v>WSVvR2iH}LxY<;HXE>|>We?5lQs9f59>RF{r0knAFi``p?d+yl8E!G!jtTOZNhuc?|z{RDT z+YKFTFbF7st`-H{XoX4k-U6zM=XAz|cSlV-VV=(#apC~zpX!R%GHkY5NBi6 zfJhL%T=c-o8WTr=Go&bB1UAj?TuH5Rs#hLbHxQs4;ie{N9<*CRn%;~edOK98z#7oNeB%g!PqrZ|lk&mn)Z4cZoX(7-D>8_Ix>m*++8A~l;u4l;@ zGHMQ^``MXZ*z1k&@)*U3(J`MgLM31L;WAbwF){Et$roPWRdTZ3-!l1Y*K6XTar@fZ z7AsL$?V~=UUeo+6W!LcN%sO1JRm{UHMKMVGCly-aGJL~-3d!*9eGt-&`78o)Xugk= z^KHzj9U3!3A1nV?56TS1?3n@F1T!0wPq)5wtF68s`lc-REKYV2xi0qX7)~PST@#NV zPr;vlWaBsJrSXhVT(4!y!~SuOPx#r7suN_+y9QbJw;Q9KCZ)oQF()iQri`Rhjph!i>(yrfR82iox3ltE-_)mRR zJm4m4UG-N+vHGeW1wh*J1B?&)>8wGb1K)|^SXb6WW~jdE+jaT+tsg9+`s>drwB|>T z7Vg@Hfhtl6C;v8!tD0F?<)!G3wPb|i3;YT)R`CT(8gfN}w{jU#;lySMi~W1E6%ZS% zB(~j11ya(4<3&8g-;amIjULiQc9&5DQfvGWVKV>?2~|U69M{SNfQYh0y17LkTI5^hAQO}U950-G8VR}}|i!ktl z4Jyq?&mm1(2!7z%OnLEj=_DA!8h-z4tn=}dNL16%I1e9&sF?W>#n~3)X}Zu`%Zr`v zd<;31)OaD5*J6*k;SP6JJwifk8ers84Hxza1o_PNp5D{s+8}Dr6Mqv!t1A+5VzUF* z%BV6_F4-BcEd_z_SjT%%M$+BbKO?hH`Qb2t9^O<-yf zvcl=+lnbI|ZE-408*C=ZHW(pQp@t3Ily@=AUcS!zH2?3yeT`Yc6Lu;To{*JS@OZqW3KbF zY<}El%dkj(WUlQ%3(l_Ip?Md!lVfP=yHil;EW(qxP^`=+2$)ej5Arj1Uu``Xa`8Bl9(Yk4~&qhF2Z`4g@*{KDf`u@U4Oc+BNcm{R8= zztPjkM0iAHl;xO|f^m?^Y)C4JcA`uJpoBB`pVo!~n6Q~kZ3zW9;mnVx9iiGt)5PUI z((gyL*ykWnb5{t}B2gk(FWs?-L3K@ZQ*J|ENo+2bO}OE#DVP~*V`WH|$+UvMP}DhW zhqwh$vdM!GWb;{^h|hp@7(;$z?Sg@@&*%bp^b_6Y90;$E(toTn0y1}x8I*qymGwk) z9|+es_y769#kx{~i+Oj;vMxxWKfIV~UOMima>m3m^6YESlxDnmqXG@&zR3mb4M$32 z$F}*1a=- z541#PVH3eT8KD2bh(!%Ngj+@Zp+NBvz6ptbNIlP`prXky2GB)v3CYx4 zBBYV7pOgtR z6FpJ?^0&)Do7Jv+A_PyPpltQBq)_U8ak^FXnUI8oM zE?^o-%>|O0^O3dmOhDjBPpx2XiwiZqIp>=EVM=jM!dK|bAZQSL106y-)vo7gUzF!P zbfZP~BvVg2xK-9paK!~-mUDMB>;bmc1ofwavzrpV`9@JGV(lk`Psr^9<>}hZ^?9T zSeNILy*^om7uaknaxZ9PBZ^y#5R7ULxm&tF`~2ZYBmFI+9jaxdBg;bzZ&*3ebGnZ($)Q?l z=$3EywZ7{yzG8QINw5voG|c98y8jD{J&IcqU+JNVtYa6zp$^U8VFTrVwD%t%@$?u2 z-D#Qo<$73id8(s!I|bIu9Gn3Hnc9)mQQ9|yf3S{dt7iYSViv0D=|7MItU!Az43>`< zaZhbjZpy@DW5;dR(?fSsH=E0P32mV0usZjX4&s-cNv_(LycMGDnx#pAKFs6T=o8mE^#hzC-%T-gY=%G<3>DVcWb}Bh9`t zR}1zDV_l+XVEA#7IC!FHWb<}0=XKdmF2~(&OJ=XNi?{UlIRqY+BuyfqeL*s#x1pUu zyQ6Io7kGx=dSaGX+Ft#rr)4y|zepaASo~mmSKM<8eg~FK`leG3{7f=_p(Y1u-sfitGfY4f+f)vei1LI`0j;P(OKX39O>wNl7x$s50;-S!y>tHtEQt* z9+ZhWd^1MO-Tx3zXttuJ9XO0%cxNhVFmylTM6$s#=v>)n2$s;!vUu6^miQ-DURLoK z^kzw7nE-U`-UyNuYK<8+r6>1U(U0H_i^C9Eq0JBnwQuCGgZ)KqYn)EgSi^+H2k5~1 z!$h-|5#v(=xy$B}))qs@10a&hQ<=-T%Vt}byM`_V=t-()nktmWFxnjd^?*QyGjUc# z6Al=izm3KVBz^+}3!1s>x$77wviq$3ATY1M`yr%#PO z87q4BoilmLGl$H7b3OB5i{86Qcypq9rN8SFW2;XYSu@Ats@nBU@AuU<0dcE#og$x1 zWz1!2W?5jynfLf$x=6aSx}e>uz-|2#cG7`0h5)OfwjE(SQqE5heur;{@+xMrVlhx} zHC59+kq1R3?|~+(Qw&FWHV%PD%#!wm0(*!x=+K!rTV?!bBTn;4`qzj`k$%5}<_~#j zp2Kf}{JI__&($7Sd>%ud9tejQ`Ar;|(ixZ>na|kH(h6&r<6g@0DhUm}2zjUUy^Xvd zaemVb5Nq$6+o>uKuhVlluRoNrbu>7ykBgkCT2dkKO`61R@B#k`@Mr7*7HlK{h&|RY#a%Dp{ zuNxxg!*n7alb6OMQt}bh~R85}reZP=39Lq78nroGts#RD#1T}L&U4e;2 zl-}QGeA+lw7AK5&2<5eNEc#Ek&u|yVXa2-`DpbJkc^P?r_ zfcnDk9@UR9yB>70AXBMXe1p2op6qn78Q80E0xZ49^`RIGXpWU-N9YCKk9<&04oa}1B%Io&u;52AMm4lXH=! z`Hzvx=8Db)QrKqf^?+%9_pH<(Y7n?Wk7ZOhS|~SL{cM5%e!hR@5gQ};_rrz$#Z#-W z>9z2mX+P%Xr4&Rj461g3M|)6Ot`osD8u5ar=li2hB_#K0`7dAa!VL@%qDTr3O%R}9;e zyq7aZw$(!=Q0LUjHF~uN5d)zB`}Wls+gRso>^OODF734|X2)Vr_5JZA+WUBlunTAF zEQZau<~tCMd(|oJ^L*&XN%TtFK1$Vvi5O)YZ(^7(uDLTv-yJc^N2j34g(suE_+%Wr zyC4n?-^lzbeT5LyJXg+y(E1J^J?`g&8f^X8P>D*P?3#veWog5+6V=RJaa^6_meCL` zr>q1x18iz6=2ap>4*zp6bI{oV)#jDqnZ;Hy0ceMU#Nm-EF%l3hyD(lqNDG!*w}!`D9$Z_tHOOCJ7iV8O_kO zvqMqg@<6@M!>M~0$uk~caKyde;1zq_Kr++2y7dUer(yidIpS}uXcT|2NATzyJ4jeV zqtzZfZ%}S9NanBXcT_UXbDlf7_lG2Jj=s<@Nt~^^*xU>W%d9aUS_|yMc$;d}T$~%4 zU~Fp7MzyQfdp95CIJ3S>_PE_Fj`(016}Y}D*E1IGO{^V#@%7^vr#{qwNS6z&t9vs3 z*X$iJPp4(!me*FF3KiTNt^rk&3~Q7aVc_n*;uBM)JCb8@KfT7Mm%Q2owB8$NYgf~g zIcw%#_!?nasfVAFU)%W4*H5!UosrHgHv!hQklgf3v=d*;H0@|#UCijU(=7Be_N^-u93Xtn499M-&3@k9@j6+saKNF~ z^IaZLd!&RSR1D&mP&>r)qB4IwB)w=mY12NNI%}9Q>j-@+Q#WFCaQHxjQ#V4iN{Y49mG{B=HNW2l5--^EjF>AKQu+>Kf=OK6U;uIf--kom&m1FrrU1Wgu%H}V<%Q~U( znaBbyFuJw5?|6P|b$2*UOqiObilshuvb7Lh#8rKb))7rw2Aj(%Y{SH3qV~V0j-Ccf z8K${j`egMdAJRY%2)uBz75(Sx+BGjz$8KqPN0ZxI`=?&SaW!=&y0L!31|%eem_!VI^kq|Te`z98ZB|g;)78l39=4714BBM^<9Oeo3A*h zlOTLZC-AXLVckojw=fDah`^(&vwIqhE(HfX#xxu!l>rNwQz z;9hZUbMnttE9y??ZM%ts8}(=n=9vCM%3(e31I&{h%mvB1p-()fU1G^wIiDfjPZh~| zOCe_^XQIiBQ!#QG@0x*6>rHi0YFSI{$WS<4f^&1MAPuc{Y$ch_kZ$r($NR^xF%C4{ zmA84Bqln2L53Rr9^Vj`#HJgSlX#MchYV!s0x@NQJ$lGTn_a!1Q}w%`j2 zxhretr~!B3^C^Q{{g)VNNuLG3S%>#58DaO8AlS`g{W4INHZ4{OO#h(+#9vt_^88qtkdmlUitugXf4P zEmc0IU^K1MlBAii3D z<~H$SXQTU(wlN_|s0j-x=BUmD@$SHHUC@>OFT{<@4Ag!jMgBDizn^a0z+@V6$#m>DVcdu3LI(qdopiE=fz7W+P+2u z8J%(6IihuzpC-Nq@_O!ygLAmCDHZo29eAV6QfTg7a$81cRGb{!zhH;4-`yI1 zMBGnBRz>_$jGTE&Rn#e&yN9z03@J3`tpaY$ti)CDMU!XOV=pQ%-hd72Ev)? zWA`t#FM+Eam}U7@EM<%VE_cuwe7#=b;5l+dmY*d4R=)%$cTH2O|01yer3|{_($R^$D@tsi#^*u)db7`!EL#^tbPaydD|8=W_|O$Nx-pm1uW5GZ zUrM%D74*-1&cVSKz|r3+wh$Lj32d^3gkJj1@m^c`UrYOXiiEd&AFY=EH5N!k*j%f< zpp5OmL511;^}|az$NtX|3FW*m5&LO4;pI>#D^?K2fR_KoU)^bNX}9V)coX{)4}0o=fjol#r+|2^;maNtTlH4|ie zbP>|EsZolXD?G3`h1|mZfn9tM{Yn4?`ZU#wa~JxyEDk!pZh=2qjJ+V)>GC%Ex9n9S z=9)*>7s;$=L5dP>i>jG0vSTL$Oh0#|-jVL0zcLPu6{MciALz!kj2~NnIiV}kZ^K(+ z;!oCB`kWr5j?WX$`u3euiTk5wQ+u18@0}o~SC<5N`x86@S$_I9+O`%dS3AE4okT5o z)LJZD?R2|$kR22co`Uzy;3+s9Nsi5mzGQHHWuEg(wX_-hYG=&Xi{X<`chl@k6JyBd z8A@ZI+_1a!!x_^WM3vFU2;YL2ikP%WQZ9+Y1(LEsW3{iWj=qkg@b7s^t%5v=2Y$qq zz#;A4&cc&0p1h=x=X^wAwBiZdS*k5@8109k`2DPtr8TQQZV{uksy?R6+IY$o)lah7L3PkoUMuN{x2{uvt2D`*_Fc@(>#H$mL1T!Ot_7eAheK*>&*8UbVh(W?c#c^KcvnWo!Ul-?cT* z^&0K-MC*aye4#A;f@HK?n9g=z^H1r29v*d}_silOe!2$3i2fbZPTx7X-E#*xy1Zlu zbU+@`n0snFy&pvN3=G@U59_!RGe;*Ab<~9Biu*B5tAZ3Y`;dSC9f0FA0J)Q^pDhFx1M?I2MVLg4#UzNfEm?CUCr_sCnvy*uksSO z%Hk%Tr919ww?c8Vk<%bhh`GgyX%Mb>Dp-W4r~pXuAN6Q%N6fE|0$+7=N^u=_|T> zeG~W$tKkc=Hv$f_f8Xh`s%LnsuwexSMm~9fo(Dmc~=q7?%R|zEqlnpjraf{om2o-~4D@j2(J1k31KWC?XyzT=TqTFQ^Y zM^-X?J0Va>f1RI*M*s6kPX&ljUq?(BgfiDxT#ob2y#nf(oz;j?lyNp%hOfj64eTUc z{+I#zm1$x#+M5uCUSqhX+`qxAc9*FHd5gD2(5g#`oF|`@WUW%#ri~wFQNbk}{UNYB z+x$DkfR;tPDJue0p)5I$P=vIMD^P^8yg3>hy4&u+rp2@l9}fF=i6gh6vF!?itC#`d z>=5oCL5q87y~H46fCe(EYUkGqkpn4VW}5i8>GK0aRcmnu7Hb13}O?{|~Ctga_uH*Q0gFnGdyff0D&UnoqSMtbF<1ePP!EO21*%UHayz@gA zQKTkP*iw9QM4Vw+E3EF9QRl%2cW}Xdb)@Degci)0eb-3(RH~Z5=gGI`ckGs6Gg=m2{@$?nFiQf~h& zd{}0X8^Ey`+c_HRTOdcyN0$&Bf@ZF+&r@z|8}RpswvA)5CV-8vsRMA>Xi!b)peN|N zKg{*yD>2U{=ZtzJx#-sccSRfUReFSgrc50pZY*~QVCXxs{A_f=1VcS=*=k2U$@R~; z@L%zuJM650Sv30nkX+WHp22c-JV_+)^{Q#P5z2u~&+F9x_Fn_(35nLe!0ozEP6X+^ zT^<$OgsMCj(3UaDEcYoJNiK})=t}XgQ|qk8dq88 z*V2t(8bbGTsby~9phN#T=$Sv1N@Zy)(E>vO`^!5QqW=p0Yx)m>(R~fdV6(jq*I$KA$wq|M7?NuS+;o{E z!JMSS`XY}Q$D3loYoIS}+=YC$3nqMxlr7p*4AU>(UncYA>^10e9oS)bH%(61g&san zu4vR0u#3z<6S8H-uRwcU(B!Di3vz0&q?adDVMG<=Hw5;uJT#G8Twk2^#E2;_=8twK|Co7z@(RpaY6 zjmCBsjd{cEWyJnnT%68M((rzIxXn|y#W-eXb?iRl-=~ApQ1}LO)qMCWNF1aCrD9f< zHa56lhnlG^XO(@84jA*%Wt&FkU3ptFZdCp8jG@h^{8)#8oN=s8W&bFGeWNjF*o9sK z3D%u33rHEaw`uL)M6ho*<~g>Eo7o)c7euD_-N+`vr`q2SeZA!!!yJj7;NNIO%Q44X zwu$>|bdL)_WB82yR2;}=qtcI)UkJ24tDgO1$U@DAaob(ufz`D&9-OaAH)cEM_Ke=a ze;&2zoZFGUCN|AqB4H5LZgH~UM;n9mDv6AHcJR-x$9o8PYu09EGm=P)pZ3z_ieXF3cs>J;s>H2p~@C?d}-RL(0|qF*XuXvSA8M*61VBmHQC z6TB$d#nNX7v{R&Be2rOa-(B()@>TK2M?Wv_i0=m8<@3~OeOU9t5>l6PO*KaJZC#2X z#g$meWO1-LJbp+wq)U!~-_>#C-JF9n2wsTU3{2ly9cMdZ)$A;bgU?t-Ih)`dX5inQ z_dA(-KB__TAkCbQo^(t?`Zymti5w#ZIwPH&PFlQWMsN(ArBAvlB6yvJbDSs$r3hp2 zrYKevX9*{(97{iz0Ozo?V9wPUWR&xMV9r5WI`cX^g1jGR9sq(Not*`ouYxeT2!$3T z%M_&aI9&xXbWA(Wxd^QmH4VJ;qAQ{a#UDg?x-DZ&=1UgUmBv zf^!1&nD#ya#6gDXhG?`6$gy+*S!dd(1YAH5V1k?*?Lz`c3kG6CI@%ssc3lBSr40=8 zz%Rc6vMGVpF6Z$xRtCp%Lpa(RBv85l=llj=v}IemmorcRYfEOjfaFQ$0w+TIFvu!p zT-yN2lWl3!PG5)gv}H40Lx@dG5I(8BALxh}unoazcw5G_Gf48(maucVIwZOQ+|_oL zS6NV~U0e3Fs~kay34%QPO|_UQ9E%MQLUSw24l+Rw zrS=gJXv6T>;Mq2hO>1`oab?s(l&hbB33JcYY+lL40^>jM{R7*7wZ#GxL{@J6 zJE*Y$^%D$}VgVCRuvGyIc+7(>-C4lC(jX9g6?ps_4gv!f!@hxk$q~498jgS@R)$xD z(9+c%M%;$hwi}4KL;@{$PS!9BC>~|ZQ)2Fv2;-6FZonI3W=Sz$IW5qypX zq`00iaTbWu^t8%jfe1}Yh~rD?`#*a>&s_@7X_54-t|O=_tMt(7h(XGRJvE^OY32Qj z)IvykPf}>bB&4b55eT}4)b^yTR{Vf;C@1hy!Cpl>txV-3n$s>QSEUoqa8cpa%IWE} z8`Kvqf}Z8+CKpIJUMiW)0)WF9ohpF|-k9w#;Cfl-qiU7j6XhzDlz-&W1L!*LE zq-oNsXar@NGL1$fVrd4nnp-ek8i>jQ`H(c=k7?nZD!pZ;TM05EX^*&6_aQYdi2MW5 z2{fSpYY~_#1AeqhAl}0!fUltvfu5ZRa-=|RVuc~2h^ro+2P|mSfOn+=vX#51LwPJ& z3DS^2mI7^uu}hP{mI0uf#)Bp9(Vn?f3N{H<0mx4-NHzi*sY+1xLB4F2tXVb{#B6~~ z-3mA$seq>pM@ zE4CP{0I)Omlw?^l`7;*8Zh4t%P=SN(8L}?=L>m- zGq~F8_-L87ns)?XA(X6~HVvVIusN)>WI0gjbJf;!qovxa&k=yJ5Kjf$A{C^|VTJLf z=g8eyK0ImKVxVPW0VvDiE1rAbtR#_!*;%*<0rJ9(_Rb(^XW6$9$fO(Ya06fiN zc)Ks0_FO))NZvs0r;5=Dt?;%O^s)Ca77I$AOn|s%z*sU z;_nJNr^+B@paQTtAnTTz!6CIIs#o-K>RKMwP>)(F=N_NQR`jLqQxe~Z!hXu^Y<#c`GCX9C~Vn7dX~GFZyC=Fro&L#8;dp3>b3>B^4^Wn%~&;$j8D03~YaX6dNrtQ(~!R4x{K1IDiaa zO%F{}%}pSAY(9~iafx~{Wi+5JdCK+Oh=~Ky4qd>QHTn$s_^>fQ7(UT|m+(O~SA53# zyD-W5`$HFn+`hT0QGzx)kimZS^Y2IzOwqUyCe}k@@ZK#`sW0h&%T>J0w z0;I0wNsAo7YQPWsx@ZaQ3EEpjW&c4v@Uaitb=}ik-bEO-FI6IZ#Z+*|XH-RT{4>g; zjT*XOI7<>C)g(P?k;DhdB{P9ZjCp-R-q|fF7 z8)fNPt>)Y2M7q4nmAxY^Lbsj4kv?qPu>43mW7fO}J*^S;pr__DKE7Zmq4QCnx%oMb zSMkwqxHMcguX6cNLlX7=S>kD@)H1#S@?mORj~EAx%57x(OE_STnSudzug>C+_p3-k zrT1_D_CplT zgC}oM0HD`#CkmoLR0Z80Q#^hj+HvpWh&Pc3&Clrk^4Sx8Vtag1Jp5Nx8E|QYd6A>S z^1aD*IY-^@;;!e4v|%=d@g4w{;k(g&e{;?lhwX>fH^W|hSK~O)JBGT2eFFbBd+Ju@ zYmTG%B3!`w)6)&U`j|p*7PzrCFB>REt;8;hxey#2d28`gPq})Yr4|$BWG1+e0Zu3o zvhFmVNWD5v7@+!(57}q{fZ#Eh>1B3rZ64Vs2kG(4!ND;cei!xVE6hFQ@`w9}7tXIg zAJ?hx4>Dx?H_FLeumzt`oF9Zsu;g$b6>TIy#1%@*V+Op0=OrueQw_gQ<%u_ zh%h1cRg>2Tmn@%Z-#n@3;Pi*lgKIzkzGVL%*g4TGL<8SvJk5z^2rgvc-Bv47s&@`S#}hcPD8eSE#arFT)1 zZz*#`nEfUk=eaNQLd^b`zU^NXiKRB58=gIW=N4up>8)Q<&x!E^Ul8Q%AO%s$%CS$-n> zn|&Euq~_4dCJ)3)q7ikP({zvFBmjlM|lDe^NPQteBCZ`&RJO1m3IC2X#egj4_#o z?vW8-r*sbLnPM_^4z|l;OuKcnT3aX|V>T+RbsVa3w^d+yNZ^^W1iArSJA7z{TaHCX(W&?u)4GiKn@yz2cyv)*^Je4X!zeLK z{9-2!*T#gAix0zj0S15v{#+vH-yjD75AbVX6}#3l`tb2MKOh0%AON8M^al(`@=(?p zJYaQzde0G*WNu*b;X!Xp+)(d~vd_Q+9SYb0d_d;&0XPWtFds+*G6gGf;25g5X7Qkv z6|W`zQf<$|10TRVUBeA18#qV_fbBjHHfCbr0h?!PxI>xBhdn=>5PS)uOCB~*3}j$r zaq7;)6K(o&5Dy@>gqO*46!I0 zzix^Z*1LA-=_f_W#&ezlLh!o_o(Tg`vKebw4;Rav8Ux7;7XXj&w%RQAA93r?J}w3) zB57G8ZNN5y2`CbktjDEbC=!KD)=*DD6RWw05woN(JDFiD_)mVVcsaCiet2KCnpi?JwXZ(OAHd zRLkq*ftpR!%}PTYF0R@j0@K_{AhJ@ODjXttGVb&TJiI) zzxUlWVAi0#pTfrVtstrFW79+H^Ipy7pX{}cl*UY9m~(}+ppZ|K%Ci!4q8b=P+x5Ln8Rfmy=yJ5@PVEr&06!TRCj4zxx-U%z>&?);>ZD)nx#1xn01YpI zlmbX7D60eK>R!eT{&t}f@dtIxd#(O>;1J+aJ2w&meGYhHF(B4~^zRC265<+l*MDb( z8)HqL9V^(Q)$!`!!l0c=F5e!W1wWe6_K!=<9L8wN=T)U9%F>rE{OEHw?Teg6i_e8} zlx|uYRl$bH5z+cMBE}s8z?K&z+~=Vwh2j4_fmhHCLBiz3-q(gt;f1l62~T+-NB+Wb z?}cF>`>OF*m`DZqb&+t4JO`%>buZ(IUNp5Mv8Z`h1$@$D@a6V;IVg5PXjfZi_zvCF z)*K4*fcn)MH}osU12^^SiNTjgw`|;Kde~HZ@X+VPvCrBHh7Fm|iG)Yml%2YcCHFj* zqs49EjHq0}C|Tti>L#yqL>isZ_Tgq!k-&#cy@o1`YVt5d>vKG@!C_q~F1y(d+Qc2h zzm%{Aa^(CS!`3AiJlxUdZ6uepP45h+{H)0nO}AT)(;hB77%{fa;7|)zwt3Q1=U20; z?6a;_+hx@c94cmbY();UP;1{LNud6GU!F>GgFT0*^SJFBl#nw=NaO}SkSy|kC$thDFETC-5jW>|OI zNpQn1O`pdUX{iO~VVNE(GZvCwRkBdP9B9`{8=Ndz^4~SOaqXYZjwQ_AFq~hX^y=?- z=`kNn#HQMTI)R^*ydI#i+a$5%7t}h;HVRVMVl*g7<%+SOY#4N3j#)yKs<(%&B7P(8 z7X|xd{5qU1+-Z0_EEc~;!L^$xAFHcZcZ?WCq}33U=c*p>e>CAp+GNQ1&h{j0V2B zP=g53EB&b-Twy@N2k#VQ2oU$y`=M+&xJbaGTI%zb377C?t8pxhuJ|Vs#ym;Gg@p~_ z1AbD5k;>mJT*p_e#=}rUtVO~>zKSczEAVkVU&Nr`z{3))^KgMY4@g?U_+XUy3Pe0G z`T6QZcXNykUrvl`#BArQirs)n#a9yJAxK92Gs#8lFvkZEx|HoQzN=7M4CG00G4Osf zI$(Y_9}AHw{Iy25kR!u~xD@dok}pUnc>s|CqqV4_!d>pqYkrtB>4ikOaPn0nW5cRa;=D~)LmfOPyA6G+eG){ zM+i-b^6Ge4~X&j2exxRdb# zHUeBU*=Nww6t@(OF~#nutR8f!!-i8W;;P|R8JygCP5+T4z?fu5Ab)eHbfxcYSL}_t57ZwnZ$>jBqFfYfR2O(BoZIw z-+Z8T!-SMCkHP~w0dL6r73ILeujW~spVGkSV;%XD)h>WP;@b!}@>Qzc;Gr+xK{{Z5 zMgtp$_2NrcyTVd|5Atd8E|Pb(!zg|w&x&ZPj)%o30H64BLJ9tII5x2Ed?}(USS|R= z;ALW+`K!es$cx~wgjb67VE z$b8DMXYhe#CI-kikRx~pjNBSe4`3qbCVT+MXE?m&dkOW$#w0H%OQ>s&u#IO2upq+X z|7^4mP;q=fjW?zaxVmz2C@Cjb07>YVeOo!kvO*NA~}7N2C{0;xrO2!Dz{V}S*( z86TAIz=`7r3Jt|THRD*piD%>vV*m`Wiue!!#c`P6y9;&2z$${63m!yV=v!alK?YP| zfqeCkaOt@&VyPK>eVb=I$bMp3>hfxZUX(N!JfP(NXNxqf7uQV;*+)Qn;sNDp)DkBC zRj#Af4Lpc?8nuF>^=t9O1HJNGdV*V1fgcZ&BnlZ(#Q&3})4y%MUFOctV;AU&eC;T7 zo_!G?;+f`B=UoH29z^Lp*LU1l;u1K!xpqVeAD64#0OE2V?7B3Zp2>}cR2tT?eh}aN%UHK`ZzKk=+MvKI0O|ehQY$c_^U@ zeysv78M6_;Uct={vyP}=@1|g9hu?|&)hD&w^%3?MekpkNvHS3n6qjzsFn)0s0H6N; zQ{k9Fj457&;;w*Mj$enz!5_qfu^(1Ccm+Hjo{@NUyt@fq6%VZv0G06iILH2^aF_qT zz4{N@D=iOD8sk9i$otky;VKH;d8I-;>RTfvRv|exX8O8AAR9_C0}ll=FIVV|^Zyb^U`W9s-!-3h&#nttnM^0E7=E^XQHM~$!22MM~EU{B#jDJU%e=VsBDch8(~ z?EKXz#PJ$i0EKHF3TwwpSSCcWKv$B;2KBd<4$C=(* zS6efVm+sNZYP~SdJgIe~HEXDhu+X#KKCg$+}3pU0aIrSh_awe#+ zKc9uW>z~Iu`CEHuPINlM&&vrze(V3r${;j9)sJNCnuST*o_wgKM>kB{j?3;+1G_UV zsF);eUIawcQlLqxWTuot93*K;W5H$2WwiZM5dG%mf{6_x z1OLAil9NOLJXQJMIov5w7THYFW>&@Dw6Nb$niF(u=Er!th20G%L_~s3t`t%ZMUj(r z5QJ4+7gRp8G@f?9%}~_6y?M7;;W51&cM0;A9H(1G{h=!gJ@gj#c5`kSbxB5!FUMsv;)#DzXUWA!`x%BbPER7d zG5?F>qJM4?bewU4_)dL9brWHymt*LsWY?9>vM=SURN1raLiiBDHFqij1IQ*m@NB~@ zRe6v1VBb70fC12<^&ZIZHh28519!DuCCF)&Uz!Lz(S@8=4B9Bfw&aROAbM-tewQ@5 z)70(%y*YPRwUoO6>lZ-AI=8Bm{I;_^eGRChy&Ha4!ujQEc2C;^TS1Q*q ztDCQwh<ioRAz4%An<@VI^ea8B@go&R() zYX7X3HDC~@+BiyrvVna*=yId8{S}t!awk-7%B_ZhHAXL}P!5!R)}G;oDpCjaIQA22 z?@mrqP)+s?p#dglza_pGUPQ?-Hg|ndP$y=Cl9I5MyBA(f>rj*Mx*#@c;O)#(xL*S% zU>Mivmt3x+O1i5Opq*m26~6rLDcj^S3mCVH)* zL^Zk;lZT-htR)=5)ran4kgfRM6=wBZD)ek@>Q@P1ZD^0K7~>UEW24RzNDzEy1Hcy4sTezi3@$p!O+Mso!gqC~VMNnID#tZ0#N0?)5*<#ze9qpIDZX@|+Dolbd zAM3*=X>rTe1^ai&BVu>%;DffNlr5Cifgt^?L=_bXG6xN-9)@b8*_5%)-s7)Vd8BrE zOstIJQDHQ|e#MnwUlCqsU3YlLid|wi_&|3LJeOnk;{He5YSvN0xqq$ULkEGRAz%r+ zZnyYZyNlf#^Cxba<~zv^Z*U!tVn zGLf!GRo1FLw(D#mt@uu($;Oa3pO>o#$<8=BVCCM`Ymb>a+2jUbif;L`Xg6>9E~oKs z9lY?olfc#&o*D+>Z`Yob{XNb5E>BzV?d#YQqTJmlBqBP9A0^DqnP$U9KBI!qSdaprt&1>(A>GT@H z=&ru1)t;%wwW}K=tXB5cwP1MLM&9?pI>#$^jrlErrI*5oU-bI{vlF)T;q?lzP75DaSM;?-*3!tz^b1!tA zJbx)e3Z;szH?;YvTiT%Y=<32k*Frz}gR1J|=hs|b+@W!1wX54PUpyI7g$@Q?7yKAi zg_FXb+Z!|(Jd4fn%cuh0Q{&yPD&$L#_FBo@GJ2?y;zEMoS=g)4td;TP$(yFD(@P6~ z?smK-AE5PCz%n5X=2=*TzFLDWQBGTE+H!<^t0}-(bwPHFXTNfGyGa`?i))+>Vy2S{hEh9FXU{5%Yf@xTW=NJP|w0cW})VS&aDA2o%4 zku>qNDyEaKT<&2Wl{?&@DVmmczbi$0#}fR+E3?zyX`@`BgU)L+bESqGpLKzGJ=Eb7bHy9q z2Cc7LN=BQEx6y|4r|@U?VKmmp0fM7mgxy_@LN(mD)Iat_OS69iT=x>f5s>#D zFs!M`@p9C@<8ke(J=rXW_^lq(vQc(_%)xH$8~If?&!+3#^Hc3K%4zat1Npt4;OxrF zE8KeR>Q-xx0olxaU2yc*w|v^ZVTWkjLA`1%&FEt*w2218Y8~}dtV$1m&Ez0S}Q6hG&LM7NIOPqx?0}zZT;Mo+B@Ug{fHJ4@lC_S+1b=_0$C*;;L zQsN(!ev&2!b*<{}-+HgK|132J<)GiDVX6O?b@=2094ys@-IGB#j;^stF`Ja=R#C^s zgg|0$7+Xm+N{a8i(lwH`;+mALbKR&jBe3kVp30jV8M}@g^Q@G*(Pr+dX~;Va2+6c% z%p^@;=L%6RpUn`hK;yxwEr`6v={D!QP(ABn4EN{SAOmUufaeTD5;BKQ$hX<~9hh)5 z>TnxkRJ^=j!Ce}7WTWR{&Lgcy##ajp%crG02{O;Pk|7Bf;6ioAWKP6YJ$G}XRd;!( zcI85SI(yjn>?30urwfu7sdGt)u4s2#G~FlsRd`j$XkS)Bbj6o5i0Ii&xGr{;`UklW zm(;DAX3S=!)JNq$JXN}!>XdZ2H1e*V~&dAp*rSe3kEdT^t+zcY;*!1`G#akkN( zO&wisr_p`q{z=mN;YL3kJEAAWv$)1X{h{nY_3V&(?aznbYCHLVURbmL7VpH7Csa&u zjnQF_w%w($$1{T&=;_ruXJu!Tu_hqI8rjz#=$uk!kd|*WoHbLrB!qX5hU&qhX#%=5d^}kq@N2HftcVh>s%h8$^#JkdvwF?yv(=HB_)jKi@xnV!XRdY7ER9! zR_ZMTxq7e+s5a@1!GMAQSiT4-^D_|XCS9;hC(pU+eFEL?(evgyu^FznYz_0e#(+s_ z0f|scdpLQtx@#3`pUl`JCv3yyQQ{{p5k=!Z>qAD$t<(rXzRkXxoOJt!fsml%q#ha9 z&XLJ`c8Bn97joYQ2JItV`&=00L;Cb^dRcE+Zd|8n-<~Xb)YzE~ZK|4TYg*5bZ)m&c zr=)u-?Gfc;lecfG&W1H!UdyZZtS1E}_o}aH+?z&HU-Nb(!+ygWhmMe-%3&ufN9mMN zue2`pHIZ}6%m^GPx>}CQ=0#qAhn07qPY=np3FXoXt``q%oL(OcvcdVLLcrz<=88Yl zcHGd%JhM4?nAO=#$STM$?_MpnL-pKcX{dhe-%2Ozt7L6alVk(4*-ZX^YF_%ST#n^L z+YsZ)ynm{|Ar&h)A+sFwx_NS7Q-Xrmj|%1^wWY;X9?G~EWr~m~75YlQ_`~ZRqHhJ{ zdlCzi+Z=1SkT{fz?Q4GB_bIv<+DD_F5oM#lj-JSnvfD>^8blZD4toCjXw`l&g6-ZO zbW5-`D0>*%0Qg5?{!*n=p7-$*%RWRVRaZm|Vha?%%Dn<~8@RAWj(RWx&XZmDGWRps zsm%#{K_S!wx$tvo3HT=3t36{HUscp?y1)OcVl$t%V4Yaf#C;_~6a@4u8pMSHDBy*D zM9DmtBJTUYwRNLc~#8p`^WEmh&9Y#+O8B(r_*NZMqXgvj$e+U zm5v8!u#&Od(g%tPHk#$F?$~_ink22o75;h~0@77bw<#&eZN%flbh00#kHnrx$4@T1q$|9EO?d0+Kz0_Q}zsbAD9)a$$9=?8Q^qR;Jhz5w-y zRpyy9Rv8$VKTc};D~vx1Ecxwz_uf^4_2@$eymO&?g+cYh@cHqMut4whI&*)gR|@={ z|6V$v=ZCv@03#6(;%ry%oRda2*!+pzQE{Vee%tyLFBPu$pHJz{rqEVWG0+PUIYE7o9N3_?Ks1iXP8?RdPT&JtT#X0N^eCLj*yvr7k_Fa+ z*Clm3bS|rd6w^)ueqp)}U*jVgoUJ|;7s-1$f(A383i_FJOSoBUCBZnY()>aZ?Fgv& z+PRUA16)H;ZGeHOgBRCnF7l0nhX2X#6_EcEY)s{RG}Rx|y4I}1kr>WD^L!{N#LBFd zD%bu#)acOuJ72oT47p`@$9+fJ?I+%}##P5{pl;|+ym6h8`X+v;F|lTq{(0T8xvoMX z*Ysc)tfCwe*XZAnD_7C&)M2-9-$p(V4@yju1;JHj1L3%nNkv>wc3@}ZG1j??*@+;Z zdsibruIpl4eLFfnPaRRH()Nvv_@XdNsM3tcKNeKKH^@9c7B~1eFHb!v0+F zH&rx%y^IH9PsB-v?5>wq{k}OC3>6x-GE8tR2CwtHsWC+1G+QYbzi58_awHutvw!CK zNBNJmLXMqK;edE9R02i~08jvHDoNg)39bvo)#90%U8)e2{LN>9KXGH@6le($Q4eSW z5RDF^K}5s=i*w{fF~D~f0H|`1r9a}7S{y4cDs#T?{{K;{eOKlz8mGRMYIx~ZY@PR& z$Y!kX4+^bP?rjf>e+j=!RkYJA%SlJ9&=igfCb)b|ihP8~wH}e0OzF-Cql_;Kl9EblxqUD9?SI$5Y~bL%m&Fcx^n#^@|TPm<%YJB3>tSu={0Fp{d^}lNzd3 z_?fU;OW!aq{rMrnGj09EU2T!e3!muKtY@X`Zno&a2jzuSX@uPwa+`Dm76z~UE8EoxsR-pu(r~kTt4#?K(`BL_eu+vku^T;Iy|9m=b$zw-2Lc-sY=beM)C)9 zmEd+d?&Eu^8C)-PVcJ(O=PCJj0X`- z%t|fOfEP3MZug^^dF3wJhQcL@Db!`!{7<@vQQG`3x`(T^_$Cc!o+}WfwDgVQEpFN(Qe!K=LA@^11A$}7QJbN@|HZ4e>@kfa8 zMUjX2;GHt#4ae;~+GYY=(+)5n`<@%))M!b1=uPdN+zUp*CxK)jznz%L0CiJia{{;q z7kACym(0j^Io}^!VQ$q3lir=QPMr;(&8Hiy1IwKihc;DWyGy*7W zU_zRajxYM=5*o`J1{>0M#}UL`APocpPXHRWS(0=KVjzMwEMgma)foZ6o`#uab2MZ* z`wdU<&)Zn2J?HHcOJN&pmb||tv2(A;$c%+7Wnmk;h$BeD-1L{g$~*pD>)9DAIvI5z zQXvaq{eW2Tw%IB%t&1<}q)V1w=(H30N8QmmlU5A7)cPNN=xH>6#K~t%E{64*PG(xE zY;h87*%lY8U$+ni224Gj(tp>F2Zk)>8D=s32Vn*!A_=UgxFCwG(4E-f0oBMq9J4r( zu=}KK!-FpIyXr}~{#T#OZSJ68<~xY_3PQ<6@e`tY`iJsxQKU}PtatHAE_VToCZhO4 z9KYbe1c}R{4slWCv?x48Jg~}IHs1w@Z-npv;+{2l+Zwm>rYdXzK&<}1<$;Vrv|@JS6dYyIVG6FnGD=K@KIT&@8K($kP6 z%_(bruav=l5fuL+<=_0W-!+_z;!Q*shG;cm^~idcd3#{@(pK*=^(7gGs#%p?Ta%`r zbH9l5O|>csp*Geyk_|=~XIg%5>{elcr>g9DQ>~k7Vfd;zwncFL#!11N!mw3u3mIKg zf)&;MYs|IP1#=i?k zW~|{{0xv^~-jthl)d$u^mIK%8VE!F=E_Iz;*?4F>B8^+rb%J6Qq^hqh_F8VZhKOz! zY!+NWc=MpX1+hHFSQ~}K6q~AZdeo8mXyP^$~doF5Fd*>ksM{;e%2 zqWKtmem+uMC&@DO$~tZ#6{o2LuXb@Ij_kr0y_5HC{g@Tk1nvj(1zIyYW!RCBp>bky z&V}fB^e4>RdPByQMH$1rA@%Eb)3gDbeJfB8=IYIgGd+B8)0VqbhiSN4N7%Mf-3xR_ z3YP>6Ph?;i%U(0N>rv4JkZaC{rcup&4WlTV!QUaBw7VO+2{zcIKUz%8Cum9)<`l9A zU)bEJBUgH+)E#zBE3YOb@?M3R{}7N1N~xD!pebf6uaq?iOtNUel1|z`$uFpS9I6k` zV{k)7>GntdwDDv9ZOzMCl)9~E$_I_dOg+On3PFW&Bn47y zD9STz%82yGh~4Cy(?5uf0G?$GTw@uCyQoQ&lMtuSVVGkem~Q7Pe#5Z+KRtF`4HWVNz}RS zP>qH68>GUBa~;tnf*5hpxsI6BA8Ms(&SZxBlaKpi6mXj5_coX6z#0FJF~MIhT#BfD z0S!UiSpQY+`}$$A)9Zqo;xO-62cO;WYPVS{m0aLHLi9yxTkPK{Ikh!i@jgYT6Rs9G z;y`x@4L=3Q4d6FgR3ARo@>rAw|AQfc|96%8VB7gu@!>z@z=%Ts>K6M2UzMm8d38o= z#6Y<1VI5KoesE^0sN`8^farKs9onvhX~C>0w{$OF++4!S@}FGkknb9tNiEgoQbamY zl;G2z#o+W6sYE&X&%YXa{2W6?JG}1#ND0%en6l_lhrCxNXvTuGdP~=kX=Vk|%*~== zm~1f(MP;DlV(N;R5J>!AInqP8)&Jy32ZVX>4wbS+3pyfZ0NGBxhED~uPKNe0c$Z2! zb>Si$0+qFHXn7%H5*j(DDq9%O0|}rWSlb$4`Umov z=PAYFZ}gEw;O@%L0D_)eVbP$ zi`X!L!iiQ+o}F1YSB!wh5Q-T1=KtMO;@{lzKuSIjJW=MhK zmpQ*j$G9qCv;vV^m@B(LnN0eKh%{yGu zCI!be2dy|_kJ6@L7V?_ZKWsprxWAKjFINZMX#j8apSO~ z_Wdv2j(gE(IVl(we`E6VqwIBL`)e6D$pP6;+N7r_QqD+#A(~rCPQk#6 zB2y!zN6T-L3EBHgG@m85{HBXm=a|7VyrG>;?^YWVA8cpx$<^8cIndwK z2*Ts^N;p%um-o5AiwhXl3b;lr;QdjyxiFm2uT3-=wgP_IV8N4*{_iyH811V;Dc3@Y zG0wEQ!uepS_xb?%is9CJm%Prn04(|I96!xzejT2NH>klO+3xVJbam%)U=9?3BvWJ^ zMbk-=EO}6TyMC3=&29EdrJIV+Az%;3PEF=|om;Y(>Aa+Z8DUz|?F1>XdpX*k*OAaH zd9x4u{*6@thV^FO=P_(I3>M04U2w&=n1i@_+hUIuQae@C;Of9fPA_NJ@i=A^^SWB_ ztpXf-rntnz@GE%?@#P!jW(?)(Tk3M$Xb2Zz3!4*^1@6I)(7k3s(W{V26^!%t;hrN; z@RH~MMikL$+3DAQNFxmLMtfk!ap3b!E!IhlS*zZL;Aor0Z-yMgzYmoCIbd6@lT>Dm zj0Ssi1CZ%zryg4nbYHL(E{4t)JAIuMJ{bqbv-(32&vTMa2{230R@zLo3mK*Z3`)zNR zy1;2(w+nBQitG`~ro^W9OM#Fr{eIO!L-!iw&m~s8t zgX|}EUst75b*kU4W6z-Qc&%fwOO#bGW(n>mR61rY)OIu8pG9$lHk9F1sx~rmK3$HH z3hMqny7>6AJ{t0N9XWd&2GcM|(Rxva^jqL)`FEPSEA(W}Sr|hZckFHPmqD7H|Dea4 zy!rQr(=dW!DzyAoS`fu6!C&(TBrA7}&%X*Z;Th%+#xLz&Er#xCEFQ#ZHDFHfd1r~- zFZBZ>D~xpV2j}8H1{pp62#C@e)vWO9ep{mw{5(q6SQ$P%43GB6=+c{2vo@e8!RF7; zmT#d(G(Z_Nsz^^&I|!J`Iz4;GvO0NI)m40ulXvWm%nCcWbx|E_ST;A3v6s3Iu2!@I z&11nht2w*)luir#-Za4l!$b`;s=5wtdtXfSUYL7e-daU4G5Wdup0jiceH~#lcbCKZ ztZ)?2QXf&Kn^tXQsIk2#v)_Vf{)l?b^M)XYlj`()emiY9R7uCp*i=2EHgJoet!T>o ztlTT-K2VW9YB#GEvDZwtV}5oaQRv4u)T-<_pjs{$c5i>d^RNf20x*Nd2jM30{HQl3 zH{Gknj}~KJ7$4kgWOJm((P6YN>7xPWaKnMVn_7io*E|$(g<(BtJPbN^Vx{mQs+m_s zTAb+jVOLVBLUUie!=OE4TW81Q$n>s_7l1ycM$-?D$Ube*ml6v%6^BF{2y3pNK9Vax ztW-InmDjz!YWEG7DAwo(1>zg?zvny(xyjeT8fU2)3zmjyJT~ zPxPj^4@}cOhc)|poO1JwRPYSkK8)ReGVH=%bM{Mm133KT2*_PYr} z&yXpHIl~9)2Y*lrj#dwe^6~!Yr}gxfyicHUdguZBc^~~;7o)ZjQsrpoc4K__2k1Ls{6tHUPQ?9;ZD%$FOzSGvO4I{c)% zoY7sM={;;VH0^TQ1y{=GHk40JUzV~va_fya%;5fm5&!mtfG1|=;~e1AwQXT&=e?8- z3NAW2GLT%^R>{@tFQIJa-#-)8B;y);347* zZ)4tr_`$ViM>wu>*TR`?tM5S&{0}kTlU~5!|DBeJlgxIvbkue8f<_dh88RslQV*^r|X%RUdo` z+UyxSYk(jQa1ZKXIE&!3;500okGjQB{#f_d+-2^sQO;Mt4BL+Q8a+c0%3XjB&jDL* zOv9d2LopJ4q$Q+c$DXkZoy|TEG`!NYd!D&emBIhWq76>fEoDVzxY4#YB&uiVf$RJ%$FLi)VAyJn24=vx9Da#`8?ng3|rsJ=8NHu3;AH%pmxxt_l2f+*c82j z^;yd7x#pf18g|&LM@P>S2epKv-BCfF-Iz!->HumIqF1Vi_DrUuZrF8DVX$u)r(qtk z9q91%<39w<5k=u^S6p^p^Zzn?_N8S>A zko%)(awRi~Dj**pmrrCtE8qGev8mRH!|b|AzEX5=EY3BJu#24&};tC^ERR zZI?o?LV^6;p=dM1lFs)R6>j1Fih7dff_~z9GFQ_@=a`w{LK!-g#6+m= zdmXkSSu!s&pPY6bzHBp98uCbYIfIhZrtErGrcE(HzD?sz43prN=fa9?r@HhbU*LYR zf6t6O7*|suZ})+6p!R0*(b}7TC+>m?NcEroxHhO$shWVPeyUaHh4Aq&698)1N3joR zgDrpm1MgN^8Uf5Kec%>X-?$uKO+eu|zD$Owru6i-TEf?bXZa4u@1UZro!~J|$Q)4f zITEc<-^%qWa3g?KxDQTv4lF`4ubwu$2DZ>qww%Zx24dAdTSSB|b*Ls!ldg$v8#xdc zP5>h)J0a+7z{j3sZydneDAklv~+OS>_s#gC9B#*yE>mv8JlX1hc{v*cAop$D? zRdPU~NO-|r18>bO0SqLkTN{J2QGpCW*Y&eQcQ*{t>uPdSHE#ExgequX8|O|A6|t@%;^*u6p_mK_k3Gpb>el>g z1B}ZRc{_I_tN-bnLXh@#OssP(Iq>4s$Jix0J?3gGCHiWX$0~)iK%X}r2XQ@ACEA6u z*qu6r>{FND)LWFlDZcrZVjVET*3*e-kSw_jnqD95LGwof<-EmnW^K;>mP7c3sxKp zJ72mnczt)vF~G)@31Cun56CATt~?$$7w(O2HIzw%tWQAK(&}?#efRt_00sCqf4|L< zu3sGhHnB1LXp2o)TQ9w)CM31jgKZuh!C5m&M!Cm0Gpo&bWlq{e;(?|a1h4u+NFJTH zTIhKPEM+Q;aX9S-k%V4 zP$4Ov*T7h6+^_;BWsGbB3nPOJW<9nWJqg{R5^DTo1`^0X1x2_)gK~eUv9!L4*J-zF zEZeMH*h}t+lVuslsjzl>T`9LK}JmNHYOW-98W5;yP5`Zh& zW?>7^(&=B&ed?7_XpaUP=-CV|#J}8J(m4-@hWx0>tj64LH^3OfNw8koCQY{?G!@7Z zz}?OPoe-g@^9VbU>%j(6v_}%$1I|1{?Jv>jiks&&n}%YAXMAadCAia_Rxppat>zn)X1D;QM7K?)U<<(s zYseldP8RTmDr`tH$jDquOyH@0YYnzi&fRv|NY=FHAPJo#HMm}L6-yoCS^Ygx+9Q9g#Vu5HA`7LfS^VNLS`Gt z%opDY^MD$aukQvbZiRWslp3jh1jLMj)xdWnRSkqLL$-yzK{XPvCtQxOJ!+`neFm*E zQYG)NI9eU6)EL46SUD<&?$da(LUy!fs6{9j_gOxkFl9RP()Yfl-!(8s14U%}=%DUo zh5$_1eetRH4f|53az-8Y<^sB4@h$UfOR#IAs@tb>U{09>6it)aWpf9ke?&T<{W&m1 z*tr|Qjz#z?OiBxq8?QV+F#qhiwjHW1nC{uwoa3sBG!akqx>kxMUb$t82T}W8UChgB z&l>)1AVfCmw8yu1IVgIgPH6PH`X?j)INpeC)OnAcKuSAzxeX|o1Ypy$50gXPWGP0v z$>FJh%txQi%*C$3WgA2hAZJ7l8!7-?+Carf0MHkkCNyKi&{!Z2A`75Z57n#ZLy}7n ztUvohWxrMrsD{=30nsKfRD+Obs!X;jsJTk+DqG;on?7HJuI$xJMWm>tyo5^V1A}WQSR3!>i79 zY=*Gs_rK@G$3S5UD~!?obXNjsMB6}TN_Yo7jOs&v)J1n!@{T8^+F$#H%s}zwH)FP6 zCnY7LR9e+t&qpD*7*of@7j%~eNK3}_ga@5#Tw}NSjezr!x|w^|>h*hnXc2B)!FClK zbp|@cNPsbQ%v-TQliW8}%G8n~`Tv zCTiH#T#y(AA zMo&WxT2<66oLb?kr&i}>40%N^@if?VGM_EaGV)69S|feqOPL)qJ#;GPetQ+W2KHAy zi~V39_aOQ_OeqlgSX7t{ZFA;PKyM9c%S%nEp8*m3>_Onw{^!dA8aCKSg|&#J4YxKa z$>nmsBWc0sg)rKH5E#5E@U3lA_4!d-==FZX3cCZeW`PKV%rE;Kt_sI?E(1PwAu6;US%#a_{9_x!3yV!WhUc1$G zV3s&`xiQ3Eo75e;GVMe3q+UBy?-kbiMdgEI=IR_&?o|r;@#Vx0nmotE>y#qlbK`2{ z;6V0duyDw@y#i{ETnbtIYtU6EqR`mA{?d~VAlw<3HT-Y-!KUXBL;!P0A|h{&`pcb>qVFlfSeFG z3<6|ASTDd9LP$)k|8k4(FpNO3|FdQISHcT)h`g?wTCpJj8#^9ycR$%0dYVnyf1lq1 zWny2aakYAwyQ!ALAl>^rHGB~l{+$!PyHmPaZWM>mB^I#~|FqiXZL9iz=I)g;>r12lO`XrSPo3#qkR?5}%xOyUt*0G>ua6n~nm$>qYn^%I-ud+u zd%n(%Mx3hDh!37po@pDI@Vl%tCgCAjShZ&`UMAl~Ua)Nn=y&RbZK?5HmJ>3&m8!;X z-{8_wsqy&CE_LaS&S7l(!7+MJ_rV2?RinGrYMv!TfqFjMEREj$dTg0L2;Hv>#)L8A zl`}R7KpY!|Q@3g1eT4SpZGy~NpQC$15tkN3Ep(2+kl$k??jaJl5G{e;;b@Dr9HNi6 zq44~ALNvf31(8Q@PW0q&<|5Pa`Hz3kKV15?=!@O+Me3tYmFPrIZWg1ctWJexsxh$J z8+jbw5IT#MW*m`>6@*SMn};j9_D=hTJ@>NfYl)-U{!d?R1Ki~P{HcT;v+L}pWM=_* zv45+b-sjX*>9BLo^)pJ_r7O zL%2O8-*PKwKh2N;JfFn|#o=6@6V>HQ=)CtWm)2I-FIQtKwV{JeaRKJ>G2{14*^MDq zCB*X=t7%4$LUjuD*r8~c=C~lG5E@Il_=rhY32f%y+QK9ns}ZZQHX#5N>_|BT!FvhD zYAknpDJxbAy?c14kuvQ}@}v?!9yL^nG4@VwVR*G| zDe&q@X?SfL)h9SQTBq(5Jqa7U_L==ggQ1^>UzNb9aRjg>n=-qeG|Ag8*dA2h&wx(! zr|d7py%!EVxTL13;Qw^NLcdU}(nrs2Pn!RuIZgYhe6tOC727P8is8edb54@Enwz}H zB@u0kx>Ud32cg?DwRD)vbNb>WkO5;ooTdRdd%l=G zTVwR!n0xQArqiumcx#5fY<@0S`rvRN)n%N}{gDCy7;{UQJeZzDAYq0GqK*)ptZ%-eh*7zPwa zg05h!D^8;Rfv;VeaqBl~8FSg(OP)jv$CRo*UKUVWR!)QbV@WdY8!s$5@dV`pNZi8k zFrsaX=$=%3Rhr8~#7~yB@J$ga7BOlG=rZ#1@x-&jm$@SFie29b_j z*69QV$z|!We~JPATjv<^RcGwK$aMZqats_}c=TasLL8lTpu)xj2OY#7XIa$`k=FdLvmaoVv#h0w znB{=L2O?zc2wIxUW;x4Rn*ZzRj{j3MRz$88(J4g)`#=zJSsrZ3Adrhjk>y~y~O<6N-}DJ`M% zXv?LPDy4~rso=&ve6 zuQq!HSV#dyJ@c$eU5TH^Q>a<}fc9!kSG zRKJFb#V7OE5I&51Z zKb~VW&v8`}PGhQFLZVPAMkWbCjJ|lD>=Nf@d7e~)PWOAx{DX#=%0joEy6iUXioW4| z(MAd|h^p?=t_x0Pt5H3HMP240hk)@hNh1HZ@4PPjvlz1gF_pAlJ~zn>9azjsuU$tu2=8ZL}) zi@;!YQZ}PJ&hYyC=y6+_sqleWLB!F-9!bh>?=||LP zc$q^0UH{v4-fM8aOM6ymA+4P8MIVy8`?3O1h%LrRO6jv#tKE~bQ*(Z9n2}=tAYl}z zj_t}CaH{S6IU&<-zy%WEmCReRGqE<_CkUC>WBBMOT@>+PY$Roj?DGwbFNa zevuJRFpLSo8tcnn%cL5mIZ2ln{BG~Pb#eY;U@BXk;Yv+eMF-BCI~k5 z(v|AEOy_A|OXq)x%mH`W*HOPJ`b-punIG_&T*7xF6C-N3Ii5{@KxKRPvN0L4YH~I+ zGDXMT-c_s;F_gMa?nx4QO^OkG|CmjqY5=OE|5KUXIy)aDPVnZmiqL?=t6CjNyq%Rz zwovK<*QYVaS||0{T$B|qRbBysP5~YN<@A%YJzLcoZXa&(YzzISF#u4*4s_g6cElqw zSW^FNE{rrZ1|=XW6wS@01(_N?UXnf|>%bDOn6F}p?o?syMZZxwl<0k3dp~=J&l{Do zUKJF@rsvX4RJqN;mOD-Z+fQoH^U+$*hFvlG^Tla|%5`?(j@YJRgStwao~=<%ecS(7 zSJmeqq%KMeN zbrAyc_sP%lcOB1+3TVZ8>6)awg91#Toy;ly1u&*B%2URta0meOz=6#N_xO#bA5!Nku@Ak z99j-v6c~`T?CO;DN+b2&lU!Rv-RD)>(h7TxZ*0s`utZ8q1p0ibN!;ZAN9?mG(=D!P z8WZdxbw-!TtJy^!!@$1EFOEb^Kev+*{3}&O2Fa0za!|*XXXzQwFkV15~;H@ ztRG-NZXz=fFqF@`Gt-(=7PT8=NT=D}l^@>zY}a#>$Zra*?Dd88)p!m(8T@BJNDOx= z!L+7Thif|jCOs_+z>u6KKqwmF%LmRwlcI56Zb5V&e5GS&*X9tfU&8bcmoIDn0gXN@ zTi$2yfwA(HsFS7h>s)h3F^NcDPOq0vi}RZYGGTUO(7ouBxi*-A=<#zTqt=DA_QBeB zZMWc0dMyC|%uXH><8q=E*97z(N?%Dj-Rv#NcR={YUhgkPK8?BT&ffGFLE15T=j#}R z(mr{YraE~oje2_Wd2u?loM0pyF|7Na6FNN_$ZKWYZm&E)4r^fM%RK?9t;$G;Fxo)K_DRx?x^Bd1c>kwl ztbUzf8oIiCZH1~x1y71wXkQm2N57Xg)1tX*djDu@3_E=;e}x}-63)wCN4Qj0eYv2Z z-wXuvgKty6u@6k`sJH#VVsL1`Y$|c#MSgkL<8M5Kh7f}lj(gcsNTa83a2PC8ns-x< z_}y)jtN_n4z7MKNQ_iMEv-*1Q5s%Nol3M$~3YBTcRTW}p25A-mR@mL0T#P*^TH zB1&%*nz=pu)984MC?_H7XM--gdri;Ic1cL!wwHEWVa~97PLDM=zR3>w{q!I9##>8} z2Ir*5@FWg8MHvwW+M9ZdciH0jtGIcupEc<^<_&knkF3qlaUH z-d+y%P%PB}q2rwCpY<+8A0$FKod(Ra>P(0SB4F6Vb3r5?L795lxDZSu5$_fgFn>fe zXTZnM1Y94N{X>93fw(??w|fM3PbVk^AX@Uvb|T9P!QV|Dzq^anT83?$H&L)b`s`(e z-EE@;aZ&Yoyq$6Nb=B}a0x)5Mz*+JpqB>y#Myadk(hkY8c%%9pfvjIfDz(J4H<;FE zU}uNxz3_A+a)tzW?a-;tA@+tOCIoL%-C%?3U3jw+?-e1NRc&&AMMqn3g<(L;%+HE2 z_}n~5iSB(K9Sh1+c|!}sUqvTDB4Mq3oT=v{6L0bD)U`E<5o5|z+?hwsU@O=A+~w8t z05Z)iE%)asu-YpX!SM1BOV&i>4GfZ&0hy`CAfizZzj^{_O*#A@r|#&+%GAGq?Q0`f zlX$KWq=tH*v!}sTrY3PutyaM3%%2ykLt?`P)uP#RrIGfAz0Y2Uf8fuEW?LObNUZ8a zU@K8yYHevc`E=;|LS`B({K8uClGp2d@lu>u9~U$w2hMi_!fkdg=9=%@KhIkjhW!<@ zL3Ca<<G06o?JRLNIw3d>faI`PV9c?*CAcUx1k9fd=uiOCF-2^Z&8J-(zU> z`MA?{kFBSh?tFUUa~%wXPx#t=ZPNc#d*1DbB_V>pv-~w=Y|8Ik>|XbOv%*+IXP_BL z%p@k0z{p~zF^m3bPRUFq6gjlfnHzzLMXh5hG9PMNWfnHI4WOmyOt5;aTj@iQ&Hs_9 zOkl`TY?=EA#aa2gnd$^4FtnJ4gwj%LcV-dS6|tWz1r<`58beFa3;+L+d3;!muABH1 z#au}Lpvs8c+NA$B=*VWtTX&qc3AL#!lXl;5cjB&IF*2@#@;F!C_DThXB5apK1zcr# zaDB|_Y`GZB0hE|;o96bUkc$(|VNdhSS|(qQ&fbsk8+?6_&({WHk~=^xZ3mMMQ1v|w zp0R=QvU^~Lhz^Pok>HE)Njb0I?qZ-y77ChRw;{H-gHA-9be{&azV1S!uN{=eVS+~o z#@ucJ-`pNtbPE8rYlq5T{qjoZ&1>k8+Drik5VOH#w@I2}CXDDD1{DMPNI;$5s^(iT zKhzFwHBkC>0Aw&wJ4*xb_yT7vI^OAUR{Ed=1kC~fp&ld3gyWTQVdI&tvv#UBy?Ut)f9N-!W@qV7#-XNtHgF_ ze2sts=M>l*0BE-hG<@kWz0(dEkNQ;=XGt4+R6tIpVo4@Ii0vS)J_073Q{Z$UxM5%q zULb+G0!?Vc6@VFLr9{YGPzP)Wiz@YmQ_k`YbbG8icn=hS;&`RF=ng1kwSz5)AbG|f z<}d@z1Ui5i6u@-*6c}2;SiBmjv1e>WDZ5h8Bb$wO0p@V~iOoBEun8G4p30d5z`^Kh z+F|f<8iDbkDVWM10a!3{gTh@H6FLGOP;>%TOAX@;)|n3AXixydgzW%6jKH9L(=cL3Mh0x;KXKQXK`0v-4%@VX7Ztzjtr=a-3r8K290xf{ZeRUo%ORoYs4Vi_hCS40J0E$E;Ot^!2 ztUW+?BQVVuxu(t%#`PQ^X)6S**ym;`2~r(r5RV~T6C4J_PF;GyJ{ol#oMVpwa96lW zxD&{ibSN7-Wuh`ZVV+$#rbd_= z;{ezo9YRDq*qRh>5~_l|GyNhXFA~PpVJ=SxKs`EC4ej6_RJd8n-iC2l_VSO1!9A$p zNVw1J*f9br@Dzxaz@#0@AfGLF}-F zBne>rc2F-J0U?qp0O?{@nkYm5LV}6Ec5o5My6Itg0{jt z?}(>^@9Y%#S_AB^3EjurzBXm{aPAiX4Yg8UD-$4h2k=2C09BOAttBKF#I}e2bU`>) z+cjS-P|8ycraLm+XuNjt4;q1kcnZ9%J+E~g2FVIKVD0VTU_GKbb-QwV2^oqM2hgJ^ zSeJAdBS{9}za3Okz_Ru*^f>7-Tip(3)`6-56v){XfPHP{nvmN-t!@Wx6hT_G14vgC z>_|FtRx%Tfp;xXF-2zR!cIbW!Qi%=#1_tT~G=RKX0Iko+9~5rEC|*0*D2#yN?i9G1 z*ymrz#xo1R(RKc!h|&f7!Fxd0T^+QIM#hI{S7e|kjENNeHB*IVE;U=JqM1)#0g z4k+O(o6`O>wftilanCmoJit!YK0efs8MKL4*FUl_=(h#!=63Z0{7>H|Jop z57Vp|M@7$2_nn&`N@S?mTlsqkD}I1%)EU?OwBbpL?=if7oX==G#$G~WLS)C?Pi1%*X8HltOy)zt^=N*#Hd1%^dx5&gdF03Tc zv!tn)9tyNfys>m^ywa661pc99>MyK=OgEh){pbin z#P0;Jyeg*>K?Zb8f_i_wf3t-dGC2_3X|68^?|RQ|**;rFISXc(efMLkS@NW!sv+g$ zA-!vLgg(8c0}%g$dNH-&A>mtU6Gxi1Atm20DLj5}%Bnk10&$M1FhduIL{PzUGVfYj ziRXMsz+rp+ylT0macuJ+H}2$?sB#bE&r#Yu=Rv@V@1f@wq?GtVT`v8CCtGO^X-(T{ zS$bpJ20REwm4t0a^Dyfv$f{b8cV&3S?Y`~R>sJ)9+iu`!^BL^<2Ru#78kF31ltj*i zi>lcU3BwLQK$xeF_OcLO(z&(B+Fr@I${0J^+p-sJ)-m|gnx)rVi9bs^*x~0R#dK@l zWlxA}Y&(m8ntxX~AUWs7H+#veKIp%%td*s?Z6Fsf`gCg#J?r>SF_>~f#?E&*qiV)c z+>ZEGR*7#?MlQZ$T5XEOa_4IJ^9>i!)Sjoq)b7rq{gq>yy}bhg@hmdKyB?c=n3tDHe0>u9|P%6+SB15+N+-O$Wc;k0F{gg*%0sG+Xo+`m0XZ z#4~Z%lUyrSuMzUkZlXHlm9cKEGdd}pQU0MK^V>1iH5kdFhY@SkDxaXSCBAoFx(;^w zrwhGcz>583`rfthQLpAh{e@+XwpfpM>5MR_ZbX~G@@s<<}P0Oik*?3D|+Hn@zu6;|HBorz2+4g2MivS zv{>c-XprlReRH|uLuTg(`}Lm+bCk$Tzjfro%)LnrAIT6b+cDrSA=EZouIDV6YomJ; zP7$Q-jOBXT-oz92AMxwtL~hL{0b#4;`r?N3SvnZYAcmzK31YikPyLHc!)x)2R%XoB z)5Cl4W;EfC#AAEf$|S}PFD7{NB4ziF$_j6b;}2ABd2Lb4`Q&ucs<&6AKPaH$AL%P4 zMEhV{ljFG^!U37e0!rWdL+QQ&0rP*Vpk12b+8}(%3O**&tgTXIm~gLmXO8qUr5|pY z?>^kR+li>k&K<~qV{1?s{j%d_wIEqcZbX=nB*!n;vbbVfJ+l+-y4`Yu*%up-I(I?I zMs|dmj@(x)FH}kJ?qv%Z3QZPdpfR&sT{Rq3+++Lo{NBlB@5dy*AS#UA_$24WUfEev zKFwE%mhHuSq&|B=3{K|$Fde?F&ZZuOHL($U>s76H zYE5@4+2Cab+DH1W)}$$!bK8v^`26AED$sgRFG@#^Xu%u~oDZ@D5kUPLvL`|J2rq+D zwTe*07qvpa-ZVSEsY(mvL`WdcOscZhBKzD7cbPwjAuN7!Drar&Z{nUd6Fbu*BW;~t zIQU`s<_6Y5|sTVuym`Qh)od*@Aee<^?}6PbH&ED7D0M` z6SVaG!Q-ViO8z}nQmJUa^kRbySm*__MzyUoELeV9wr}QrOi8q}( zhWYQv2#Ko+`g~q-Vhe>?my{1YFO@yEo73qt21mz;cck`c@4H8X9V)oc$;sd*&z<&l ztr;kHoTBjO+#Cf3%oEnie#6$TahuZpL!ehRr8A{7vNG}tDV|jT1e^A!ZBOZo`HP2P zET#YyI@;CbpE^X&(0*4lLc?zJUe2_i^Yc!N2+B$IMpp?#!#pjl9cZ!WH0HYV>?Fd+ zwosG_1;o_0Xu>(uIrlW5yE^7Lj<&V*Ko5E0ROH#T=HFms-H`YNq1E^pa9YYgWM0b} z>UkV`CEQhaQ`F1yp-T#wi)lHV)-bXOM7uunwD~G>UrH#C_%#5xZq~Pg;uEsuIa&89S8=$ocA=2h_FM zJ+uZZ1{SxDtS(Lq$4dpcZj&1YjUUhF0NwG8hvTZ|e~8N;vy#MYw<+IE{48l_%p1}s zIW?oFPH$spC|Q{mwt@@;6PL>5Ic!~Ejva_}79E3N8X+_E93S)cijlWpeWZ0CDay`- zG;JNvN#f==v09>zb$$`3EG1%uA-ffLi>V$wF>(H2R%wC+C=Tms;(LGH3R z-(oSqK|A&DXA7(`@AvzRIz`#bsH?TM8&k19a^g2_+e{Q&5?|!A5#1$g&t1)XEVr~19Yy;N-LQAny*_xL>TI-_Rsi9% z34q|d3$iACowg$~Qz$IHM@eJrdM(wD7^SbmwSw8YsqI9!MCi3-#194LrU3Lac zjr+yyjz7hevAgLPQzaeO``Y*R!IURKeq}n~*V(OzFfyAk*b>oEY5_sf?hF>Rp^W+(PW_a1751EOF+ylZe6oC}w zJ!yP)@tt#PxE-1;o?7>;%TzX%{mk~~LsOa21aCid z)t=|Dbne8s@)4)T+6@h)2F!c0Sm|=Hr64T2KbV4xsLx0|)ExCy`9y@Ag_)RMjc5aP zKW_u==ZIb!J)o8aXou%>ITTeh>6B16jhWqh_PC0BoRL;f%XUa*V#P=4YlUr=>E{`l ztRkn0?R5$HqvUBjSei~}#bY<6)SPWPN=3 z@OAowfb<8{%dDN~Ad36yHakuiwMx*N-nNIM5^#+Lg#bRA>xS=jI*OB5^9*>BPbe|D zd68%O1-z!&h$i$Ti120YX*-fSu0HjU_4HPe@BIw<-i#P)bDUO5t2l<}P`@z&2^-Pa zj$|<}fo#%JfOZ*NdOL!4-!gFuD`V!qVT!L?vpZL;Bu)(-7C7X$23e?(`3eeyrR^&# zgN{ovLj${S?Fx78sJ(NxcE84g!_W6n^Y$jHmbLCelYsu(_OxH5rO+Cd4emnEG~}pV zSq0-Og@dOm`|V?MClAF~hU#nR2H;;B! zl5@^BJ59R9JV+1s8tGH$EG3tenF#Z#JF$#sq= ze^${pjM?YKcue+Nfn2(^hVk*AZbveX!=2zupOJJ%AgZXc|46Xw95m#*`a;;d!anFN@%Nl># z;hFvj$>q2?Ohb8zu#k!LRCAhV?>^bo3(OI_71Kyor<;;dI0#;w^M4w7QeXnKkO=mm zUcK@c#OvwB^5mjSG0DJ^?k?_&E@JQjN{;7q?MnChF{`Cq9k;c%L=>IYk-#1_s0*@< z67Ere;fS|aeYZV;pmv~w-D%Ti6PF7GbPgs$q$AHI67K;8XnU|_!~Ke4w*LmYq% zK~K)b!S(9u@}PbLB>A3mix}B!L>)sJ z30~wP1ZOO9gX`!GwcEY66a32N@YaB!xGu}8UO`2!E~c-#degL1J@ON?3NL}7RnHv# zbss07$an>b-!=HV;qVELwmB|D^tgVrPl2h9EuRT_Zm%#VL7*N4sf=pZifB?a=A>6P z+lFzFyk?a5#a&Fdw#0-mkI64db=XWMcv*sVb1if&t2b*oSMSgY4LZG`8FLIq1+7&- z9zwfpx7Des`tViEv#YDr0X!b2YvD$3pBFE2)&a1y3SWe=#z}^7%NHa=T&pGGD8zk| z9kGBbSw$_V3DYsqmpw|ZJh85NHK+Q^!?UG)0Zz}&qcJGwUK zW!2FBdnjXf-PHr=CaZcf)TaHciQ1vAFG}_qz3w=(PMz)-lSWuZ@jAzsRa$I0q}VC& zX8SqXZYmsv0Y~12)h2g>KFFBUnKG8*u9Kk4PB6W;T^*+I`-OGaIh8dhk>eH;+db*V zHxBh#OeQJRoeex@VZ{y!7vi2z>XS4ijx~2wtgJL2^}3PkHnYLAz;`=M zEgBXvp7U%NU-E}kgj9#V~Uq{aS0jM*cnAK?FizZs8evgUK3sxmg|Fc%59%uoS(`s~Y{tMU z+-VPQECn@EwX3!?#qD(H>wT@w`;*2|ZQ3JFU;-RA_i>;|b$Z|~U0o#~K|#(TzY zL5GGlQdZ9jdNqnK>bdBH{`xUYw3o0mb_CH`Qa~Am0(8iba-?;= zyp3HI9$dD`3RX+GMXb+VsVk+}irItH{AfByx=dk&Fh_W>I#N zCfsNcd*`L-C)J6_GrNokw$ucL>3iEq6wPh;bCvwN*RqI}(R~~ACm824Fr|V4<>PkQ zYkVVJ?XvyrF%xM9x$d-}%9)@oYH<%c)=rNEd}x=R=E(x}L_zeIPhx^PdmE-*)l5Eh zB)~30Q?_Ut7@S6eUqE4_v+0bU&HMo=lb*J;9xJ5ue-P-UXpF`J&7`dgqP|AhBM&;%o9G4UZ8F0t$L8K_ zWAa}4MSrW9BGUBOu;SzQN?QryjN)+L8K!6e&uul#HKy5l_<+6$B0k+?N(HYQ}>Ik zc4&>BvBMjpyXVkO5L_Dc>dscy+%@@e%<2R|0_H{Z>P{eKU8KkSXN5UmJ~&2r5hWKG zV>_5`8P>0k8K|by?sAS%Is`3d+&o!2qy?rqE%LM$BirHoEnQ8u!;f3$Qp7pJVBJra zkw^T!=7IcM)npq_a9@HKW{pOrHtQ8um?%2henzu5IUWhLYG$t*rnJPQT~_Rp1v+^_ zByOQIVznf*mR6oKz?J-3+*g(TcS= z%{4*Mic1Huxjs8zn^Q*(6~IYMd!3v#DMGtmO&IEZco;YZvqX{1P1~YAz{f^m?0&HK z7g!$H2+-^cURh`SZZLThlCSR`?A3i8%ZyM3_UKb57C^6#uPewau(DV#iJ9XR~u zz7T&<7V}d?;4WF*PmMF$dY=3pdJq1gm=4NNLgdOt_b>03?0NYvbzJ+AZe!v~g0yvq zSTG4zc41~?+crTj@B`Km&mB}~?j*KYR)~+uXI~pE%yh;weJuk5ub3!8KhJ&UM^A{f znA+-!l_gz@^+4+Hn;%w9ZTFN^e-y1?!{#+9Mn3w-xb0JG9_P+W$0|9e$%S9F->5~l z1^vl5ChZmL)0v;_6DUVb(Vi>b!WpNY8*UuOV-ITA)=vCB$^yjGzC)^fUMjRw2Bd0!dtuSY$>m8EDJF7R?J!eBwyfSt8 zRK!IPV>F$xq;-bs$@Vq8ZI!w9B0vIKt06-N^?X(Lt#IVNeVckg2rn>jH4IZS4W&#N zXQS7xshqIDKFB(WKpv2wj${pN946GQ$FxUW+(|9yzNjnP$r}%Wsa_vZ=%8Cuyj-&4|RpMwKSI2nz7VEP;>mnBD;Y<)@hW_v83=l9#j zN_W0#Ih4Gp>nI^6K8DV*!;7@iDGQNg2NWsp5{{S0h$+^U;j0P;nC}S zb)~1(W-?lw;$O$#2O}MUamj5JgwOKmQNKpzlxG}7`+gFpEeKCiGNLNle9|(`RYVMc z$!ynGc-5xvU`9U#ty%m4!}|m7iko_@TzyGZnQajnMk`#|pSiIDmVQ8L*Jo2B3K0qj z{KH#CuSZ($50~0`kotUDIc+>nsYN%6y?uHlv{i48ilEbV6n5!_r5D-LS3TgTcZ`3& zA4&;vl9qLHUGH0MTZg({_QzHlQbT3(nl!$ZP<T%Bw$HsrWl~+CF8oD z`@I}mN-!ce$TjvGLN^?&Vf1&fJeS7L;!Jva+GmUw(l(y^wIRNFaezX>f!?i& z2*Wlda64>klsUtNY#CCK?X{1!!(|UfV+s;q#U*R|$81X)|e>BklS0ybc z9r3mflaOPFu5AxoExojEr><7d*&rCpzN%#8jKI>T6)Y1gpMXY;>~CRhHH33J6uRa> zDMrKiY8uKo>Ec+Rzi=P6Bntq~2OnOAFAnVUx%_psJgX*OSy8T)!st1DE?O<%m&V-r zw>J}t`qt^SpPoM_ElUs9lYKayYG;~09?R`e%vNsAS0$W-pvZ2jxk(Sl9Z>(GQWzh)`g4msa*+ z%yF9?Cj}^zqz6GFUGC8`p9()pE#bf>a*QZ+_w}t{rc%Y)1&yuxgYETGfnwH2%$~ot zlvYPLxJ{+oKql9jIlI{GfI$kT<2u>?zStgzyjjbJ`l*ofdWD&ycW3nInIS`1>m%vo z3&R#Ae<)Ag5}2eYy3MQ;n`-}j08?0PblpuOc5OXv44R@b(VI%z+@7YJI#+Km;eCw* zVg6>AHWIMbA-Hx!%*dGCP2ZTrRkh3!?}n(aXp?#Cs8ZGkUunEI-Izd%BR6M4Gbk%M zfD|K>dcl3ft2BTbQ@hsDx%m~6r$D*vbgyf(tsQycGHQk$IBbV+yj4_XT+dH@``{?4 zuUAnn!s%GpD1AM(X97oQBI(;W#*Ru^SRV-kUUoR|G0=314GC|(@=VONVtS|PYJ|dR zpPQbAenFjeHK`7AowoYD!2Z3L93I*wZAD$|$DU&$N0 zTF1yNWdwz>SB)jaF#L{pR@B6GG+diQjV70ND^A-T2sjjG9bX^fCq=m|Sc55ip?Q5f z3X=UUH#1m-5)h-9v+|zQF$kcVDJmT5usa^Qt+Bn)K##x@#d5|&+*8dU)YQuQXn|h- zZP2N(k8@Hg)Jd<2n?9fXWHiWqVxnym=WF7{v7jKcgp0zU53{;RRL>m9?LIz%&M&^$ zH589x=lQ5cEFqCaKI_G%D&~uK#vJ8;82)&XD4%QIL2fpWnCDmdE5aJ-K3i3L>|7e- zx2Wow1f)G@eWdlbqok-D)0>H3OR^R%q<#EV&+eCQ zGTySj*ct&2kJkT=sUqyYT@?3o>CnfCn0ix)S4jWyM40~KHSOBBbB`sbG3+Nuj6}P! zxAwa@nxWmB#VSwmSCD@7eR?**8-MK5i{htGB(5A<5S2D1i_MSDZ({uVR57gW&#!f= zRvR_@qGP5AF($BLL?;Nt6s$}_dsb8xvCAXd8UD$5Y`);r)BH*UL zB;9wo>;%q22d!a+w3Ac>Ehqsac$^N_z3PBxsakENSwCA3oqC;#LvW>SuZ9jh59!#7y88+X2He%LhpD+??t;^%hnpL2wv@z0jo-N1;(!vQ9Gr#_X)0>+Ji z2Knx5bxWJ}AN0)Y*7xm_=>JQiGf0=wY96~`A{m-(0TbqI)`ZoGO_dn?ok?-In`#L| zZ&E@tz9xUwfI+a^ARXQQlb#1Cv7q~2oPFvzw1Zku6TCwfb=T#_YtLA{WHzDWzs95+9AxPjq;woq%| zTl(zzl;+mx1U{|ooQGTCC6BJfMXTr=^!=Pm_cx+m-zj>1@5XN2;89zEYx_4=oF0Ai ziac>FZceW1Ne7|YB7{_B6EaartVNx`tq_Jk%&GCY4fy|>@yfV$D(?4m@8kA*M<}jI z2r`B+FZ0`U%=HqJZ3Agslyd93`CYlv63zxYq|zUmI@}7o?mJ@ZV%wA9XoHkFH|A21 z-@g+g6By@59lKq3&Z<_m3jb2q*(*WJPRL)KROlyPt2!;{@Tp`wh@3w9#GLps1=yJDvb@P?Yvxs|5%nrjH~(LY&aY}LmJIqnU}6FkNqsmA+eu>3uB;9sE@ zFQrA};NmKF^xzjcQ<`dh zM-86jCNja>GUcbklPPM)58K7l-``Srx;5j?P-p0RQ3kZNHKQ{a3Jwh%dk-;`I15|- zd$s0kXKQ_$W-Z>+Y6m&J-Pm#12S3p^6r1%*)8=i3p%VU8#f!NqR)480JDpG9ESiN6 zJnEnIn2e|Yqfu}y!yDhS=S-eQo<#=7v^?u%#;LrX>fe_x>XobUo@d3zemF&k+|ykx zP0rAs&qzw=*E&DDGx3Xps+j|<02Y=>RL)PDNlOLEiH*(xWcbyc zB4W$&`*vnH_R$R1rFO$+=keoR+UaVo#|35?EBENtX_9lfRf%-gHsY6On&iAkrWzhe z_qlErk}m9n4(qGn;dqMfXu{^cf2QcTC-N!q6PCttp@4H|sGvHFZds*qs?bAZ?*Xmq zJUZ-G9NLw=*#S?G_AB%jp*`SqC((s>4eXB~cdJgwWodGp$4ItU>A$O|u6E!()Z40A z`>?YqaAvr2P{yI*VMs>iBWQZS%3|$xfS!5=q$(bqzZ@d2(#M`^Hl2LsI{3wLre=S} zp-ZF8-nzIdE195vnyLal(Zrd;ybG?bD-;Ec|sz= z*WXU!LX6Tn{9jW^`ka{&*K_?J`A>j4ar~XMO#>5m6`><+DN#;>OXeP_GLDC)`j?kF zFb+!x)3NqldPlNSb~}8g#?t4xaqZxA2E#b^py5Ja%U#ueZP;Q2Qm82~V*!(Il{HT0 zVt%!xsdc$mgsW?fH62VU3X_HCqQw0qJoR<{f^EOyQg!ssLauc&KNxR_+QT@p!={-G zZg$X6M%wqeEFuze&`w=z5Cm5T?@qDA11WI+zz-5mMDVTQo9i9sLzs?xo0LQ*=bz+^ zTO*k=jht#>ioe+J4kB6@11XdIF^j2uRwDPg?5Ld+5+@6NcEnfNIkfG^gN%$qb9b98 z9GgjcJdq z6#Iq-D(8iu#^lr z=RJg|8J!X_u&@3u^66Sg|JnLTS-rSy{up=;u&y9IqA$V-6{M|}#T>gR>9XC9B%YJ* z5{tbF7xv+PL;7emG~Bx1ZcKGHkj1nI?O1|*w-@zQERk(^q3URNw<~B;iRBhNM$)x< zV+gi-eTZ|l%(qJ*%EJ2D^XtqZiuws-#9gQ|*EKsspN zI5miC$HVcLoG0{@?PDaSoq*?LU2d2jP9C5f!i#P}5j{(GvAs+Q{mLMjCbB&Tmcs+ zlQOg+bq}@YJaq*J^p@1+ZovEA$%${d-6@-Zw1SWv!5UkldGn5N@}N=Sm?Rw6b9!){ zy0zPWDKuUY`SxhNe^QJ4j83OFPTcxP-h$Q=VW@z(YUy(Q1z#PlmmUr~>U(1rNjZiY zEG0-K?lm0ErQb_I8QeuqzG-Ko6dWi}!rfN7{G+;D%8wdsDdf?oy5*hbO5$C%40ty> zrvARfJ$g{sM;k6+xeSw79dI_k2IZ@2MVl=RAYKbgaShqgiq5e_6$G0msVCEZW!b~F z9o(Ba7@$pI8P;vjr*nKQOZWS0pEhwnor*GuMb_`%ehKbyvWFEd*x%pc;>Hm;R1vMq zt5o5EeA39i0Zo}LY9`_taL8^urDQ2sYh4~^4%iN=aO@!Ri~NjP!FKENpcTmbJX;cL z-)#hcQb69pG{*pza>eD^O7n>Im|*R18;}13T;2BeCd=uos4j7&jY{wLi7UPqA^+-G)aS zuf=OLSvZn>5)N@5zbq=2MxJaENy2=22P62$E!OPPLMCh3ASrk}%N6xNGwnSGje!h+ z=}cS){ak7R3z%Vpntq3*gAQR{oJ!rp!4fxe+%m3(lk}I^KoCw4wD2(}=KI|sd@(Xg zE&(!vmu0~!a41p(If^#RF9hlPoWwi)=cNfP(Ikx`Yk)9^Z?VFVBGevjoCfz*A^+4r z>WkBh3ZsiC7rr6N3qW5?*HSAdnj`rBod{ZT5x)&n$l8oN4-OePxcDLjF#zDscy+ED~2a-s~TCs4u~j*wtpI??xgmtqk7|^ABi(YNT|N}dMAYTRuKHd_m}aX zo|-pq4b!Pw49Tm}_{6_m?A96L&GG)t4Y^k+5X}$*5z?r)i84(lCDR`@&v+ zSO2_=hbb6z2TD09b?f)b{nxd>w1GKka0%P|7M}^stjiay{<&Tq_)qD`-?>{Mn-CMc zkqT@Eh9w_4>3pe~nVsSg1G(bJTKJ%Y(|L-lzWv?BnNf+?Q8SN`Gt&JRow9%@JCmBF zzrXqKj~^ zQF~N>OM@@n5<1e><+Ph(WGRYDmE2{dl0PgO{D!=YZASj-J^v>CR`^I&By^v}lVP1c zZb8+TVk{-))ZlC0{uCD$5O?F$s1?$d+J?_W7R!zH-)nb84agyfk65XRMx@9>l0B0T zls|X`7z|_=Vnuz<%b)nqXY8*wU*kNVh#ILnfUNq>4TD?1$JlQ-iBu0*`q<`w#^va{ zTCpx(38-p3f`Z4Bn(ZKTLy_Z&oJ`3Ti&{AgH%|GRegBx{JqOP--1dpLYC6im?E4%4 z=gX4v)<;M3%w?ovbi^@ZzGBEGH{@jH|G!$jNS))v*IQnZw0~W1lp8Em65&uc1=)y2 zK1*~NSI$NX0e{50mOFBV|c&nY$2i|0`vLKI-Ven@1I2lD^6dY}MT zDP#FAAq36_KP+K>oTXz7iQ2%pMKOY9zdvo{J!^O+eP5_ZoN%dAiz+St7Ax5H-*c6J zKKr7IH=aeJzj(GXMNwZiH>4^3Z%4s=R^Z>30;>2d?%M@adBp>u6VOM9ee9Eta8^r+ zvYbywzH9T*r1tn|eh=pVyts+|xf8;(vY4^6NY?TB*NmqR8&6^X z%I!+~ThRa80zeU!kSs?wjU#JfW;xn5tYC(Gh24aM(%!pfTpwwwUZm}VmKQ|WR2N>p zy~wDykx>%9wvaTA_`X|_=RJ`)_jEndIF|~H`*!5>hO8x>wp&}^JDmPaEUwZTMHn{? zyi$a*Nj+n~Eogi-oNco=?Czu&`)H9q-hQ!kdLf;92=D)CL4D7Gmd{4y5L?69{yktJ z;4B9J?F-1RR9LwP2M-=c)$7(O)GxB5x=t@VzvVlB+b{0wqp7f7m6Mu}FC8LP|7EQ# zB~jDMSspv;`yu(yBdRfFsIkrk9#GJsEe*NHX-l6jTDo{4eGH8}A0)H>uiHS<*+2=2 z_oS)$nWYU-GT$?9-$h&6gRMx?VtVqmX}QLf4C?c?RB_>-H!sfr2ub^GcbpD#v7{;e z=%w@ZKla2_nlB|L@ah5|{J0s3+PHif@({$}$Vlg)QCv3`WMHRo7QQ%-fQT44c zN4*s6%!>TO2QW=Wr_8DuC4@oho2WUSZ0E_G5C^*@ z2-_SdJ;jQFA&%UAUR4pQB^eagOhm*b z83-~AVXUsIH^m?*&WqbMO-!k#{9?N|4c*;4JZ^5x3zZg>n10ST85PBHW7~X7;*GzjO{ZL2E-32_gQ)6S^+Dg;V#w>Z~5P&jYn}Fy?Vt5-+$1sorh4F5Lk#7egjPqxoKm}jXO_#YixjLrz-rlts0sE1)zCYtf>@*$@2jQ zMgf~LPUv1W?bMvRv^|9t(nzR?NTC(HvsoZLC%nJ%wi45nLlr~b_qq=J06 zdqH(GlJ++m@O29t+YmZHa7oz4tcq8I?cRFsvBsO4J5Xfmt(bf1gBr17OAIm0%r{C{ z80&=mg*8Z2yzNLNCs92JiyL`w)=+Y?$8MjI78HGalQ+F`ssS%cn=QtB(bKVlVE0C@cKVx8fNJmjwz&{Mw zcD3sz1Q}7K5!AsGE4T_wTuM?6KWtZK{%y`UEcTCb@krQw5L_X;U#As>`^hWjP-aD? z%1=Qj09ky!p4wQ=kEr_g)?bIr{9+{D+&%~LrUIH_z_>y7z@!skqo{Jnr`zHod=Lkl zh<(Zwx84v@3C0Uwi#o^lov>I%0$T?`Xd`i_EMv@1FMzGs$o;A04;V}(yiEx0kWI*k z*BJ0CYfHd&7EGYdJr+-OF;H~u3H=Zb6XN$a%~m2nmCm*{lU~ti4X26>tbp9aaibonx&+gnBp5H8#$8bnB%%aGS@T?r)Za6QHA*Ierl6VS zWT{_-9U8^O_d3o z+7gA6s+Dg1#^Db-!Nz75qofiz=zk41mm|acCvRxGq>IkkC3=5JH4yY*;SUe#1kYeq z?PJDwx1HsES+l?lnUz>59MkD1c-`OOKJ!biSN{87>eGPwux}w@FFJW7%B2zua@0+y zvit+0Un?s4+G$`T)RyQ2TPqB=*vPqpTZ&|b#-N{d`QlTXd2EE4piIm7GEzaizHYg1 zHSF}dl>2U{yME63j96dqcSo&pXBW!WBdxw+XFUJLoj<;~Od977$MD9|#Xih6XjYo@ zEh|x_-8Z>GoD2&7?7a5p@Jf}?&)piB=r?JYH3FHMq8C8b<(p2C=f23Qy*GkJZPqch zd8b15>dwmcnKGC)EM5bMl$ArLGoL)nvG=mlfU66(sucnYyR#)Z#$E6gxSd$x)1RD9 z@WvA7Tm=_uHzHZjDzxZQM406&4bgOKcH0uq63tfVE7byz8j5K$<}5+U-eqE%l>Y~L zCeKQh>%%k@OKpFWZu>vjd-G_v^S=MTo0?M9#Zp?dR2zHkweLa{NopyorYe@$rnR&v zT58`(sMMB3h%Px@|IYdS{`j8n`JU^X z`D4adl26|2^Ywf^A4G+v=UFDV9e^Ls*-yqua+9hQLv_{sWU}mgW71+-J_@92g!>QR zV0z!diJ)r6mGi85@f7zUngWZ8aY*zIEj(_;{lv|D(fxam!#&Y9x6+GF5GeN$8u zPETa(59v#xmIhoBl#$`8Xv&++Z4|kR;!WN>wjH=ALLNHS-q&KuRc*H=!prplzjgFP z7)x9iZ$|?z2igka)v=wYs`HdLC34{w?oBU)$m4roc=<-sIr3cA7KdOsMg*x~mQ_-1 zH@`5Y_8x|2n>GHH_o`{sv?%`*?B*M+hZr-Oh4gErKtM$+MQW=##M-LWz*?dybJ7J35@#vEVdPnGmqFhgmQCXb4@CIUE*DZrBDx*e+FKCW|+J}}v5-pC39 zHcec}Kv8k{Hvkf<))Cz6jPtJr?pIAB+igfcJ#&$IJ4$HpWfJScbJ_=I3L6!G39(Uq zK&*YSs6GL`L{YET(hVu7N3v_(+hBOz_C=W6-X{dPT_BNkm8(vmTYA2p1Q}oRjR)t; zaR4eG=wm4V0X6FZ5;is43H9@&GxHU-dcd<)#XJA3C-b^JcVTY3wvOa9wLvq#`P#DX1W~eo}WjZZVJf3@` zaIdLDV}19ydX{YXT%p{S(}Es&Ta?*#C?ji(c$@t}S*sg8x6uWjG(3d(IB&k z+x)TCD$qqO1}mvk!i~Vn#)8J%4U@Ob!!}%<1c%1`oiSVFM`$f@ZghNh0$pCKihkjo z#pYVN=c&#cVNs1UVW7;VNP=yRpk09E*pICK_C0JvF2BTi{eX=MBr1pGjOm~;Yvxxq z^SM@sd{FfPsSeGJ`@+Wk-!yZy$~WBEYF$JGqTkIT#ka+|(y?Itfi zHIu+%pmiYQLoiYABzFVfTpzDVkKtC8;6HUrjDwsO3Y2kstPhwmX(i@^8{^-K9(j`s z3VrL*eO!T`s~x#Edi1|wK<7i0_Bvq)UdELo+T%vNG1O~jQLVENu{%wL6=!JUAJKv==V= z^`?C_e$({w1ltXj#1NF*0dxO5e*R!{EVnJ|*xjKkzBKbu-nA_;bmV|!D-O@?`J@Yu zjR7hf&6W5ueti-txpI~oC9NX<(?B1H^)qg27ZcF+9oIQMQ4#Qi_}zhB#!nFLDH}TU z735-2-Z41wS_R%^h1ELzbVvH0_g3kOZ$l375K^IOjNJI}!06rY_uH2LEUM?t{L%tZ zJ*A%VkCehEDPnrhTFm|YG5{{!lQolK+eB(6q;&X?5c2z%CduSDD@8@-zYk` z6A+loJ=PAzuaS2?!o}!R!fy`hl3g`3eAE@nD8QwjjR9vc>a} znIT|vjPOGkFGJLYeaudD_c2@X4;TPzyFB7sqIYz6crQX!sDDvzM8@e&OgOF)r zp4PmkKu0`xO)+NBJooz6UOTR)*hs^W`RT}dT^Pd6(Bcq|YjA-f zgaWYLUkE9!Pnwr4{666*H8c{QNPrI=HT!Hm<7-*QzOY(*I^J7vN0#J~#}He)Cqg3A z9WXdA?@bww6_In=z-j%E!H}eZnF`BWJhHg_dsIRI%1P~Zac!g2Gp}#j<#FU}wcx3` zUfu+GezOcLuNlNLu2K(&rCRl^G+bbMGfHV#|<3v;{s5_nv=8! zv1wyPG0hNyDeXm0i<*?f^+KtYYfgt85l+I6j!ptYa1n5oA2JWa4wwdlctyYRsf`KcueQID9I4)bQUg|?RB>9+TV=8A^H$l0d@wUDQ3 zf>U@!JsMu|5{=kJJZG_l%LtkIOe6$7({r=>|}e) z8F5NO(^^*Cwk{lum}GuGVFtccD`dBMMxPSAFsuKyOmE9S{GQlCds`O1tlc{+E~l=y zZ8osrxsSuiXI>vq!0>lzAa;49H{a1%7~^Ozyj&P{TUMxA@o2)Q!B2eVL8xbt&n0ig zCy?Q1NaRij@Tb43!!}yKFNJy+i>AJ4uy=&BqE|HrCBmEmo9ub;+uBP&1PS>y_YaSq zNa7@rJzj3mW4|sWZOJWUZG9T~ZfG8l0nj?E1rdx5>HPF)sl=CXuz|d2`2H>Nt-{lX zA2-&jq*9#$h3Z7Knn;qIvxxdGY%Z~c~rw<`7=brA{KwL728F4E~L)?8v}gS2-8%<7L#T* z1z{2_Yd~gBHB!;Q#J;?eUBx+SkXI6AHV?Jv1mxq&sj3p|nMNvixzj_6N}RE^c8k1(n{y=b|HF|VNx z19uq>^%Z|cn@03_iWaG`|D={oetPM#@wn#lLd4eoKu3C@ZxpUIanV>01Nc*{H$hal zz}@5+hi2X-YxQ@*Dq~N*4FM8)-LGSZZH#M;ku*<3BcyQaw_oHX<sGJ+Q>Y2UBbj3)wzZ>S4ex>*J^qcyM(gM zeo5hFKXQ#omaO*XgE_AMV1QiTTc|qV`H4){8yk+3=BM*+nso&quX)Tbi9hqIEf5t( z&Sbp6Zk{VpixnzYJiWJ0MEljhAA&a(cpr0u4mma+_I!UO%k;R-+o8IPsZR9MQ!!PY z85!Q48l7Dlyn8zpw?zj_bHWeNhRZD;IDdiA>NNnTGUnc9hFO*L<21KlS{usHv})o!4gJ5&^KjHHi0immyywlQK2_)0{3w}$?va_!#7t8~z>opt zs^@*+qT4iiMdNEzYhM=hi^o$jo&C1=1M5eEref+ojTtw3JT0|(68{^^TOW46uJnO1 zcs&9#-z{ab;wIS*!NkKfaYABn?@_l$Wv?V(;HcK0rehY5m+G&rl3d%cJfa7 zr@5u0*chK-g?O}lO#)i3CPNx)fj6XW5q6h*eI6bhIERWyqz?mzIC%!Hadq^kso}_H z-A>-4-T8`AnwU8E^Bay52OhcaHn z?}uGeKfqnXz?g$nwdq*C?{>1SIsC3U5g`O4Xy%F&-y%=3 z%>RnPtJ3kg5kl1I4yq6Id*o^bm=#sRAuZS$WtcCikb5csVR$=$K3oo}JwlnUNk0gk z2XOQ9tN|zz(7EOx>RL$=vq+#F010Iw<{#_&)fl1HA5@RVe=J2ebKeRW7SV}@*A&2I zyo&$!goU%V&`8&%FUu9&4`k@C;Jgc|7y=x_k_amR(c4IHbP|geutGwurl2YqWUsVf2N+tj?N51XU>BvmE4jYXFg4;myEh)EmZ6 zbNrkHjRP6kKoVdAdWLw0rOoYu(`(uw!9eR+M&4WEAIw7?t-ml9tnhZ>oA8MG=?sHiHh0%M^_b*QCjV&S7U}J z;&s5164;GEZ04LBr%t25X{MUjtKSij8}nv}n@rHY?3yfsz5v4aXd>Gm_NPUwP5yZR zvDw9{U3g*bxVMH4b)|oEnH{8}A-^KlIp5D_pmky2{YqWQ`Gc^n*@`BF1S%}YE%2>$ z)U#$(iv4P@jaqXfkE~BbX;ZmZd%mw-S+{JYxCJ;SXV>*^9gDuCWMM->1@x#%$atv? zLXN1;UicL5l)jGT_8QmcH8@xy;>o?M0X?_6R!vygv+`K-2hO3{1 z>!mvA0trC;s3!t3TB=6cb1y8`FBac^%J3fg7}snCdVv2mL=(_;#!|vz?E}hw+G9#P z$uXGqG6N<6&W$ClTW>RB=Jx5HlQ8Ecf!Mv!(-Qe7;c=MclO!2-GUwEmwQg!A3;?|5 zd^nAvXC(^k%1$vsv()OMC?|~rupGJxcGi^cQtiIg@#^_0vXHD=h`ig1tlh}YLb(ocdz zZsgm+L3INIJjN%on!D@j>=-!5cE{8&a!*cpjXBv!xen8Y@)33u=Ws{PB%y_=$FZa2 zD7n0B4&20be*1I(mND(Insp(0!ofj4G1XdmD)(DXr^8v{0ua=Ww01zsC%~)$v8d{(ybMp-KDpyOFciY2>a6@F zEOeR#=wl8i95M2E81gt@E;t1{h&kp1Y6{ZP!Ld5A+8SVrsz4}lLfP>ukVZUY+EhM9 zZg$`u$^jjCNCOA^>a2MiJj8*|>=yDM%NU(34g+#hl`2{h+~UdsdyI8dGY_yUko+uD zbc!pi4z5t8iB|gmu*6&cm3WB++0OHEZC36G=c+UF7cB@@a(ounAV2_UtLN9u4Y=v2 z+#FkO`sv=XJ+H84wo|@K?$p>PkbRi&hza;b0H9#QfVifbs4|ahn2V<-!oc#&4K4+k zoNS=TGOaX_|6_1z?wMB7bs+_=OWWEvS3}G;|F3LeTw;awAS2Z8Fz!6vT%82;B5qvp z-wC)NLDH&`5#V%r(Qw24u7QDY+`tnJtvB`F2qE2WD##GMKacWdG~E zlz$>Oh&axa2!*z#eT8id7|a>AsTddwmM5|Cm^fs)14iD!G^_j_`x)nuK~4#wlBv$Q z8kt#QqcXrRCqS}RVc5(GN6L0sHjuR08657>6Mru^BjCM!@3zOSonQI?JwyLJL;pQP z|4*EuD~;-IF*D!g2m$#XZ$F(}G1gJ)O#c-1K0&`2H}}1r$pr5ruH)IW@5e`?ECO0 zAi!Q*-T4$}dWZHKL${J1GS}&!vQDOVupc&}l8Th{l20mj5{7*%H_SsF>du;7Dq3U4 zwy#{!B{|s<`RxSxi`SG1;A+cGYzFEcX;G`KP7>&4W1a2nlHv9&49d*z}WhdAQh^y4eAgcYs5_H>fb)PO7mo#u5)G%(L03)&P0^vfS zk6N4K>qSN&1{oI}jN2Wl$aXhXuel&!)#}EFCCt=u5P*AXgMy36?c=d}1cA$^(O}bX zohp5K6`&NBr;-T{M;vqG;MqdyaZQ2%7E_g4x?>`&u3QMD6rEx*lv6$rs>XA8)mW$I ziE2-Re$A6VIHvXTGq5R-E|ri!$)+iE$ zhm19bou{FZ)x=t5k|j<28oHuZhqO-9h0l|BbrJK60ao3B}||x%YkDnv-d62`}+&X=ziJ(1Y9`8j+ZE2Q6U^>TK%NP z($-;ow3F5+Ib^a{v^K8;PGkNZaIWBLG5;XhG^kkcS$F+!&Rz13mv_{S9fr~i9R(co zfDVKdh$P>t&$&f*5g0TJ5xV(i5pgKhK_nq@=yHc3RL1{F;~gP!w>SFs>1IJg=@yMc zw6j!lV#Gz)^xs$>`Y`abJU})`^pIOPTbU`36_b|K+6k%;OK%TQPZ)_bv}=gGY(Em^Ot4ld2?22}Zu6u=XVP8pnfh zEekkLN}!1#wtmOHry%drMMEDgJbyHv;iQIxR@ad0_}p7NUO%$hvi1rdd?8qS)otn0?Zb*ngis@HK2sYK?2x8`l+zDBWLIs!_g%}#PklD6yb?H^4!PVsy z_Eo_Ul0jN-V zyu$Dh&IP($1|g2Ox+i+lT@)!%bDOI`AYq+Z%LfL;7joVTnB5fpdH?3I`FBn)7~v<>2?&^W z+!-fczsN6C!}WgzoZM@}i;yJ*noS_aJsI`mUq^ zP1m{r0as#xl51svfv23;&>e~ZxCDC|8TmwXPV!>ZWO2Acxlt%<#-2?c)=RX5=%pw_ z+LI^cqmqE86YK3C8)En?;qh)vLS1Ix@*`QowHYS61comMA9rbhT&3DpKKd&3$LUhLh3VCT_fz67dK%rfqvTOy3leANTV;u7m zJ36Pd{dd!P-_@YyEK?#q#OpM=!U;!oVt7xv5r6k>96CWRM#nrJgZc*}l6)HlrHEET z>84+OLk!X^?x58rixCPw2pCnzvZ~uj!RhFileY~UR*jXR*NQql!EXegrMIg0ckl~U zE3m_m8!m@ZLxtu0MclYK+P7k3J&lrnhhRf?O!>8WNsf zKW)~X=z9VF`go_>@ZCzRIY#Z*+Je-ZM^!s2@gua!b5Y5CMR=-?!w&v2zV@C*hpm_3 z(1hn{&7@~7vASUVCHeIvs(U0ZbVx-AY8(7nmP>=-AAWB8f?uh2+0P@O?SsC|hj2PI zB-Ypb@lIqznrYJ02#LhS&tv%jP|W~efbO{Ll{L_uZZ1PYu+E}{5*HC|Z5bEO)F~W9Yq`#z=98+^ zHe}tQ7UmSgeL$Fp^bkyFUT3W6a|gVX;jOn#*zX#APW;N)*$op&B(?QqS6L45khL}` z0qHt+_;g9z+dqY=B|15)F4 zuIlC_nvlu3PV}u4jsJL?qo2H}D!%#b2LD@}D%cj^;@0jGif-G|Z**TP6r~vr>z4`} zPu`~A-#RyPeX!I>UT1jGL(Tyfm~V-~@RU7#=ACr_G5YLdp^aXY+cE4J|MdoaK4#=A zay8n?3{QKV?Y024VQ5$pE`^=kc=I;Y2v0;$pWbrW{^@KnB3z_+(5eV3dN%CN`i^v4 z`K~hYLPn5U8(u4z;D(;oYOAb!nT5oV2$#^Sa*?XT4-V%f-c*R<*3qsQZO7l~?d~tC z>w8SeP%ow5KbN2WC0k+|o_}iktWV$XHy{O+kB}@dpf@q#X!8y%g8Qc$YOlzv_APo? z|C)P;E}wAVZDEIixrwXFX`UK7jl6QDvBeRNz2p7T!NL*iXg0($3v)1Y`JuXM7oD-X zS{sOtL{JvU-ax5#a~B*s<5M35)N1Hltd6u$LZ>yb#+S?e$D2LrgGO0yNr>I8|>cujV(S1=KYRn>8Ka2 zB`&8vBpqqvBaWWxjSLwe9PzeOw6wYO#K1N2w~J4leq%V*wFneH`O)(C3ou++<#ld} zic?B)W7kunlDqnGbBjyS9P`m@9EVYLj^(Hu$7!_vNQ^;X-WoyU7p+laShHHs-EHA} z?dt3JL)@(qTkZgJ@q>}DSiIMz=WA~>ksrNluK~d-by{4kN6}*`pwNgfbxq-x#7{!$ zudx>A+zK^w8t)Twcqx}~xM9#}UaDYMG2`Vvis*aaHhZrB{fzGC1g>tz_6pH>1OMRF zC@27rfA1}#u~)pkMVT`=QH*%%!$^4VZF$qYfI5l7XpHLXTqKIRst9xp8@@1Uj%)$C zh>uCts=KTwi1ptUifS$+^-hyq3M=NoGK)?meJgbq^(xx!?jtvyzOa^d+&wkRk zj47G?B|EC5#4^Xg-g$k~YqgL^rAX^`jzQ^(qmkd$J-qnSJsBLHikYL_(-U_;;1)pK z;o&F1ktx9!PyInDSA^Kb1ks{c`W}zU;$<^zf)ru0xh3{e5*7L2&NlLZHA2x zX!+@lDgPHdQWhKPCpabp>@HzVqyH~LFCws%Q>tnPEiWCgXCgu!bQ3f82uNSp&;Mo} z0R;0LU}T2!73TuZ`Trsz9WKu4BQ!Fl*n)HRoXXH+#d&?i)xSwdq5Ivll?iD~E~zDU zz=$auYTcHuY~y^N*6!)B@0n1`n2vlhn3KSk05i2ls=+MH2Ezp0^Xj)pNeySPCfNEA zS==1t2k=PGuoFX1O|Zf?0AQUXwPoLy5M&MHS^A0|J2O;t0{ayo#f%R1h)sSQg|ryHs^X|T#1!E~@w<=d+3FwwI4fwX#4Us!q#aY|XY=f$ky!2VVXW z%nCr@tAylbv6du~8aZ9)uPUDfigcG;tK&<#IUm;NrF4b|> zR*neAD)H)zj?f`)ZpSaNr-x1(h_UgafoXZ63A;H>d&t*aQMx?r4Iw0Q_Lp zc{D`RG^6}2`5EhwW)3(?A=Oz||Aiw3EHdT8wfi(Ov>sV8sp{dm0 z94U~Zm2YTLY9)byR-Kx^5S?m>H8d-=-m8+$ONUvwlY+=kg;JzR5Fyzx=mbfUoWwe{ zh5<-gE@-GqdtPbHB)S~fhFOAZdH+$=g2fM<^SdmrXhHOqJKSYuHgMbzA}%jr_NM%^ z?{f~%mZ|t7ODh?Mm7kEfEQpIB0RW|jNCx&T{tolL#!cMAi&jBX`JRYcjT5$*zp!n8 z!JquZaTjf&gCsHEM2%B)%u90*F3;(2MA6paXc@X?BMC5AIZ9hjxU?DA>VQ5M>;(Kk z<^Rp>=T?0F$!K~B{bX|oVwVd2gULrVbxm=C0TZR4rmIq&iGO*MZyohmUEVNpjd_@A z@?VH(T;!1x)p0Db*&6tK{CLOCFPZC++oY`28ct`$ZnKlz_SCL7R)>;(V8pv|2 z#oBI?VYV9nD$*O{LW`qV0bD()7E*%|K;`LYCt)N|1$WENBJD8OXbE?%TM3 zY5Vv55!U}dg$)&9Xcy@u`LV-EECz;0BK;g(<>P5q`ys}B=8upr4o>n(H0xu$~w@L4X!#!09r+7 zxY`85&r~U)6%vR)$sMq;T7v6wVP7oCrUKovW6XE#+jFNlDXbG=7~tjq8_dTAzqOSq zBb`}}^NDTNIS^#3DdJziZ&jl6veB7_1;87Hlwv{W)3#tcaHA@tc@+WUgIt)K#t#Cy zAdM5Lk(%!bPuDmkkdsKjGcRjg1+?frOc>~w(Kwlb`5*a;Q{EQWdjVApCVEd1fFDz|9 z+E3M0QOU%noQoDiQXO0q^Q}Ql%p6eSgpz(Mzb~W$5Vhr4UlNtCE|*J96Q^3brVYau z26X)lTvY;%&y;8Q5vl#E zmn}%;UCLP}bTAF6_G4M=Ho&DfcTN`qG8@a^uz$upJXvmzfdB}@|E5iNKzL5ROzPcRy?=5r>#rW?n^xs?P z|6yBbPuF&-Li^D2POPdKaJSuP*2_aEQY0eEzxzz~DsRX4)~A2}{PYO$PhWKM#*Dsa z#)``G(+D`Q%Stqb?@D<%VTKqdFZCo+sw#L_LdULtcUMuFx=ShQi`<21H1-UNKi&Pb z0#~o}-U^Pogd(-{D-1P7DtMF{GH7 zT4gKB=inrQz2+o|b#~hC2zNR$gmgMHG@K9iV$6_5SQ82ymr-j7;C*H())dwOLp<_Z&5OIfpVw(OR?lIQDC$;U?N#d2X+@A6VfPBduDr6Ep?+) z2&9&?VNKFCbup5c`Yb{|@-yq~JnO1ixR!d4lHk-Wv@5uVXz1@O_P=^Qb-7UV?sQqw zh}}$9+}$Ut{Fdi+dUuD+@j6#yZ*|u>dFB+qNzcXRX@!Vy5+4>-V2y=eN>Z< zdRr@o&hH6u31P_>h@}ieJ~FmDjUMS%W9`U|=x~!9v@9R+|4Hi=6t+7Bt)Fjsub=G` z6w>sE>0~RNy)_lCv_>yhl_@{~wcS9mlGXn6`z<(EdG~;srQrfjbL9ttO0V{--kU`D znrPzdyH8I9JQOcns|7a|BIgs-Hx4J~pNaFA0*dcE9>nD0>fkjWxk}_Px>3OM{h#j4 zW^!Oqhyg$JGf*x+#U>k{u*={5ZZVDzZ>1mI{2>}Me)icqIXWoB_Ul94DXqp?AiQ5w z--%6&jWc{7ID>@#`kQ}oXw0c{&`Tfvr%*I__IG32R{+pB(;K)&WIphO(F12}v{`ge z#_AliBv@4@`P&JC4viD(7K339U__5mbbNCtUB0c6-zA^jcU>-0N;BK50AAYe5^G%Z zt!WN8Ge*?fARMFtY?SybV9&Dr?Xqqy4xHz=v%%fjNpj|aWXMMYc&7f$}nqtf2f+QrGP)zbQ09P zZh~u~W=&bO-SUJ4(6CmXY{SAFpqdK=IKUL3%W472Y$+gp@1f4Bt^&A0&b!`){AAfL zH~bP@t2Tfjdt2g>^y(8mXQBBjgZYHWnodJWmq77o8~@IecOT_8$_}lSB-@ecdF=G{&x&nj zS}KI^ezo6CTAC(-6C-faVnYMA!8kbd02ry0gfIlHYYhIif<3KovP$^OD7tH9YIJ-M z!VetEF;av8ntpa=Wvgh^`C$7ArEHr8Fm~)iv=Z^&CEho+p`S~WtW75O`Ke?sr%VZymO(R5S(XMzny{&#^mzJ??IG?Z>E!C$Df@K~C^@L8s5 zG+*I1!b8Kj?x;BfEqgda(QBp$G8Nt&aAWJf^f;qw<9nD`#6oLdQqJ!Tt8?~Jt1R$( zqR9~qosb9FJ<#AEA;t@!a3ZDN7>7vC8YSW&tfbL4xgB?bgzYCgX~riEy-R?n^+9hV z9mrR^sgE`7X6(!D$y*zQLm6Sxx}UuQC5p{` z9`ri?0X{xNTXJrbAUJILbZ|Z$@5roIXnz#s>lQ@dI?jdGvQwF%4j|%7yZ~J5Tq81W z`qzFc)6PU+aoZ8;SW^w&S{~4ouss7-)fLq6=6t%@6#-rsHZi9vBUh?n5Ue|Ef^eG#C z>3w0Q%;M$DeDmopznU)$-6ha6HZ+nBpvLb;dPyDZ$LJDs9}Q(62G7uoJ3!MQ>ywyh7UB(%Z6x2818Vi*9EZVCgQD z;&T*9lumonkzvYhNvTh64e25tYRXLx7^0@CMWwd!xlR{1ev(QM(cG2<--z23OZaF( zF9OvyL=*C;u=r;9!GR*i+PzjB_9s+t!3@Tg)YF7+ zJvZcQS|7jY!EKxctAc;u+1RNDT-OPkw|VFz4usmdh70m8!@a{ukjbTC?uAXWy4h}o2x(_q7xu?6|;!NW?-{NpQg_X1!h<*vrwjKAHVOn5> zyu9zKQHBm?9ch-R4Q`ev(vZRq7S*ZMupzi+m2S22kg;a@aUp5Ykg#TeQgX1V&OqCQ z!6mAct7|GhMUqP#q=pJi5oDpn*Q}_2u^jy0Yfi1tdDeD~FmQe1M7EyOh7qunNOI?t zH7ysEgm6}Zr`E&{@qu3Hc1;A^JbM12^riU}o(yIrk-<)xslIZU+i{(74>R6sYHtkA z2?*|||JM(jFXx56Gh^iSKL5209Qb`FF076YMpDB-PicVJk-T0<)f2@7k(U^S)-!|D zM)vCq9Vq;TwSsiy#lqzwBqPmwCMYK{pvlj6Cc~E!v9)Ggl4onHf{CS!b{-)A!%KZQ zA-jR{y4&961h*8+Q$_z#NOv^A=X7dOt*TjL)8tw1o2k2|u)uI?q6jP%*4m@txx+S= za(VRYl?2f|`l`7&=;Xz{wz|sjc?OvkS}o7xkFZm1?Bj2(cp@{C1w(frlVyQYbnV6{ z%>MoT<=@MIX(X!OuBw9Kia}$w>R1&lkI{XwgUo6D{m07pY$P^J$K2hQMC!FsWmx;r zOcn;rCNT%^)J-R?eLPQ`YK7lc6iB+ASL1Ym)&8`8XxgiDfW`YRc>H6Z{TO2)+s;a>(#CkGUvexgHALbtoDi%IKvTfpfclf zYpSyL2l?t+(D3%>gOP-4vbUp9HSU%#fnx2u@<84D+5l^F<`^hDjzp>tDAsKV4csN&WSOiQ6aqa&Op(Yij=d4VT3Hxv1P}-&T&n*3DG2J4pRh=VgTfK0m;?RCx1G zEBHd?%y5||)0LV(x}_hjH-ZmiMpAEX|NKbd(_!_79mFq(qg&GAw4U^9#%Vvlfz|eU z5dPWzy^(ugxJaeL4VNP@SuB>oa&*y#<;>kRv`Hqg+%==%TQ^*SVI70h4?+f#nERU4 zvYEzp+R04Nh$q(tIb-UVOu=Ik6}ID;qBKjmI0#B7F~;&$F>mG1K<841qhNDY6dz29 zU&kz_q-KU6rsANUkt^Y;R&$YWqO9eJP^*biQ|ea0Wh4F(QH$Wqjh7B*uuhywcw3FV z)7|l^Na9)dWLdD0)?Mw7zGEEY2rZn_aL~tw{p{l;+kx~gC z&#VpRLV}22$9%EFZW+Vm8CR;^Xe8A!5R7guoa%TQ=yn6fMi(_o@s3;eZVK~aGYTj$ zp6}VWq;W5-@14_dA3drOl^64JpVF9D-&_|YC~q@eT~ancZ5B8Mo>|*lv5O+FWc3BB zLAO*wO-3y+)c0qJUKq;z2L}pMCH;CNiI<-Cw(!|A_yb+UBS|<=07V54xS^Ioo6=bC z(b3w{N()7??SXxo9|AHx%%;E*;GYNOY8_ssv4EIefH)oxm@NK{(MI>qZ-Aa*%~(?X z8pS};1$T}fc}mZ_0Xn;u-?QI(uU@!!isakj;1xVvDGd4p+&f~8jo5j=*7?>@Gdd=` z`*yE;1*?}HavRqPZh86#$GBwNcKK#^RQp^%Z)@{{?FpWMk(O47Z+oAE5M`n$7VID4 zA>aAUa>m#4)3?ap9^BUR42P${tJI!(n$ogh*LrYiU=jpta0_IXf3-Y00N{KUwV-Yi z9Kt?E(I?*$9(QcrIJna`LXF@n9`kqA$>8?t?)B-)wP$@@)+BE41M64xS!{GC z@j&brx`=h#bk(uM^+j!?%0^MyMQ!5K!u(@%R@2X#YcfFV>zwFne^A|sJGrm*l(SMsuR7f@{|%8-?ZpxKW# z`!G`@)#<4!cj?cm3w#EoiOAOmkB?acPp;g4S*w)v9|;lsN6d0kyhY6MhAG|`wg_x< z_o!?=#H=27dF#6{KdumZo>3$ria-*)McPQX7DTG6wS@{RN}O_vUU*yL^8+J7si#@J z%+~PAcm0WbHyqavzWw9N+xN&jA*dQNNw`Mp;vN=gcW zXqQJizaXC9o!YlieS=gnvl;!eU^{yEO2f$Nx=z%@o9Vk2Yt27f2vApwQKj|hl8@gj3`;(0g-4ep^OiNPL$d0mJd-AS1`>M%U)$i>t=6Y zs#F^Xa7yb9;=_bB@sNXK7;}jlV%3+!WiXT}3I3$p@N^moNFYQx7g>-$m48-rb}PE-2CZ8W#%V zS5`SUMRkiRD=&pQPH2Ye*_Tcl*X#OR8mp?gEjmUjy?T#0LH3DQ_BazFvd9Qlg^w6) zDaydcZZE$!fS2z5`{eD?DCEEobXj525(Aq$^Yz(+njn4r_NT()EVUsNK7cOE+gefM zGO>McfGyfF0|4nm3sHv7#xFZ;BH$el+Dq0D#0PrrLg>PVetu#zPWf0@jg7JOW@MOY z^vcr87Gdf^boEiv^n&)c?xD~=&{sIiG|d0mzBCAGy}elY@u2MT;4+Po9KG)T&;e7S zETQTUqV;6K_W+LCe^Vik;T3jmKqG7rF=M!`^QR*9=IY0XT4=f!J|Iko`}<-_csCY; zJ&(sPA9=aBJD`zB@L3OKYBcn2mkwHs-7GA9H^Y?T&dcE&vEvALcyoyDA|;An#?DNa&MeZ2=YbSA*3^1HV0E)&pQ`ryKzj8-hL>g zxgt-Q+-}w8IvMmv6WPMoykG}zEbWpP9a-x+rZ3cdA~cb{7J(<^Zn__kvvwCmmZpXq zZ0Axm`_Jaq^i@6n7WVQ`**|vH^=r~iLFUjialVO$&ID7x?XY*|gDhL9*!G&ADfP$B z4lPlF1#T9&PkY=_)inDRsg@J2d(VrqF@EpoyYNSCrlBT1?aB52^q{gcu3NU876Z>d zBX;xK7x5o=+U(E%=r7226hcY@W*9J|p-c@WW$@;0Mhfldt=g zKA+PiZ^*=&by_D~-#Wj&m7RHdG3to#>+|jX7YWu$i=lZ8jM@5Hv^=gNNEcV%+H0&X zI69l+;yZl4y=0kiZ-{OgqFE5(Thg}a`zXKVxDw+DXf3OoRiiFucbKU_do(Bbs7RYw z!H#=YvDdPOeM|fqk+v=SQT}ZJpr*PyV3*O#UyQgX;ts!eV#4VjZ|i&!xMA)T6G9#< z%qEv?!r3QwhJ>o`{VF-W1(``UY)N!Qw>goAPDGsrk*D)x=MH~z84+n3dIJ0w?s}}R z$p*)k5Zf~0bzcxKW(prNGe3+x3)PqdU(RDtWpvHpiOsi^UGJJNSC?J2ElAKpyKCVW zW!5hZo^|-?*WI_|# zYO#Ey`8;^F){s^5Zmuv&s>!Gc5XOn?mk9cpSXO<{&Cox|6Qxl2E5tVXdb0A_rjZ$o z&^7Ypj!8?_*b+#JkZg*YlWe=kiaES#*cQt&6x>bP9eg4<5KmkuKks&&xO-B;E>dQJAV@VpqnxI&lc-Xt8T@G}2{s8=!JMH%l zB7S~bn_f+>Nv*EtH#t9FjmNo0D*gJ8DCwFEw12NIIdkS@s;Oo%@6a`8DNQHQ3{Q>z z>p~5xr{E)Bw%iOf*v}^yOwBYv7J|cq+ED@L4f)8m=M$?k13zRGrZTCILp7G3?__X7 zspb<%O!STZ$?l;WMW=eFA5YF%em$}y%(l*?Sx1lUODJMh3c%Uc(TxYH?;)2bh)?p? zC#J8n*2~>Z&!!r^k9-+aKX-`bV#AJ;H1ccNIf4mg#)!P&h3QpwmYa>@e2&o!{2H*} zks><>p*-S^$A!@b_V{a;mh=`X8FP8-z96+jW5y+Py*ygw^I6?{%*jn)P7_}}(DoDa z>n7+a9^N|H7RuaR|Dx9RfcY}h-6Xb%ItnSaG?E?GNFcN%izFW{!kwk^MuG|9d7$H!*A}Wu1v9o4=IFQ6e?L< zpj^h!vfK~2atZ`eQpbz>L zFNn70e!1iRjuvt8WSpjkGFO$p%(7*hT7F`B<;(*0nj)w97I%Ebf#`jHFDDwzg|&XHjGoAJ84rWe~cj6zovvQ zln0XswMNJuKG!tc=ezVJ@`?FAW`B6uTH!f=jm|(TpZL5Ac(PN@z;?Ad8zzp_tS3Wi z*7-s`MGiL+9j_7nU`iyS3Tu_-#$Xt{DVPP`hJ8%CWmjU6dkM9&C3FX|UqW;M4QMds zs%-Hojq`{DeDIkamiL!te6N-X_=-0h(n^4;MeO#+nL||^8EMy22#}-bp=XDtZ~gh$ zyOxG#?e*Yd+e!b4n{{%%{(suyv@7739Al zZVCPo5%#w7M1Hv5{4v$FhZKl6q1AAiH%JhA`|XsntgwCXEuby>#me}n+7Ad_G~xv_ z1$9%5DHazi)Tpu=$%5HvEpsDd31jNLa3cV8U}%dr3_3~xUz2FPAh`%K?njPnq;3^= z5)~JC7aiB1t)C7z3m4Ro>$vOs*i}!?1eC@me>^W+crJ3W3oSGNSrAK__?KQVeB!fN zsfIu-vZ4r-cu75#=i{U*s~$*I zto@j8SrMQWQ$+V=(U+&XTN)zrEy{}MoJES%O4*Ydl`HZirqIy!=Xi08f+FPhR`HFb z-1}Pb9Qs5Qk#^ z=EWjwf|AU2)x7G~KJ8;o?LdK;x+(BX|2>JAe_in6?HpUrx4)}3Ru*!-SsuNT$P*FT zlJ!RY-mNzg5H?|^FwbO%3l({IDwcW+c~sfxBvsfr)ipPA=Y*sQ)WgaHLBKj7OpQ!G zE$1nVDcg_TAJOSW<;--mHqJ+=jhIai2{zkvr+jLr9eq#2snr(R|4?5_h1)XJmlcA0 z%oSId9_w@{EG-Ikl_!XGDgLEaeS6mAtXLI9sH6fS-b%m)yIWkXMEh84%zF6S-{atb zXLDa=wzJRWsH!`AJXF)wv4E$g=D)IArIcpu+32dlBtica{? zDo)Z7$}DLLRrPVQZqpw&hK$IFRol1R%cz!(%cu>ItME~rR2ETQ>v5^*H`dLY(2&ni zYRaXwy)k-2>M#knrTj*8rgo=ySD~K#c*&$RDKxuBBu1$Ps%+J6KX)Zn%fxCdS_v0c zxf&LAT2hzdLcBjmhsla^HZ?(o7Oz6uGzZga%D1B#^}SU(4hJ{!9UTqO4Yqzj>%44v)s7{b`nq`qYw|ixn++apOpmhHkh4r4j2*(l87+ zqpbb-;vS?V5vYA=bcim+l;~f*AppwFN05ySqZX*KRc?qHx2DyX54iK%e3!eB7$Z#S zc!1J}{H#j*Q%cayY~BiVWTRh8!HidBugQjzLngItSVdIX#d8pCfJIZoQ~NB|1CW74 zBtp$dtv&x+zK`q&kgq-e#>V_}%5o;VY5eZ{0kPPbD0ek)fi0V1z{VNoicIdb*c9ur z%Z?6e(rhWDPyvaA8m0Y>3bb)ldQl{mj@h9eFFb&VDYw{MvaUc|mHFG}*=#k@dU8TW zk+Vj#1LPWYNek!+Nh9cm4;p2&`G(xh?GW(rCa&u#a4ZU?@y4T-si|2N&Sp+E0ZfY; zh}HBd`)uPa3yL8&Wu#gt^4SVIQJgxODwWj)6$8JndM9m3)5^SF;wCoITj;l#@~YU% zimGI4MO6wlrD;Ck;D`ehY+;j%txV^4Ov!*oL6KnW)*=g) zot25h;n4z(tQBv@kdta@9|N1*I`yZ0U-;=wS1@=r0gBtwhGXX{tdeQpjaQJSEuaGv z(u#$u8eoIkLK2OdNhBeXCAUe?ondvhB3%(0W&OhZ+mre1SfZhyeXPxHGEM67{nhc$ z_PI0oyfVd}^glFvuDp1hb%CSfJT4=nLN=kvm2%js2Cq)MUfYM#HZ)?QG8?z>#!tz& z>BiT3wH>l@QdS!bu|g`VW&hY!UFjJH)4+UYC$@=-lwHL7kZ3u>#uL;aqgE14ea)yw zwX9phTtb(Cx*=#4!K&tU;6rtVJUr>ED5(K#(Sl?Yq4uQ^A!C7oje?{o2}v>nE4Xm8Ew^Ew zLJ!i~*h@myVAx2;U~=U;xay^FW9Bdl_$6hx7O0F>MLq7kse-O0xD=lRCNo7d!`>mI zu-6b^H%cN2$5gI8eofMU3`V56FIF~w@F~MuJI>**5kbv8k_>ye>(ac&MCH9?cjx(_48V9L5t2r%p>kGohz{d>XC`DH-iR%h&9Om64;)R~ zj-fr3Bb=+A4?X>2)gN3YI!fS()n&x&uhDj4(tfN@k(*`%kdt;TM+B@xPYc+G9)Q}0 zvQqdx@9^I~qhT>GY`;zBrQPaH#N|)J%uneO)J!ytBEK7KPwCSjd_}UEjBy5TbI;dR z0unuI6wo9v{79R{^XbVs>4*AXoWftj%=_bu`AlLvP5q`uFKNt!JoWUzLfBB3?Z8|>%vzR?DMQlFTb7+J#KYp&|x~{ zpiwkWJPvt5vbBb0Wwf)Dyiwh|&noDFs@2}Z`c4@>tx9hHwk@oIYp%vg{UGOL(kjgI zyF&*=ebjnZtPO2zZ0pw0drU~iswJn%fpW^KD+*V|n9&5f3OLGTA97&9u=smIouJM= zo-6M?+i!ibK*^1AfGCVeFis%J$oDSQ&Vn_n$xX-T-oYlcs3M0z+%+ps1bBB+%;UL= zC+2yz0sAFy7S0(fLKNNIg5l}i^7XU&H%`Bn?2wn|gJVyNw$_vegBKVD7GErB z8FFSAfWrAZWICd!Qi&FM8Og+wqpdR~8LOF&gB{qv_WZK7sMO5XM)5S_ zNJ+ZFNWU0p>>Od&@Z^biC4DzqIfz)%Ge0^eTPrF#Mfz$4<&7AOz`7v9uo1O==RdfD zV(Zrb=q&OoawLNJ*GDB!re8Z4%aS1k(8494Yo>IjKbxzNiKx?L;q-vZ7zDxl9CZ@@ z!H)asBm$`)M3W|~aJCNdj+Civ1{LN=@|EVGHPI_rww8IvQ=1SC%RoFR+T47W=TF5C?{A&?QpXgCfDEnZNSW_Te$GV8k97L;K~ zd`Gyoct}+!Ur)T`fX!LXVx2_}Rk3`7vJ%CG#1O9h%wHrq{O`9gvJ2LJ5?lALbj5-R zn9)UP{g3venUwD(`#8=r6>CZU#$^0T z!l5!z3Sw))Ss_&^#Xzq8%PnZbPRan#O)GyJ=gMfR5kRheJ)2^~O=6gkIFf&mGWCm% z7{Sng8c$V(W+>(~Dqk<(WeBtc{22ygxa0pk*fID@}QFYn+; z`BZW!vGNj^UI9%xY{cVT^cjfuBL$`~j#eG9`vCs4>h{O}zeD zQCgZtn#E^IfZfHDZ8NOuMATja8g1y)4YiFd+{b#En!}j|h(L{i#$Z_`v&X}X>YBko#lZ!t8&-!y>sRjuhZ2U9>ZI+0Ts}oK4#=BJOa90~Ys?;ksN!~B ze-ztU2B&86QJvKYyW*=D7mRdMWkG&`veWRO>t#5>n|j4?iR7;}v9p{ypv|=24KG;!4*aBHDW^DR+^C7d zh%3)oOE`Lz7G@v5HEZ+i?pBcyU$BJ9a1OZHxn-NRR_8F1)Y4*~(zRUy5Rk;!Z}x`h z?`^B+`Ooa^zPc>oVUe@C7Xz$cxhp#+bLnK*J;%l)bD=872&WXySNB+-bI2%qxT;LH zoUXp`bysHBWF4Ign&Zz_*_cs(c0#$cXKv&TL_E16pZ26;qfci~@#}7W{}EUw0jiiy zg5`IA=ZN&mn%}W&93+H`tcDH+Xu0u(?OmCNtY_xd)NVfEAzUn7i!z*PfqgElJ3Ej5 zwu?7?Hh->K{KL0_M4wL2MxGCpXC-@gqm(EzjWo?7zhTau6j4~hq8aZ_A}+6bBdY3m zl_rYx;PxF&npP`#ukAoVvJXCLYE@tV#e&gZ{MY974p>3*dQ^zkJNnrz(|7a}s?R)7 zhXhD2z*)UybVm1G2sQ=tS(OMZ*aC~`3)tk4{Zd1zvU)M}aaG{M766jtrsO%^5VNHq z!TgI~qxR+jA@3bs7+>yzItnG$cO=R#jk{{whxqMj-B}pleYD$TIQ;F{j^}9O!uCFb ztw29~Auo9j5a|uq4&#e3VF02)_|Csmjrqp5WoWp@g|Ehh9ib4uY;*5aeGcWOkiLN9 zt;N46hMNeR-OqlJg^igr&*?Rmi8FX|+raM^THanm8A?7fVI4hxLJBj$_O0re7T_`% z8b{OeYmZPpR9C%cwu@(8(UrxSSo!?iwvS+hqG`deER_7}I#xUH$Fkuzm+T1-U(p{) zb0&@86Lm1nvK~X@ujo8Ux`9=wBPFaj^An5j1)hz)5DL*c@s64HSl3~7H}AeN|Lo+CW27W~j}j2DxPCZXH=MmgvLj|HtvjxD_MNk>*6wH8 z1p8f`?#ae7K4yWyK|!|4i&JQg4a?{+$OOJ(1I9nc@TIhPn=8fh1`eVfMsBoIAf}dz z)sWzkpmqw~t~?)4mxyZDK%E*A$@4xka=pF71F0v_pSR;cP(NBYz}I+;sxUPr0)o0e z)AEH*iY2#fzA_|WKGOu2<=4k=qmC@a@off-0N59KwpynOOM*2skQiIPMT-6+8?4K3Icyz@ z6lOqU%?V{h?*+w00P|`Rtj-201VrwIV+<4bKjAE(y=d}_b`lxana)5b0J=4UExRtV zWy#{=qB4kS9~-<}$sy}5+i@&J~GbjnugjJ$^$kl&P5;zMFRGi>6`2|VH*Y?IXEN@EytqNhL52 znXW<}hHw9W2NDPxut9!s_kG2h4XR62%9BP^KC=4r*R0Z5LwO?#4%8&LAj|-Dm|TQp zK=%PDgTVt9)J`!1?7IpPssutOA3IRqIKqTT#mBaNfL2>s#1l9hS>=T6^V1)mdP8I1 zz${oUf&{7&Rzx};vqJp5aBK1C`hyGr_yuHIOYExM6%8oZW=DoA^V@^AOPE+T<~8MSWgCs8f-|0tf>|| z_7SXD>8NSiIm`zlhmw9?e5uLskdlvTo@~FCA~qLR%D^9h1W1!#tY^vW{-Pd>fw^GLQoLAb!W z*p}5VB=zylNW-i()-8iAu1NlX7w^Ju7OL3Ul9!wzF~8%RJF%C5{3eh~hh1fI%@a`j0#4=Kn29{&_jT^i zrbQe$T4d>*<`~f8%?pt2`RLaobj%aJc)9#qW8|!q-ilY-=m6Wok?M_30ewL)=@K7JYpRa7?$!_@Jr=wR?V`5ANq0m>Cqq0(D0Wu2|G8kA4fAsH9&>% zTj|i(${{;tH>U%Q1JBwIU!IU~?$N&d0|=2T{;*)<&^=-l4q~)-xxH(oAad#3g~jW& zIuo&3*g`Sfv2#pv^-xc%GG*M-Rcd=T5^7WfS9>=RkMo^uDe`w}q&@3J=0{5ew+)D8 zbZC6sT!9}CYFT0)eoxq@Q5xZiWNE;Q-%%*s%GzkaKet6*>MFizy6`R22H_46xD zy=#SdHJZz7i@(fJrva7+Z)6i#2Gs#oKlI=T4E)3qZ^@lNRD!Aoh58mSIIE*=yumFU z@xz2E3T`rvPQ$HzOi8BUP>Yw`|E%6P8lvNY))OazIS>)EkdbwhFQ1SD4*ekexCjFMZrZC7cFboa760sW-PTi_Y+I zMvg8>tf~8^SROD@s|*v~EJv^0F?<2nNRgkD-wrlZ4NCC|d$*Vjmwm4hFxGeZ)mJmv zAf}0(Ecafc$Rp%beg?C}J)4KjCDscWA$<8+19ff#3!Moc6`cmbB0xdTpI!1Zd@x!>7<|lNKvssGZrOh@@6-flGlYG;N#08X#Q@;U?H3#vWHKK0UT@ zKY5(d6npFBMqE1-Bv;Ya7lxb&a64eq=2!b?NJg0BWZbA5F7yej#C8LYYt{{CPj$7q zIWfh{Od$2r!=J}~>mET;`JO1sNk1CuLKv=1rM zuTh<6!!580$Y<=t4FrLEv8#8-%DJQ2NBF*?nM*eXNc1fU{q z_F^e(tS6#(l4N{uzY%<4P)=Y)y)CvFVMW>dCGt(z&0kaUt(a}r0Y~bLosGn|SPHx3 zj}bUJI(OC{^}3aJC9Bov-Ma4XMcU}$!hMK)7vH2G4BW~>>jXJZH3j>`5CfnNu|DTZeuS|NIkdV!Ln;eL}7B@Ua?u3-O?&nm!payIoVgdDaa_AR>sx=*qRAb;aH ztb4#F##s7?sAuq$k#WiLsqn`JFuaXbUiVdT&)aINduiG|H~tKr`^tybcUlz~j*#*> zDCxY`Co~K1r>8M1W$O^Zm@%4#OwQV#B}x0YIbp*~Xn7=Y@a^)~pN6Wg@h8t42WH|R zJmz_&i>2vaKKM{$-V&NhpP0;0&N1U9<+;OFIQu#N-e99|EZPH(HM<>N$32_ojf-4! z2XEXql6TEj)0LKV^#J?e-kfIo?j0fQ$*F;ljaJ4!uDRw`QT z_mKVb&NCjV&w4gDlWkQtjb>K${_2cV-q-a+zU}tv>++$6IKH{`JMR&~?oYv{Pe!+E z;rPg(yEqokl)6DaF^i)WqEa7n0`0zl{{{N7jb0_yCdCRRBCntJdZD90M7!rilz9f_`X7f-O- zUSt7s8pAW?&M}>qn=+uS3>vy{yMN_r41<;~0(ch@|5W2WL&#Kx%#0G%;Xfg8%=$%X zN5XO--nEQ`jsI#I3Hz!IqBwc~h&3Pwk43*0p@jjjzX*-<&lB!{cBqW%0&%tBmpsS; zlZ3=N&3vJYY3IuxZ5po#ty?_U=}rG>hV+)rhJ@d-=J}&krH=2>l;2C-i|eCXGV59R zFN}u}eBl4qhcbLV3F46p+hJ`F@?qI{3Je?%flK!GM{QZmIi)cz`kFHGma6vl#9V~W zx(0X$(5-5l&-XgHa;IOIdg+Mi=02d!%}LWh}lG{FSDpn}JQu_(wcc)n?z^!DAx!`Rv?(oO?IXiY;uqB(onpsK}E6 z*VL-catse7^CmQqW`C@Tm3TPg)xX4cg@;hCYAJ<=*yH8Vzu;Q`ND`4eDQ1#VY*_Mc z$iwR5h$%H04@tqiD-j=JXOPqWPKSyKH}0?uTr^(Cu5*N&g!5_qO~YGf2{#Dm(m1d2 zvvmcLE9Ay<6A}POG0Vz=*{~5Rvl?h|S=_Z@%mEZCX&t*YMQYSteTIq^)YzIeaZxbD z!&X5HN>pO&gak`W1wdg?g)I{C4h-Q{y!F@*m47}7p>0eJFAPDj54BOfFqf$cLoSH5 zA$J612uw&rK?u-FMw}<0s8c@%pIwD>l3msIiAZb!fFcLTIMoImBp0rL8W0bnNvPm- zsbZTivU-JoJqaI3*rWn{78Nvv%ePN@R`qHFO-E|gz~ULpO0zp7PsK?@QN@v4=o$6% zy3|$@vcssOolhUARL~9i!F=)~AznFaYb@Zt9~{~@9iq-rl)Z8K@`cy^XLu~%Tn?N< zj3<1&cQSRrcQq$k_~WtYzVjAGSKS`#-2m^2B+fo|vCmh`nScL^-cHwjb9gd%ms80O zm^`Xw8DevgkX2J(1e3@+y|D9iA7AN8=5H+@&)dzO)XfQgRem5`4|-%o8)~TJKsljg zL%E>jMB!PF#a|>$Qm3?is6@9%m+1Ah1f1}WdPO^%1oBTtcJ6_bG9&tiQCp;7NT}#Lm5=HOiY^d1 za`1U>CMfbHjRt??Q8EZ;?Kszw?3&$OTu;2DWEOs~L#X4?RK}D}pz&wI?M44}-1_lw zLxBFWQZ+G@ful5yU-K%wl42?`y*62J!Nd@}p>UprsZKif1FS(Qrs@{6iE`y#oy1aJ zTirhlR{8Y{c`$*A?v~CN4TD?dRRms)-pJ%a4Iy1(LZU9&5w6r%-bpwQduG{AxTN%9 z!3Xm}LKjkykOkAoF1}jr&E-@pf3eUnDK|Q(8676!w$#ea2}@umFqwv)gp%^0x-H7t zYVS!Zm#o8Nb9`Im_QhOnUb141F>4O~QW$Pci>gR*FC|we>HnC@6!-#04sIyr`HdXg zP;t7xE*jpm0Kt@5p26fBL=qIOTg^H6G!oEjvXq4|hT3`P7!}A+eW8GOh!bK;8lsmJ zH&wV)+$)+pt(R*}bM4WYu%=D*Yde>bHD0j#UyN5625m!7wD&ym9URPum34oNLGmJ$ z$Vqfxwv{J*x3*u}Ok1|<;y;rb6TitV*5FZC6m=!NN3aQc*{U@fx!scv?pol&dmGd! zXjU|%Utm1QWN^*_y&rsl6V|5_5>=@&D0_AccB6bV7z%np`5kH$!TyjLGy99tV}J4@ z`@cWlV*!=`iv<=GI?UoPmNr1|>|;T7zAgTX7l}S9;S)=V6_f~z)zGyXddQ39w;~wH zL~?}t$7)2?V(Jx_Px8l2Jo zyeH)hT&4G3J+C>VIUHcQk2%+8Q%{*gbvPjUNLOEzcbIg1flv11yQ%|C^9b<~pHfP6 zK0#5D=A@aB=1tZpxNp$c1kaD}_C!eD|AFK@8Bl*2 z>BenXWH8)s`K7Sway#-yc&+n#K7RG2F1E1?rU+&WUWqqTsHcDmNRb=(I}GX4@ng#f z{=1*J>(qDxXWHHW0CYgm8?=q}L? zW?tyY7krtaYy2Uh1TU$XTYPq--_Ez+;!!5DFYUb>bRV!TX+!PFVxq-*N#7(G(oqRu zIvRmM14j&@ZtID7Z_7M<2&l)WbXO;Whr$Y!QPVxq?o-|xZMpIumJmes30=ndxrS(^lmj!MFE|X~Mt~SB#G`T`J0+x3(K@x|{K<59*b(r_Kin|CLEZSR zHJ5&6;YN}4%4~4E$1Z?_QjRPfY#N;ey}^)@8UQv1DVan7pz&dK5~MOMhp@L!DIZ&lGRv%{xZ84(l&OInv7eHrluWcJiF3RN!xa8%W8~>-xvL8TmWK|mE7~X-Qw;UlZ z1P_DVqjL5oj=-!xi#DI>3N*{+Ti7S%KE%VT&lsk_kD3>XA~Y-lO*ciu&DJ6W#hxs- zPj_eB=kdL?*)JFYwu6YpxGkT_ZOm?7?>;3XXEh#Hd9o8J;t3mHX>0p^#`a9f39fNC z32~WdE7E5ku^=;s_Wo>{mxWF~*Lo81wA-ui11xXuvOqua)*bHt(U4$^SV#1?0=xWH z*gg22z0RLTJ7(IeObKhqdz~s5)JClVywAz)!u;>RWbP3a->KkHb7A%Cog|g2?fsrh z((kpM5sA1W3STfA8Kb<-v{Nj9NBdHs{@F`X z7o11>mnk|S`fJ}0LPrN|t4NIg1jNPPy$?`*ZH6NbD4rDK4cjZOJYq8HVl{MDWVP(X5zI-iu&LE9WBm$n zrgrX@C|`xVVUeZ5+%RkarsU+2tX=Cyb)$0?|+idvM<12%H+J)n3#Yk3>{23 zkkooYMkRj})siJ|~JNI|sPFw`VR#qLi zfXY{NwBb+7CFI3J7nwoHH!t_6|Mvj=yCe+0gO8=XBK)SnaO*-=oN z5R#DD*n2)1Y?Xt*07V@N>Nry?yN@ZO5hZ+rsj4bb3XZn5c!>8c55L?N3NPey(lLGe zdz;6oPP3AiKSyQj?Z<}0z}uw^+W`Na87w)$63A6hC^(-2yB?7UxaJ_?m6G<35c54G^gdbGsUHfa)+H*bl7eSz}BH zN$*v5unhHs5yV)ldneY!m{^BhfCdNF2l(Gvn^GpE91((q%ylKc>Hro#Oe^E~&&Aa+ z(5DY(}Ii6m;KT<-l?za4yxzpD{Ft^@%dp)sc%YR~o&C6rHvj7aWtm0ecdB zN8MyJM^ZxOW#?h6h`sa7AtF=Ioe8Uf?QeD~kb8Y=*M~ieHtx{{8}|FNG;I!=F0^U2 zc}-(h57NH=+!wKQ!eJ3BfweqB2Ay^9^Sj?nA2X{p>vj>MP5O0Rc&$hW4 zU>J%HtH+cz;G8{+ay2*PHINH;(yWI|w4~Qxtc0wt;gNS{54^8z2iN$U?euTca)!fFIcY=qWu1fBdE`tSwk7lvio5g%($<*y9QG)M3}XN zUeTY{#_E7UN_Sw39}78J4zGi{0=UH3L9ru~YL?7=9DbV<*OY|E1KgxcfFa5`V3@%6 zik|rWr00<(UMByexLUF%rXZSz9*@Tzo>c2m$>0XB82J7DBem#A`vFl#d+ozd1#JZ? z8`MR}A}G0&0&AH#yxOw2qK#@ozc^$lxYzamd*aReA)mO_2Gg;P)PdB23N>?l>5A$i z9?y^Erv{`2RBk_6Z^7R&+AD9<$Cs?AEaLELqM+kfb_`cjDZX7+hAg1G$PL-|84X2t2R=pSXYm{g-;7S5Q49&1$%5eg zDN6eh)vrdUs=Y>8#7K3{U{7Q@#tqzC+R?t_&4P&rqXb`8R3{kL%5wrUzVLhyRe;`r*NgiWtv5`)SpB^jlLc*DggqjhTs?oF z=b2}V#4*pYhTdN7n$*p0Tt2z45$Br!*x4CU8%~hNBxlY8ev;>C9g)##4h{(;h4!_ z_X{S+TFh^NcHdZPverqb!GBY2O`}uIehMt9k~oHPt6sc#`OBK_uI1JTju?XpdpEX9 zZqI^COPCx9l-b+jEKB61bJ1TCsE_OxP8sMtOJs(IX7G?*zb8Lg&~tD}K*Am>NUm0% zjQ)yQ-tm-EE!J zd=mL4cNX=6zZcU~{wn%Ppu_C6b_vKkhYKIWw)O15&<-JCL_SwdE}k+1&0v2canK(U zY9(Q4oc0G}d}ReW*!|rOx?4sxp-)?m!M4{dg-zl|2m8v+n>3;#EkXG?qDkHrRo=%+ zqyxcIG0mK%0(PT`;*A+9hix~h@FgYV#%MfBb{@&PfqIj{i>3^#lj*R^RYTwwEM_9m zrCc9o=}juaC3{9xZWQ^+2p#b!x!{Uu1p4@jmfFZ{v5UXIV9!|RRKjt1fq*s>nXEHo zu(SxWC>BVJ=w|TL~n>kpR1G}xBJGGb9f+E-|mP7(%uA$; zLD?P{fQGcfjM-7%4gl=n#U%xEpSOA_t3*(atx+M^#(X@tRnaWzTUl24Gc;}t4FeJO zz$jdjRbDc}+)UJHQ1-2^VYRpA-$r}vWA^bV$g3(EQo##abf_Q`sF)lTy6cIAPm|*t zSG9cnLry=QG+5ZAVB6jbr|i9PDN1IlJJp zMp1i`!uox3O;PMbd%HodaUZR@bKu{Zv*#3h~c$;qXB1U zD|_Q)anFK&m$aGd128U$t86^f=)Z{0m$9+|%{IJDa7Imw~nE6zjV}_{%g~3$d z(x(FdI~8QdP-TlWM|K|VT7_~#twRMU7NP7r)hi$e9Phkf_cT(hHEEZW6H0(4g|RUj zvZp7J^rII9JewM~J!O0R%1~TR(`KvBFiEtgT1%wbHaRC6*VKsG^=`6V`xyI`1eQ@M zGob=W9(!1{uzl(&kdiyTuA0*TnhrlT6b`LBuS5aqSq1c-8s*LxxPhn%j z(Nr<2l!5#sdM8K1Cw7`*$N>|x5!4NsUU5`!Z1*|xj>7R0G4i&as>xUgF#E~?;8PB4 zvloOVd6*fbD-TM-Oo}6wp925bqT*1ZURxx{KR`4N`Sk}M&r657O)FY}1~$yNSYriZ zS-KdT=Rc?eKSd+BBwR6Tn(q~dQTD=AH~)IdteITkQhXw)-#>VA&Wc07sDCFQIDwg; zy~ndELw`fPX7baR-3PHIM2QQoxO~RZG7DnR(^36iOs_TTR@Ca+?al(tfu)V8%`2P1 z=(VTwVFTFN>eoRdLG>F>uMbNP>8_Gw(>ZizuWOFOjbf9$^M1ZH8*&lsY7Ay0Nk&tyYC&+$Bp}1 zj1%~1pd-0c7o|$9cX%d!JYiVF;m)%ce*09kR8H_q@IPQpW9>fNEBHzF()=^Duzviz~E>8$T!dkwCM-1y?qF1;U8H0Fp#a5LIW*!c;pR$i0KsLB40AWqqG@-EF}g!d5*(xe!qX_r%eo@cJ|GNzu; zAYLba!=p~Vp?=(9;*#If8a;D&^B(kTbXwB8?%s3P*w-cD!YY<3k3>|AUoc<4XN>e5 ze1kJLgNstv$XqefiQQ<7JAdpD*TjH`c~>Y?S#1EnGT zCd=n&phqBF&hxq>x!BJy4tHG~XKgqOln8X9pkGSXE<3%EEH@q{v$_wdwWj`1U}RVQ zfdDZlu3o3VNu8m?WiyJS1<;y&NBzBZm&fsAE5uwA*`Rk!n! zc%!?_8&Q3S{GO37Nr&a3ZC{~tOTBIDyvruS&ALm=ORilpoqu;=IONQI|NPNQ>xcZW z;NW@ra!li$KFHH_j~GxgyfcHziq{7ZFT>F9YOXfgf41!-;V;R#%TfR8c+eq=;zc>m zy@^oJocw*POiY>-xOVl8!gsvdTdu8*tHL;!;p&$`-;r;@EEd(K;P>)Cp0^;56llK_ z;g>yK6VK#OG@a~q5;+h!KOfe&u@rw<;EC*$SE=ahOQ)j0d5za^cpalH8aK7ko<2AfES*GzTGS|U;CdP4HUvZtnf((eg z5_-+vYdmv73OpQ&6UDg>JHK~uWGN2gRJffrhetgRa^?7-uCSedTA_GMO@4T)%-r2x ziDKKA@3Y;P8`Dn=J=$15(QtYEw4+p(6yyzYo!>z zD73xMPXg@SfbfNN*|KKC*2HNA7RCFzDLFU7xVF-0}=EE@m3a+onF4yv?~B z-`yS$8c}=hd%lZ%*T?221f{#$vyG+1HFcA3j0^fDG>_#7)E(zV($y37tGcdH6qj4K z1s(iiBafVnV(9%1!L=t5dwel~vh_z0T{@c-8NE zY}D$@28HGLw4~V^9M@)9U{`}g8fGpB<(mt`(ci_qR6S{8*m@$^uN*hl&OE|xs zz`tJ!>2c@eUgW+h?Ux#*`-&{x;4#US;Cf@Mgy&hCw_&vT;cJmx6ZDO)Eg!stv>oK( zn@`+}V`hCV?>iBj9*({f4%bpaA)bu_5{E>43j zSUG=6(10!;9aII2ok6uUSLx#G`Ym79y2B7!euL1c zgUo@1^*P5^YPFa;F1|)FuIjMvYx0ndsT9PBi|Y0KEHb=Aaa6zh{HT9LWYvVgQqAbW zrRp&HEB9=weS~yW1sc#TD zA422Ys!9;pDVbl>>a@Q{7Xe9id!VC9C%v z>is6v#?=}^>q9+PudjZXdN(zO8aOh3q=BuT&9k?Dwt;h;dBSkqupy;B#q)f9W`pgx z)P%2JvmYzYAS-(IeNeqi^@jMkc!PPpxhK57xdAb*I^jL;-7r``=($wC(ZD)>cn7`3 zM2}g947`$~nTelHpg%+Y8E9}}Iva`I$=NQM`^HJn#KA;{{YU0cOCvE;*7ZXCG<2W@ z*9$@^G5psS_dDybaGe=SU(Jy#6uTDi za^=}mb!qcW@9AsP?>oCXGyS_&dU4mB*WdPrj)yj^)~|Xx*H<@0j4DoN2}XC#Ermt; zUF)P#w8sl0P}MBmhvz4EBMzZNr)#`*>x8}`p?vXOaP-k{NrA?7tr>Ss4)ss2i4~>! zmK08sdbDRrQd*oND|c5cs(!PzsX9cduw$yMv}3KTu{&5?unKEtd$RWGk{KNf_H;B+FQ5ELYZ;D0`75G>QmWXN+cWjtilbC9)JVmv5df;P^~h<9K6v%=k81<0bngWcU3|d>GOGoRbK8a$vk(J4AGL>2qneO$*%!2OnIrm+*&TdI znk}Iuak#c5b=SUqj|aT{fQLi7u!l28dfSC%ykHDr;ADE#LK|JAmU#u!607}@&Vt86 zf^a2h04@pP;m!~mt^+N>qaazh2vjucfriSEXsDcyjw)+IZ)8jiFNLURJF)B+?4iCgZ}gk;&*+n7x1jxjm2{QB0^|v8BuijH z0Mh(b9QkNFQ@gsX^j?C^-BYzTDW~d`OzjAUJT?fdXxxnu!Ga3*zKtZhQy`wM9au!q z9JNNDF*njN{_0XJI^h3;tEWDJiH`;70wW0As9S6l@w_@fvvRxpz`P$G^dOQ&0lVgPA@-+ z?lQALcbRt8?TGF)L`!U&v(87Fv3`rZ%CcK%rpqhcUIt8FBIB}VB2-z^Eb57}1JIS)`$)&y zR{Hd)AsSZp-|fNyBLcZB?=h^G66vXpO3}whCF$2irRfu*65H@m$#MA2q&UK6q7U`Y zvRyP!*EC+AMXIRZXuYE1#ytWxkA;ZP`?jh=B^XJskyQOeB zo-BJgp)6-Pe#1JpgtmRiA#E#|K%6~GX+a4pEH9+q&h-q@FTmsYst6tXIx2Lf2jGJ# zGfwV%U~u;XFb8*G7y>I4XB{HYd@1Dg1_dcqP=yoes9_szB+}DI)6s+Fzb3qnnD##= z{J$rA6D?OJg7!3#qjsisA{hHa9E41YsT7m{Imsc83{lBiR$4THmB_~L2=COhg_=EC zdm>F($2QvO_6xOi%>^;&%jiw$@Te8!I4T1*je4Tz%OcS8<#)z4Or*y(%%rIrriJ4g z<_$$!xUJ{pIOC*-9BRPDe&>i@Z>u5=nc}<`^CM@UbrLpEp`E*zxA~d;I|vey?CxK@ zJ0ME1ECN*=ABH?E#PFXbrJ-Pysg}1evMz&J{E;%5EW3W3Ssub3H!-L$L1OE7 zbUAE@hvr=z|D1DHil~V?JFClK(Q{fE8~Z;*(}LS!$Bz=arYW_1rCO&GdUCpv!4q9E ziO^K2-BYNiqGkDv`q|lN&cwGLt|nvOyxny?0F!FpUE9xSnWk_l2>>4Rlx0uXHw}Sp zgvagEow3o;UIrT_|JY`Kuw}ISkuwZf#XqjPW|eGPUr`UPAx52-Y8?Xss%|8+dA&-B zc6khZPR!D5?JrrSvV)}HW}&l`oPQPTosmbFAMulKF&)KF(;SHuGG#lfkAvH;yUn3FQ zH-A&7U|LvB`?z?yz0o~DY%UI`aNCginjJWl(4COS>R~U1E#2u&!0jaMoM5E0@>zZC z<?ZkCeBC*bJO+bA%3ZN*RFji zaysk#{qw>7-i9adDFv0jd%Q|&aB%JQW>j#gR?7kRhSvI5T)FKo5bv(0m2>YZDST)W zot!)wjmvq{t4N;M*stz3W|(Cdf9a=>8v6l_>Be-+x*$_rQB~sw*8I1(Etz`J#<-}r z4ck+bYbV*4UJEi$!ak#dtLUogmh10(Xo_Uz4|-mES%nva33GWlJ7p9RAZ%1oP{w#x zcXXYk7bkmR_S0KINI8Ram>vMAx+OCz5-3K>Pd&+=o5cyo5h`lk85`&yA{?8p+1>1& zhUFD|W-ar`{6|eg`K%~of6O#breXE$6Y@W(ILlYP3QbixZ}PIIcCYnT2fmkhA9Kyc z;=%FAqt&RfoGDBMpRPG-_^rRf*gD`I(9~ow1lTd;6x=|+s9uIkZ|!4xFuwC}%vM+!ICUL*UUJPePcKh! zn2_&>I1bodHKrOY>?FmWv8BU?=%<3mZW=W0b2Wj9aqPxC-ZaR!M06gBpgui3DX>E@ zSH4iB%({;-o+}-HTyx&jb}GVG)0KG|Yt!d#Zo4?WFVol$gS)F#(m3IHPS*le?bYeH zU6_A%s{l6r{V>OI^*~Ll!Nm}}Cj~vKr8LJ9*U2D5Y`R4$Wd|_k^F*w7{kI_ZLM$0; z$0+#{?@Ab>Xb{P?(w#qv^E;C}Me{t9JVgO=^+Q3N!hg|yJ|IVq)N_Ii`+$_XawyKH z!;V3~i%Air0H0=y^!#bJd|#Sr1=~5ztQ%t&DdgCk4+(gEDfrKzc8YB`z!ctG4MGBT zhIc(kAc3o!29UI(1DH>Hh6i@Lck@c#48I#j%|~tS%5mJ;V(c8|zG%~EGI{VIvdNv~ zu0hu=cm;s=Jpi;*oE-=coI3-tf7#Y&^wwuMQy)`FXxS!xggJ`#7L9)2PHNZoht*Sh z>yxP;9!HVeWSbPEsx{w`w`H65(oBeeG>%z#iK8F7R#sa&pU+-|Logz>F=j9*A>m1d3QMF_O}#{4nt$80S1?d+!A_z-ZczDLsC%({L^ zvi&2ar{cvzyliGyMU5S~QZ0_ZyVM>lg+)X>d0-gRgWClvBV8gmquToQZ5I$YY(=(3 zNVcnTq&Y5ZMfS7O{hndV*LuQVOo?;$bG{bIKer>lpz3-TkN+wY20nHU z)jlprGJ{SqKj|2{=XiX0?4s#{((lQdKGef5(g4##DVIRBO_uU?NUAvoGj2$=6DKJ< z(e+P}vGp(K-1ZV`V-elxTI$=1%&7Uq9%+VFlECDo&vcZxRnPX*44c!G)vFF?pW*)1 z*Oy*~svR@Rf5nkh3J z(0DZ{D2@=@n%uFq`i32p$ws9&D~qDiArZ^7X``M#I~hC3;AgJ{$!4&Q18S-i1Hvq6 z7W|R?Tz35kJDv9JeDrnq$bAO(!CMc3c8#tfIno2}_}oF4){vXfcf98_Se^&Z=afv8 z{v*e+MBR9$af_q=&(8(Wr#GsXrG79oJya>ngMQ3#@{Uc9B=ahHHtly6?LmW~&t(N*I?@_jjBPFtb!0cPnT*>io$6KE2)ZAXYmnW>Z6?M8l ziu%-@?C$4BI@j3f>NXWJ8PdogGyJ}h!W-9IW8HY`lbE7RQ8$bFiuywcE5wCvqQg|Z zDuNh(X(6FgpLUrDlOjqb1MR1z*Q0Kapgn_sP; z8MNAh;78x;f-b|gpgFi2L>mo)v_^TMO!yBT+M%)lMUt+}RWu4FQ}nTyV#ups8GS@G z7&RtosyuFMHa|XWF3CU=_EQ5f#8VPK%V@k;<3^F^zB;a(*P(;pIHYd#^$_0X8zDR! zkLZ^Jo9I%3?R3!vWvFBHIP_)|E9Qn(MDFI|_@hE=zKCvy1`x#xYIS90U+C^d5-6fb zAh6)4Z}iEdC%G>*GzBgbMlwv-Q#zN*Leh2n0vY8*P1;&HOPU40M#eWZUeuX{(Uj;9tU(j#L$mlN@ zm%T%d7L30cUiJ-ar3zY4O%r?e5Hi?9`7Ywu1WBr zj^j~OD%wkD9POh+UExlXKEeaRLpV;jPc4{EomL`9en!;$Aq0d7e%1&2z~6Nd?g-^> zzXMaSs1pNcKmCv|S9e;$>9ZC1ABh#k^ttU_ODmoYo!&bw9{jq-=;ej|L+z-#{m%9T zL1$_twG91wZu$Zu9nW7J6XObG2ThEbH!|-0I2=PefR?z9S)FwY6V?&cU6so{pyCj5 zKdB;Vs69P&pN=zzPp2LD7!kFxq}VO581op6;cDW_he%kNR8fP{xC7(&Gm$TPUy8Na zp(shnpfgY!J+O@eHwX#A)+YDfJ`#66aK_W`viS$3nXtrjXyriEc#A%}aDV zr2FMUXIi3D+t6)*w!%6L#?8kzQ{woBIBL&sz|VwuhSj$8GI=&X*e?ogQsdak+d)G< z<*q|Yq8VckSHw0a5@hy>j24Nc@CC&J%A)@<$0TR}5Qp+RAh*^>1P$?v3dss%YYOQK zE^>S#V{2*VZ>X0|PLBUsek;U&UqP9srP)cHIly*%ucaJ<<}J;i>&zVZiD$|sW zQ0Ha`l6!+Vr75N3AD<?D-O6M#_tD#sUb$WrMdPm2{^Bjxv{_&|j&uN7p`@OQL))n*Bk z>MGU&9=gqD5#JANUm1%Rj<1hxNI{@A2xZQ3It~A3OZ!_!IH{Wa1NMWdMjr@E{}xqB zaJw=aPw4Zb^ZKI8<-ZtI(Y*AiG`-?XIk@}y<-q3+!k*@y%TetD^hyv@G>LeZyf)sM z*lEv^+D339w3^*qR$-%3He2!=CG@RP1avzvof5D7|0prf8|CQ4s?|g`y6su{GsrU` zG2z2?wkfCCc*~pvS@8d&)5%3E2P3aopBI+@pzuR-+nIP!b-YN@)B@QZHX0_o4n&%g zZX>yUHSv-LVTvv~MRO?OBH+t*rkL_MlyF zFmc(q5hdA%pP1_!y;C%(1MZG;Rnw_nr(G08Qcl||cgux_zJbBt9n$qUUF#&kI9yf! zQ7QP@wBR(do7N;8*^azW`*hB2ruZ3>cR>`&fL9%w!HjVfs?IsNp=Jc8-MZNhlC^lG zPHpvExO8M85>|^thSXA!^0ha>(Y)c0dxg`N3Q5ae|JHfR=RO`lSJIB4uXktL1G#7C zkbni>{9-&ohSwsf?G)URwd@bqvY9xFZdhDNTlw(O-2|pH*D)H8CYB+Pg)}%OD;B6f z>`k6go}vbk@#>UmOG@h1g2qjCfmri}r+2SDYJBb>t4h=iOAVzy_A5JA6)fOa-YC1S zn{#!lvs1p!1BFXo8GS6-K^|8%jlnx7;%l8#@#sZrnXGKnDJMtN4DYn_0NVjp3!o4W z)t(?krCwY%-E3xo!BhjWLB~J7wi7q82VJWvXA07(z3?ypD*Y>A?B3lIR~MOyAoQuC za+N4BerY{e@K?i7^V?Dx0?VAye8GHe!HdJ&X$|UM5%z=(=S}s0I)Ze7kiB&Ij~J>B zA=PgjvU7X#m@qevD&5o`i4&KU2~Dsi?r(jFws&vn#k{&%^i{fKj) zkf-aNZUqY12K|CxP1VauQ7+4gn@-EAoA%3@o6gJWB2K_mcaVD^VlS6rh-V*R|3N<+ zoPxY4^#XS{%fb3BkS|bnc*E2zm*TsIM7A)yf^Pj7$P~JcAyT^5A-WVGMX-Ssfvdu0 z`4KvjxpD-%lg>YR6#~jOM0L$Z0#wfypddozDYh)FV4zbnt)UmB7vs7+XOkiZ8zIDkYO`wz5St{iGQB_$OUA$@qB0< zSm5-FzfKg8$(X^G#q*w%Kx82Skww#GXfY)!FRE96u+7WE*TZe30cjT;>ry-~_=|P| z6322-d&Q0oson~^zS<{91NcqB}@4=y=k3Xm|1~ z^m+1kNZj=$avzwZ9rAAD-ul5kL?J2TR}_`K05T*_noN})*!pbh|KUh-iM4AU^4y%` zItnOIN95G8DO*o1H+Hi-)~{T$nJ-?OY@cjL19PUXBZuh75$0TDMSydY_E)LarPVao znS&Tm6>-GIm`{4BJGJtCw!)vs8n886+i!+NK2vYKa_^31R`kA1@nH7~?|R;8@NyY% z@Nwx-`mtn~{NoJ!8C{22gw%|lb~ob<6VN*gh=lpcPan;PLVE^;A((0=*FF8k+#ref zHFJGj*}`tzsAssYq;D6&;RmC!BwPCBc;~!R=u;>Z$^5-fL<@Teb$~TpbJk@@CR?O1 z>(%A{KgqY;%u=w&Uo%et12O-MHyG<7xzlnzkDo{W0E~d`0j?}%&2IVJK;46=1BP}6 z2e60`V9kD@sPL}WeLsA%`u#Ow*m2(Q0Q^w5zk9@-SH!pjS&WKPzMKMUkrHj)3%z`M zFQb^~oP-aiASAE;7^VjXGGl1HrpxO@pcxOeP{ipq6h$t2-3}@S=(96~#x@U4qH4+rjcEgBE4(9}?CcGT_tdqgAH+kU58FBi z2}b%G@_CLtgARkejg}092?J0X7sbh>Z-pJaXB=3#fh-b z`5k2uZw5f3IRJ?!#BroKQD=lxPC<*AiJ{xl%R13J$HM;j-f>x7;stJxQef%Hb=a(IIJaFd8kF(nFkb~N;V}|>xYCHCH{MEo}s)M)D)kZ(XJUbB2 z(Go*eP$ZDmv7I8n%pZsK>%83WD;U^zap4cTz(NY$s`e9>Hemkx_@t^yOdT}|T}Mrm zC0LjMG7h(dY=0RYcF+y@i?Z0+ z%g8kv91r{Bg1=;KIr8K$%jN~rxb_)R{lD!kBosBO4~>)&(cj^nbg@wlXkV>Kh~8KH z1^K?qx84jz3pq7Bht_89xDfW}ATsZs7(Y>d3HmS^2q~A{N9UJWp{+)Jpq8?hq#=;r zNi=fc9NBgqBc@OYth>>*tds-?h7ik{Bcop)eMrA9T9E4>ND@4@cCpHs7W0|kBMb*k zA?lJzl>Ss?)PGxqA}(@!v*4NO|Iz1dT#EM&!HXAnwuX^*0CH2p;eL=oxd9b#@}Dw` zqArU=~tz<37FSmwta3ty~T` zd)c-JQRnW<&;FPLN_9%+@6dMUBY2y%Qv^f)Z?)gdTG7u;Ca9q%dgIq?&Gj&1V9e{# zA(1R6Io_-#|1l*qE`2OQ>Nh*X6bD>5d)q3bW!mbadGWIz9A5N6?N!5?Y@ z;?l*UGF|baI$fcnDqXql%PjW=cW7u-0LuR*{c|ZTkpJP3LR^U1%t7!XhBw@ASVRQ8P_xF!b_TQ zd9X6o*0g1#5wQ=@HR5kh?nF^1OQMDZQHqCa&D?On%EYx6mP{Be*g(9a`)pbca+?wT zMf4ukDF*U1cji9+Plpk11GSf3f&LA@+=*i2mc%m~0PF+;^?cz1G+#bXtu|?*&Y6HV zSndRAtJuKgxnv-mYLv+Jzqr;2w2C6~d==4SycsovEJja2J)?T)S+iMu$iMB-4KfNV z6)wG$5F}1{5ALxIT5!NoRQA|oSK9d|sei3jHtJ{smYiXRg z-41Pot`;nEET*tp?Nv0U&2Tad-G#EGW_trW#k;U~YRj;YtcG?WgL?zL*>!AB^BB9B z3D7|7xo+ZmrJG0nOg_8Vof{*x^R|1}Yx#$H?{bW*dcw4q2CEmZ+tiUi_Y zL>!A}l~d(BsQ^7Ab$l_O4KXlArJ^ldAJW4nSJ6N+Lidq`(9&dUbRpRX0>TX>2RiY! zd%uT0^FoNK>Amh%&*5701Yo%dISTd3+LBg{<-9+jHC=NAD1{*AN{#dG7>`4BP`ABy zsC-^L<9t3mR6g(IaX!@FXaVlQ9@M(}Rm8XOISUkR5$&D(hl*;$3P7jdG&l&xkU!aJ zMK^k{XZ7rFu;y9$c;sy`F5(I*!y?JP5HL216u~n2^*{@{(M{*U>s`Fcg%diTkh0o( zpXe9+U1p0Ei`-`E>c8B@B)UayG!G`KjKoLlE{{gD$^)SzD)u4T+K7;&+5p9JRhtk5 zXl%gf6s?m_%f`zm|1!7hO49M#&A?UsFp9M4ubE5t#}6fOn+^9}1KN!UDb~dgl}M&Z%j&BB@-a zKEySQL9(Eg9GBJOeKRg=vu~Rq@`|rkzw(|wt|P~D^x6f~KMKI46+u7jJF8oO@%jJCPH zcwjc&j-lt8%PFUatN+yu(p=Yd=4F^NQy>A_`0kpX+m_0tUVezitPk)Oz1+t;-*h^1 z6c~6MK)AyZ*QcJ1J(6E$Kh64gYzP1mZVfA7Z|L$CpRoQMuVt}X>>8Od&3Nn8P_%BA z;{KDjiSLMcV5|rkOj~^o@=SdpGK@O_gPLdsPy}`2p*?lm%gO*~`adEMIEK78AYaLn zNwo-if6DbRRPD;;i_1XZ;--|Wo#e8>)TG-uV#TrcgIIxIVI#A#`1?EM(MJs$qW6I# z1~Es1=+9i4+U{mYrQm~a1jnNRkX%2pC48oc_{u2mL+_6x9M=#fZj_mKe2sJ)QY0yk zQ@k0}Xzq7D#Li>-G5wz8u-1b(qy!_zVKS)qe_G`>mqR5YcJ$4wBhs$v5mHiZCZ7CC z(gEO>%qf+LtJt$XG^)nMe@{N$86H1e?b`Ds+Qm(P3y1b;MTxw=uG7E@-B2eA%?&#g z55*cX>d*Ch&Fdg6h^h!@qAUV*NCfDR2oR7#*ujLkS0;E8YtOmybL4B#1h|f#Bo95T zT1zOvZ=DP_K`%^*1snq?x#n_#_a7HV8grNN7lK@i)a9)UJCZt16lV@S8p`}VtT-Ur z01;YBjEZH3LRgX%8b$_-^5kJOiUeH#U*yX<0z`G~*yt4ZKb_^8ext28V_4kj3cg2& z2iMY{bG5xm2gnbc2VW8-qi;-JlVKM`@Ty;f9Yq}&sxqRP5kbmKD)~FL8U+Fm;56pn z_Zzr@ihZ#dbmaY3QMLgNk4pmuv^=@os5e=m7x{yf5w>8shdV~lV~un@*{9gm!Fwqt z6mF6)1(pZvl^UGsp2>r~#`WWTto;T_evK{U7C$#voVwf~4iMFoSZS;aTY+85jAzDA z{r`(-P5pl)w5Fsdr5n$X&-i(Id%goa*AGOk27%?^yI1|#;F~qy|5uvIch-CMU1wis zA;`lHti=WlPc%7A(tq3=?b2@+ZLdafFF-Nz(07XOuX=YXZlK?SP6U+D0QVFIy4Vd< zKcp+y1fw{FNOEfuyf=DAq-9xjAIHDFJA)w4KVC%xUzP)NtF2IL63g;aIQP{r_e84kY~VhVP)L7r!q*Il0k%^7xcDlf*m_ zeTl8cCe$BPE0FZIXatsnZx^a-Fx$t{uaAUkG$tAQ_MJo*TnwF6GVvDHd-hN)9h78h zMY7b7E@4w{Wa4k|+hbSnf}q%+(-*Rn^OEKacW}b3D>q>~`=iaG4;h>`NG-|RxxaJT zAgcsd@_M*`*eAg6j`y8+!`}10^R0shFWN7v&%f;8`R211y7)^kpg!#)clrJF`q{7H zCG86mvW*}fI|WQ8Za^^le^^9J*=QTY1Ia-Ujr9Y`*mKemezui^@Hau?KlDxk5_R~S z66qY;PjjLvRPSe1^%cM*TqIgdl#bvHSop%It7Z+DtSK+06XvtI21?|-MhDlr{?V?0 zZw0+q2Sa;8A3b_K&_Ceg2c`Nj-a3pb_uJlqW# zf_nSmc1N(Lo&eI%Bj-2xcR=^{(;>+=7P;C?c}#jVB3)r_A@!7caFHXV32KCNYJRG> zcjNEsPrvL&rT%MH(R>x=$^}D+yTVDWTrA(Lh=NhULRvW~;O7gU{)@v5&H!GGm#s zQ^2NF=e2&=akt}GafZz!n>W?(ZoIuw@V}+-=jN|39hLf_D*|Hli9@+VZ~c7?miW5B zZi#pPs3yONTdU8KEhg4yIP;g%oc~gP1US0zX371}%?5LqF3)U$0O-3?SGOJT@Jg250>hnhAA!{^u}=Jy76W)`cY6p^Q*}7+;2S zW-_2IDrGo+AnHW)28Rxb`DwS{1b_y0mkVr2?Zi}b*a`)_AG{T)aAm(izA7Np%thAR z9F555EMwZ-iff*5DS8j8kbmVJg6GorRAJ0W2Vte4@-osZ)f!>P2=nVTw^;G4(MAH%qU zK{yuOcB6Slw;KG!cxnPiiZk;e<@U*!#GL_bk16O}ARhInjMhx? zym;8P{wx>kvaF42jKbVbmvhj`j_5a-=Z^y_z`Ja?5QaSWz;CD*nVI+r7;Axt=TjO+ zHFLu%S~Nb3tBVQNelrD_;{M{PApL$ltFiw&c-~_Tw=vUBUmN~bJNJmv*VVUl2eD#T zUOO0a#+$T*8v^7zVu#<{*bJ_iIOp1Zdqm;yh8Z~Xc9?*uw*eec&J7n@!lbz$ z0W9;fZeCi(v6w`ifa5QoTF|dVYoNoP1DDUeBK}>is2+b+kIM zgJD=7qFy24!4v*g43*}+{4(SZwU6yQZ;f2sN80LJq zi2b~sBv6;0t`VJ;@pXKyp7{9GcowXqq{Y9OWb?XX8Fu_`{Bt&JxpfLD{FT8R^1D^J zC9S4z3KI*bK7~!j+%Q=35bB(l_a^9#6b3yy7SlpkU^WLli;YfGdirn&Py($v^%t3DCVjrdyK70%FOJWOG z4s5$$_wet-L?x4zOOVz3h`c!gziW*kS6%044(Kc>gx|cu9?^MHVWdXK`;Rs5)^~3U zXO(2mtd#)+K*I11Qn*0NoWT!3d>QZ%`U~-~W})c6?&gdG!(sYv)8IO8&-ny-~HP8p*ROjn{I`N_SQVN>S4;WkgQSv&o_#iX0fmNYx3 zAyk@_S=#Z1RcJkVM}Gyt{q@L?f2>tKdDNp?HTCGlIVqe!u*Xk~F%^^qBgTS93>F`* zgeWa&}Dqw1n0HNQg>2h0rqGn3`!7 zB0LIx#=)R~l2&QCy;R8v2vK=%+ZNAG6RM z#J;xiu{IN#&1Q{X>K`z71cjQUM4`+os^E1&S~?lmSTJL1KK|f>xno z`13KAmWwdWjngJXgH0PHMg_!96MIZLSEAqkfS0uo1JwulS4S5=&0yMSbHlr>bFqBH zGNGSU7&?*UiaUsb@r9$fhd3H?SN5wYT(18je|7rG{U5moXQzz}M7sH^81v6xPkKR? zq~mCF5R7}YU?1$-7LSz87TKzH|2#dBbtR|%{0YOz8b^U}%RtPR3zr2J%dw>2RZbr_ z+z2`$vsU;0R~rXwHt14ffGu26|4^hQYkjrF?l{Pk5v>Jv!8gx;d9UMX=(AI|9~)0M zyc?TpA4|3zW3-nJ{e^?K)y2fTexmcH_u5@RLQbKE$0KtMxPIUuCMT8?r_1rPja!&L zaWtb81;&%iPHv&qHEZjr7!4tl0v5rE-?~$@;;e4or;`88k514$nlaqmA;Hu7gnkC> z{|Z_Kdpk=*V+6vyR)gMek+*c__$R|V-0NQ%(PljE6R))xd~u${M`EQtvWT`VTYu;P zUiq@S=Dy2D&_1=zjQBN;tVanwE1O|GfbzWWnH!k%Uiba^W>*<2iFL+_FV5t7&(1u0 z6*@u!V%9V7)z6Y7K^e-10ZCPcJ>w~fIuJkTDnh_{PvkB=F7|ebR@PeEhCL~t;D{_- z9(@_lG7A;J*jm;5R>NLML=%uQ^|z~u0lf8jz4Z@%sbYCSSduD2XUs_4`OOmjV@aIr z&NTxc5z@VDU@3T8aW2G8`*o2&U9Coj=D@m9A5~p)d<(_WV%_NCp(%|SeTnLc^QF6u z9$tPFwCdbJJ|AL!C%7y?e1?EN$o>O&R#@&~&_w+$bEHMV!JZP1L*J?z69d^y&Rydi?c`+;QSJPk3u7yL?z~R;5Xm9!JOL@L zry%sbQQ&MNb3`V+v zMC8_e9rqZ-r0*yE?Jm36tFE(rPg6TO?p8p!GVtzj-h;kiCoe-jFF)1q-T&Bw1wsF{ z39B&vZu~LMK@L2^EgMz{_MY_{bsOcyKZp-rZ5h5AToo+I@q5&P`0=lY8lVXO9yRzd#Y*bczQ&8{XV!G*BmbJ^?C^0evtevvuolIQ!pk_p5#`vj z4cQ&RY7}Q&&bPsYR|&ZxZz%65D2AT_Nxt#_06`~zX$0xmDJy0rQzH5*TbW(M)Q(0* z^BJ5p$SipT5RH;SdP#ms-|*mW?=Eg9dFN#NU5{Lkw;BULnD#9s4>qbzN=`X5@k~#q z=M;zlHex1q+%ysD?b#lM)2~ANxp_bP(Cov0b_J-t%J{Uy5$RjRBhhXw!DtT_U$ps9 z51?dHOq|NjPd)OX#ynRmx6}0n_1Xwzv|2Qw9&A!XNU5o{i?rKB8$`F)A4S+A6x7ZT z?mFjACr%#+3DyGVZq;|Hs7HP=J~0D$FK1t8GQJV*s^b<_-&W6uFh?9FoNgCtw?+sN zln7Z=9QE~5|B_FX-zF)p@vQnasqECjCDi{d_I&u;LTXx|+UZD?=eJT?Znpb~* zyzt_$Z2R*0={2C+ElPaDE&3ur>eSI`;q(fFEQpTrk~D1p{_|OH_jorsa3pm1+0Ya7 z2LMirq#Sn0O=-T(So zyuY;s@&p-#j#$2*#)JR%>pSTaJ0#aEne@$;%}5~o8)6n9(@8IPyLs{8dn}~@6?QG| zFAy;yKG71E3w2+9@aj(;|9!d+)<;s6@L9d3qiqjf_o9h?-ga@Ye|{dgBPjQx_1ddb z=*4`}ZzYEBCdZK7T9Zw(5$D)Xdv7ZgR}gJp|0oKLt5H#WGxYOkvtoD+BX;h6*$_!{ zC)dCn8+1z7GQz6oWAjEN6Bx7a{Tf;#SAV**wt`D1UjD3kqPXTad0`>_ldw&p)nIe{ z+!iw`OW^wq$q@WbPkZ`ya3|%nO>jB=M76tbK%-)~G@+x1@CC-`JklROIP4K15OQCB z>qx&x1<~WGJ9=4$r`4Jj^;P{jtjSQ3r*$y$(=6B+syW~@)Yx2j5o?K62%r5hwXVVP zaBrJ!+R~Q)+8KtO_`XMI;ramT{Y3_!@z=Q^Mpt<}fv**C(?`6Q9n>Y3}PA0>B-@3LzlXi_o{PKk#aN}n*6fHviP^?MRCcMYa2#NF+FWt z_t2kzj5H~5qZ7EVQv(AtYW&3&xTKEy#oOH2N&JgNijRATrd}LOvAulG2Rs=z?y__6 ztd{SiV}-|?Q$$^xb(HzmH=A4kAvlkx!k?3`b znCY3Bh*b1a3?v%A1$(MqgH3d2M~)619vC3U`kN;nmD3Un=iv^@&3ZQJ8)4@zcZ&xH zY@5VwwS)b9yA4qnGUUe|-|+%Ll7Kd2s1#0n23%!B;^HuAWO#D-L86b0>V=wC)m|=3 z51f!Gw%+S>t9Qi@|ZXb9k{P1GmF0*Fmeh4dI z)%p8mC}cQUnh<^CXNqPDd+H7GYwp|2>t^yM>(gIm21HYlt7!S3}PoX|c>A07KiG`J84zssUs zXM7WvyviijHNDC~^1JGjHOSE_8&0fQRN5mW>1{o;sn z#jdWul6rlY{PW-IQ<2u{ZC&!@BkG-9G}*z$Fzjh*HD=hdLkc*%GOs!n%0|$xJ$rRW zuDSx%$aQj$!QdNmnrxFe%?w3(ixeS!gL>&AB)j7*GWQW>G)B|EJXu?>`S2p$Y5V8@ zWEFz#Lp&R;Jei7KFaF%GZaTH!hs?x%+-1c$l{@GMlcFvc79x@sI=V<=E#TJ+CC8EOY3;e44545%%v=}PLII)#>V*DB*sH5c(?Fj<* zhaOBq$8r2YcS%JcXDFp&^n1r}h|#L?%9p}%8!|lRhW~iK;?|=Q{bc2Kf5)}? zkGIfYoXuBmQP-ZF@mw~4cw0^@gNA2|#u?ADH}xeP2hVSx^&Gh#=-63uyx2arQ$AhL z=}8#2LXh>YCF1up^un;dXyb65cCEcOxf=6FUw)$HW}6jaL{y?%S>MlJy&h^=FWZV< zy!QT&nwhuy)7Gkget37fpS>HidS52goNyrv{``J)f^O;K&(`FkXA*z@JsT^3%EBo# z&&Mhjlaqg)`jl3?d5O`Of6BjkP2t^6p4nA{cgX7e+saca2@cnw^Y3g_W1Z-uFNWT> zMd+1$twwi>1_$sLAHNoEfT!I@*4&TkNC;5c~0Dq zvK+I^Q2N%9`GEUj`A>FyLuB5G1hLQlR48?gsdT(@!JDvo@>^QS$o#{7-VEHax?{oE zid+dn#%*thhnG*EvKT*iRn>X$oP&CBpUTRjC^4tt50uZeB-|$4IYNr;mwAd-k{nz4 z>V&&zu2UKEcwOMbA(v|z>K`e&KAGBzb=P-PuLxwh+2GxL84lLr)Q@iOZ@ShuJ(57y z8=7XQQ#LKERt^zA+eXe`YR_0Tiy=^s!dljQ+!7J^Xt6fSKK2c#N~ESLrRh~`PSd6l zV=2;M!3ZOB%3`Hy>Urg3^i799jSS`qRt=YLuGGx#wC!G5*+IVHdB1hHK{ao6uR+s~ z%26JDeybH8da_srKkI$Cf|*!QXS&R~_i~}_nqjc}oN}rHt@BhX{sJMe^{Qp6gsWel z;T1t*BTOjYhrm?N$v?E@!X53^1(yoLD;Wi@u&Wt$Qp!qKgDt4PwY>F@QScsA_<(!3 zFK1FVsWKPsoyWPye*65M<#fa=)PuFhmyf3^jLj&456Br?yE$!srM!>zKsf(XA9YQD zy?HpAU73H|&ehuZ^hOG6`s`_T3c~v8MQ=>)saCr{$nM-geo@I+qq^@WR4PtNS!kA6 z-~5WN(z@^RJpWpV{nBrYGxG2NYFk;em9D@3QUlHqehv1e-`P6g+>8EG%bUlpJ_&|s z;JYkO=Y##>7iCH=PL;NPgzJGY%Cs`0DNrmj4IOYo;b;8rqVT2UQ;g**5V0;=4US~{ zy1((#c6Ha?FY-YJY=}L@P`D`l{nT=l+8U-{eKaS;i4+ATa*=Em`871DrvRYFsQQ!f7>)*<)o9EA1 zTwF4Wmj`$IwR>Rx{VtM!!qZNCh?KyWuSicmD+hp6eJ&*)2Cqo3cgfBe3Ghj?-a zJe7y@O+_ECnNyCUTZ0FVQ^C_R&_>eW`n~?TH8S;v`ALOnjdC(R%lzWfwg-q!L<`G1 zvd(Y2=tzUPbNpksdg0O0KfUj`9QG)qr!I7#j_wq;Jn1Z#dbv(l_8T6TuHhV_E^E*; z+;lUr0tvoq^<-!1gKE5P$koe%MVmtTpMvlb_P^V?0V&q*oUK|3OtV_KK?ToZw;`_wE7HSYCC@&bab*7SGb5o%=IQK* zpUrGpr|0pA%v<9nQFqFCWWOELueBE~H^+mU>W$-eQgQ&;v73H$oO z!cpj=bP2)!_PzA!)DJ4u%g;aTon9V&e0L>EMbFFSrow(JZhq49+k);tt8IWYJY zd;Yw(h8Ji3T;vnlS%q)>%o}=pZ4ON8#Dke!F1~k)5Bx&F<|EGLaz0P=eEU9+a-8F+ zMAjjby+a2tnX(GiJ~-3QIDTlpJFQvseAbzxh!@S3S?iUrPg@pBH)DVM+=esmTwQ zoxHts?@MgN-YWIsCjN@wNEfJo!hmB_~uLB6QVR;@PL zr%rd>-z+u}td;sLwJ5MFH=}6(a>J01L*@Mt>jEcyf?uWUVaCKw2QwJKN=LQ|_Z5TQ z`BC}VhWPD(Ls?yjTdqV9dZ(iDV>QLkuM$Fk7d;Kdl2(FQCaP#}Sfxh zMdi!(AkEVi$O0$&2TIigr{_r6JL+v)Wn|RH)=LA6zMOi+y2ktxqH|@UM`X+K?`;dA z<^#^K9EoKgj=JsDT0fn4&ek<*m<2Sp;_+7lH*8YDoyM$li4q2G^T&c_-|5aJe8g)L z9_9K3Au{uCFShkw(OIMzW2_#A(gP|#If92@t(N5;F>B zC(wtlgnF`;j}G@AZP(Sy|8$gb*w%QsDIxmk+{3tM{(Z-j0TpB%9=yWCSyn&xeH*+e zZ8H!q`RqE%GpFYX&~Gj}0ei49cZV?_@p}Dcl_qV^AUxrqIzx70&~ z>i(rZ{rXB>06{Tm#fxFRex)OQ5)qKAn!b>6lBjPvuX8#)JL`~A&oCKx^W%dEqHcb{ zQj?}Z?%a0r_OOD>(^;fc{t3K=70*Z${g}gUtS)E2g9&u(T@+OKRPDo~kIoCKL8?Wn zHiN$x+caVABF520MxRYXs;6Y8q^fM2CfvZX2Qib{?3x0eDAcx~WmMd?HcWSP2JQyQ z@CIBX82F_Awk5o2aJZx{f#-wC(AfheRrIOAx^3A1;_OYMn#{Ux(Xv5H5G@r@KtM$# zfB~fykiG{65(8-HN)ZTwKnWp~V6X%MMH=Z943JKeKtLr4FCg$*mK|*p2u%>EQhEqf zK?pCw=-pI(9h_`j(fgNIw8pBF`^_-E~RP0 zL@=f2m>VS2nrUlvoddOBY;s|eQDtKDnrSh%A2r@L6wm}(~4?LRhkGI|^*(cUOzyA>|`MqHm{ zglg(lr#iszY(38T!>5$#pf6(Wls?P#SG;FKAah9^`Q*>?PIU- zQ1E3~nQCI6%mKbF|6AoI`2B_^i-Z$;q*54MFaKMJQ`z66s59^aT&5JPcPOErQqO^c zJ)wTkh%mW;9{r^IhK~(BQBpG^G;qIfD$;>pEEnBJ7FL)$^~t)+Vr6jms5zk*bvp(KENS$v@(BZ&jqS-!L2sdiT~viUIr)rUzdnD!ljLU0*;Jh-kV%tDi{3EQ*#_y zP-BbpzU$$Fuk*iD8YsFOqTOUy&KjN6=eG;Z?Rqto@0gECAa7`WX7miuxAkhPu!HRz}iT%m;_=xtZK+9{)1TEw}`yagICwG_Z^fZVn>rgv~edj25067%kllh{Hu#&>jt zBf&M^q@vm9^so#N-)`ZV)4Ffs>q4I(Ox~l}l#h*dp_(7sF0GDbER|!b%%Lt_et~!V zQGx!X6t=*H=FYw*ekNr)>M(55G#_J9{)CB#V_Lszy5-kOb|yQToWFmfQ6zmpszIcv z*)TUM9s0UCDeoJB-r$y|O@k24a%CU(rMv1m#i42^oZ}c1f#BS(Tl?E;peb5y4MHoH zw``ESh7|2$IY7f^cl0zJz#v3UVj^0Ln2*@9CKv%j*Uf2+JtVAK!)Ld{J20r$w_nuo zWTXyb0OwECXI|YcJUd#S1^l5H_$*v6X90Iu$b@=TqkI0ekvar&c8hra%P!{^Jzeb3 znN?gL;XEEybvfVo+F=3F8PVTgO$pFs0X73nhEu8Ltb(;d;RX8 zS`U{eD@EM>d0=eJy}dF+BFvp!p#_FEIF7Gf?l|{B6b>bf4KvMGru+SohU ze=Ai9GLTg4>rTGAH4zk9FCCz;#a+>=ZcB>jo7&`$w23DBrCh6h36Jo3shfx8riZiB zAg1pkzSmC5BNX&roITa^lS#{!mW$7dP3j8Il)G@#D0?Hm>?QClXD_r4Iih}zj$M^mrefE-Sxd0 zA+lrDDgNdFezi>%9d4#8N9}1G0zPXNef6n!^7QZ{&8sZkSeGWxCgLb%LtN3IovG5- zREz%bC8v9HW~iskrR7s@Kmya8q@ZRk#`^Jf0wb-U| zt&G?q&arizZ0SFaA&o{Xq|I;SrCXNU%>0>q&@Z@>TbBk9>L-)QT$3=jocKH}1i}F(y((^nbwFhZqAPgMB-%ooj30HYKc5h7d7y*LqI> zo*QPFSTmCNVJ=^B!x0IUzl&{fk~?mlqyTe=zJBl5vxoewzQmfV@qcrOpYz7nU=O!= zA+t+8yST=4vDhZoQD~WewKCt61#j6sraksxsU+LC0FjeT-Q?o=vf0$RZQ@_V$C7=M zzqdJQlcQPcPxOQD(J#<+$anuQpHu$l*&B0v#CL(4B0RhLo{|e}PETAcHcdt*@3PSb zc8VpHPJJGIimk?i*vwDR&1UehB|U&$ZwqdM zv5;&tR4&@6`XU448i*Lp?)0m*A4QDjfi|dO(6ahsucm8K%roH$Yz;bzco!`|RiQTv zYReBfoz=_x#0Q3UQQAV9&0oi*zS8gUC-FJ9{vAF)d&_=9Uj!4VgEqXE4Ts7lBAAE3 zVm2pUEW121NsvC5B4 zd4P7=90+w=*2%_Wc7*Phq2srSuPX~9UmXCI$bi!t=h}QG~&Sb zW`)4^34Un68J%73+2drWS>8-|PWk&zPV@JZJ==VZ=oa(P@anyKhr&It zK)gDEKcLoto0T#_f6WC?JzA{2<|JbY`?*p4xmhgTZr%tu!%%?kkNszzP8);9l7y!9GX9G1zc1adIi`Qkps{(Ck~F45vYbykRK76RFj?~*s(olV zblK>Lk^S*pRaa0$Xa~riH1b9U`&4swk@=IjeIKy>nP)Z|FTPAtgP1ypk*xh%6`&f| zOinwwIK|XHfHfoitBnLJ2CR$FCUS#d1(@ef*E*L}`lm1){VK;LtQ{gQWP*gwU9pjZ z-XPb9A#yTf2uSG+4aY1N;r59DvzepVyu9h=*&wu5r0%y}(07B8P#I*hi&f=Iyl1p} za>lD6Tg3Q!vZj@fRh4RQ&D5R6$%(@7;?=~Mf|T|=kuP$e z%bN6OC~V1h0a!U@2_GHub!VT+R%9of$ooi)iA2XsuA&}srnY16V2_i7+`FER-?};( zf?7z(yrdpGs_MG*6CqK17@Sc(|t@n_nA!9wcvocr;?8A@L#pA^#Rcnx*Gv% zCS(4GNA~JLL;ymtS_!5s?3XiqkzjkzF$4;2-lfEYz>0ml&|sDYb>BMNZ}fVhERAo- z(I(`@zZ6D=Ftt{KV*r*t71FI15<9PQbGUA&5zT(fTVS!p=( zf^ayxqZ;0TBL)~aO)>nc?{ezY1T_B#A0H(C=K6wEz#-^CA}JUzyGiw^(K)wfZPitH zT>E*YBT<_=_vBrLdov)W@W}5$kL`$ytB{vNg8S@GW*aMAg64IaImvnE48R=B)EZTq zwG+qkIE2uXIT!xueEF;x#vy&B zbqpDA$VYvr_PgH3{ohqlze56f$0qw9r54+D`kQW(bDhg^P7uUv%ICglJfBm_050UY zFTxNx{!wfl2uYQMVk7GvsN|UCQX*SzRb%U>%%h5XP*un!x2>Df&X04zGT~Gmo&FyyRu4W-H8__`cX$D7mHCsfAf@ z+yglyT6Jx1cUxITznF0wwS2Bx65TD2pey?kmrY-L7at*vywY3cP}M~JkWE-_ z&F0GuH17`{Zb{Pt06TB5x2(Op+;Ip-K5L#5HV~7;BwC`)-b$&}=3$F@d=+Zm^R|I) ziJD=N{)Yzw!y>8|&*HvFtB>Z6>{mScIwU(e(B^wZ@V|XOO!n_hHAMv4>{T3sXmi~g zCKf_EV34GokaXg6B=21Da#Z?I{PuE+@VXNBk%MVs4&it|cQ5ds~zs~T$fKp$tPWuj}dh<`NWOx>!Vm&YCL98x<~?Ezc` zPLY2>?&1vuSqIh-Rp%`ZZB^psWZ^|rJtthVyg~NjyNq~IqR$a%FWcn$9wcK8>SVy` z^Cz9?@y*fX?%hxF6P6wnKSJk|1q`Nx(Hsi+bNMlqN|M<%fhWIBW1eniy52m*^y^CE zZVFo$d@lrQxM?w_+)$V5$EfCHXtN~enQ}>VraTKeRR2jtgOd@&<#-W$&b!!`sV3r$ zG=d}fq!Myyf=Kv9QGk*lvA_=2F$-j_e|~Sp5T2bxU(nq@6lwIG6SUV(U6+!UTc zv1E)nm)D-1De$Lp3b*joIUPaBsS<|2tB@r0hu?fL&1_2(6VTQkdoYn^QTfOvoh?)> zX4b~V+V=zUee?U_$f zD6fc{899%wtrSmX_3e{kq<{NZ(&zVry}dh49jXoo<(NkK1K9ETRz@6HM;ler1zli!2sV@ z$K?mSPX>#Aiw7q|h<#2^tMxc`gzw~sqtEExOOpskn-2!-fpeD&pOWZ&Q`3v(c~89p z$hA~eRHo^np5l6kA@?CtH1!Iq)KtBvwBBjRV~D&!-Hte>Omfu7Qs*l2b7x(n_LXao z-36w9t`=TR)qxb?C~dmGr|5r_E~s|achHBiZcSbaJV(8|j_@NHiR~ZnEIm{qy6~^D zE+f-QQN`9g0zY`xFiH=p4|VEVL}Qm+lSVh@PS4~uf2{AoP6oy{%*asxiB}Kb*%=%= zC^x)`<3x^?CBe+)_Vs`4rA( zfRx@Pvc2(rb628S{f~+U;+y;BncSL;_W)Bf;CYJfr*LifZL=Zt@0C5?&@QK}+hVJ* zb}gaF-`O0qxu;nS;Bb#EqcJ~J2_nrCt8zX~vp~}&pD`6yCpkM>b#>DAX=y%r3#xlB(U7(om4%hAK3;v*k(5YYBR^r*at>Ifv(%WSgVknyg;}{d7cohEFxewn zwe56UT1Y|2)RUk6s<32kt#s}?j8~~_3t2lR2{1n+*HE%RN!0AFe;Nbx>xZRYY~Y$J z)o`ds_m0kDWCPcs$XcQGtVWyL?Za)gLQt8s_FFBJ*V*lfM|%<_dnj5NgClKbIoB4% z4AtfZ)9K{i_iN@L&}xxQQ*n8|hKtK3|CWpo$@;j4^TC;)dA+OWms{$K z=U2%@^~I5EN7ULKs&11C)E8Gbz}A&+tLPGDF?{Q@@7GV>HJP!lJ0o}K$_oMpA z#Ip+)dldsPJJnPhXTT+Hmr+7YeUo3P1LEeb*+a@Pc>`!EjTm# z-?qs3k0x>cOoe&ISsz#3I96LlCV#+KBXJcS_OkJJC2V$+PZb=#|!+Z+myDvl{`O;WqM$hImy9EJwrP^?CU-J zE}ACa5>jW7iuj*QOAxcmOUm+;kO{S>|0NV38v^uE$Vb*fmWZc~Cob4~;2yE!P63#L6K1 zTHu-qs(6^ur(e+O*RWz6+1`ig#!hYqO&Bl#= zxgYyPmc1Kk8|_>J>%QQcvkh)Twf?`zw?A8@{-Dg5Qbgq;$M43%MG@FW=~$WyBmDae78HEvuaZb5 z7r_eXy1cyw8nme(I3rS2Y-&>b$O1ITIcY+#S)H{MRj~JGcCw%i#39qpg;@>uEfBI` z<4y~R!2H4JVnqlMX%?RtLx}H9i^sQqztOq&b(>r#Ci9ql>1f}JdglPTx$?y|EY;$* zDVB+D%DJHu({G})f@!p_(vsth*eZ~?=B4Yt6qS)Cf0FH1zAOdN{smVYRP;j%QYx9$$|}N-Iv? z4!9$5i&A!%ia#CZPNWomJEZu5`SGe-i#)!`X~N#&zD9D!T}c#s z6V|h@HEV$MT3D+6UXcAH&a$svu$}~a)s$?LuW~Co=5%+zmw5v^WzunLOzkCKp*P-IZfcR$2a_J3@E)^+{aBOgm?Mu9*1mRB z64I^Z^@UL>?MGa2Lc9eC3r?!p^zfr4wf=Vw3VYF$=v|SAqlc+Ua0sRhRL8ek#j1v# zW8uKx_}_-=pbW;16c{=agQZu#*B4Tkw~^i(;t%F{Ce6vaJr9;-Tjg~ojcC+u_d`jH zU{p?vydRyjy#uAdPV<@&P1~b%hkiN)(YTpj!AOKJBdIF9CO0#Z&Z4w$K9xH7A> zAU5{k<5=0<_NGiVofteQJnyz&N=MSe<B;vV8roX2L=dO@8oO+%r7P4z#c*u#}Zkgn{pE^mZ6{MtU`cW)Zy zVnJ-)1D?usG+x0May8)g5$GVgteUzfC9-8N(-)(o&lf)6?O@n|8eIZP(TJb_snJhe z?Q`oR{auynfGVSlh6oJK9CsfkNG`JcBm1mpWq0u%i5l5+_ulZbg!B2_Qv|sRo(iVR zA5qEm%iu&6i)hAICsrFAC+Jh&EVsy4AuOLjj+U(a*-&H$QH@Dd(HP)>Qj{&!o<;q- zBnRsE@=LjlwN^*q4^RDn?DH-VdirJ~=MIY>hz+EEQbpM*Szc<{*Q~F)0LP-M2{UKHiz@hdJ75_v6s; zPSd$x#+*Pg52}q<+fwpF?oA(k);b5u_@RbhM@w&_+9NLi;<$T}a1o5&EiWz{vu4b4 z46Ao`*}Z5Ol;f}Qtg(Kl%f8{b-7YZtw1LyvTva!)>Or%4*%y!zrQQQoF*8-kerX@= z)>KDAXN_{>k7$(URcj|FNi3v+(%mv`4Hq|R*z6+>yP0!VhO!4=OM)gny-NcpK6oa^ z7k=BZ13h`29UrpR?l5|Un#@)x`qpu1zOFRbw;c4$4s-eoe72gM*Qw{mUUnS&!FBoE z6%j$bO?2zJQ%1!HIPj*ngo&=pyb(0eA>#2PK5a6I+75#6t+45*Pdo?By8Bq??Sf>{vgM z`BwB>0-m(UI^n^;p^Htwl<#b+h3T^%0>BVPDlz>rib%3hVK!V4;?O{o062vWM=+48 z$)W5-6al@!%VK~m5H1Q6KSl>~RRkQ81_S?~-A`mKPDiJ3|0bL=B!`4G!c_4CbO$Na zZ&OjjSM)b5D$Yl{@n8Y~e=;=OzA>gj=efp~5ob2zj6JcQcKOBNcV-XONSSc$0e5tc zTBJbcce-W|`h=OwMe0As)@8_Q6}Z;`9G!vm(1W<3bCF))AV7*aEq6eLT_Pmn;3)$k zo-XwNy~#4x*y@U>Qxx3Fv#f;}%h#J#qFc`!uG!mADrq$X3TuVQK(6O-X2WtE>==-0a;{kGzUV zuD7WvC0g``vpY`R4&BAH8LGTG;c%9nqrLv|^ky{5c9J{@ZARLyH0nm^%vkRy=o0dK z%Q8ts{u$E?E#Czn3%+Mq43c*K_oj|5-v^%z&M_=?B^B@?rk-lKu3ll>BYKCYJa0ns z1%^?CFCta!eXL#!Vy5eINJ&l)W3%;Qs%d=8pkA-{a)|))o3>!2^ov#@4<&e8eU<@i z%mpjl;paHSTjH1JN3+(zsc7=K>@X$Q2j^vttkZBt;An6Qa!=*gxp^5iL`<(?R@yp& zTH!PI9AT)8*hTpZ^|CmBg}Mi|z2&*nO43p86#uu=O$*NbA0S~TQr2UA9z!m%PZv{> z=2jQk{jl4DUDaFj9!zZxoulzL){kJy>mUF~fbIp}*yTB=yaK8XD0--DrQf^dAHA*q z_)E{jtQAD-&R~*|ih6=BBmTvhBHt36sy0AWq}BUlc9j!_7feIha;Q6KK=)u|Y^7^R zhR}Gc{e`3=_iPp0^=NOq{P^{J9|;eXep2t#9T3#!eMi_Jv=Iov9%YG)l|50;X?6@NyasC0 zsy7}>^6Vf>v#usSQtGkf89n#W#H{vSzk6 zXZWX0y~=YVyoQJilm*@ze4GA5`Nkm4#FS^6@d~2(Bv3NATaeVLmO)_&!|63TcCGeH zM+LEt79JMl3Thx1$`3LPD1WDspqcVXI6ba$=;EWu^@m-&euhnYB}{Z>tA)uk6yW~O zsqJbd3Je$%7vhg()|@Z)79yhAJ(Q1j=Mx=nQn*^?o{t9Re-Xgl6ZT#1sBpK?dUiJM zxD8p@cyhv_cEh82H?!2Oym;U-$~fw)L&eo?e{;J5Q}CbGDLT`*aQPuyT=Z1)h1mt| z9+>D9Ka64HEe&Mfc7JZiRMFM=+K+Z~U#j8|dP7%V41Nn|D^i9-=iQ|C>|Dxzzs-B% z=jf`3=5)?uF&$l1fTKyEbM3D=!cC9;M>&|A55?T83+rd1O3*r#c!9pVSr(=n5F5`D zv}f=2R(9|vtWv%@e52utW$_m_GqB=Eg1iE-OMQM~^A3{<*t$2ONA8$@4vn@fLj2hP zc$dm_KuDvh=un#hQ#>&N(|yUk&9Cbi*ri-Lz0rHvwvGM+234Hk@fy+k3l=mP3hM_T0R>NMab|OBJxS0xtK4{-xn0aZT=^n3z{I1Z zUgg^`fD{T)Mfo7Ja!+<=XL%UWBq!#S1tEa2>F=8C6eu}02NjH;YHLttYQI4|D6-|^ zVoz>S9Oyx8d45^>9|nAL0jCJZm@wpP_B54=i_n|yn}X#?J~)!bQR>H@a0duz;l5~z zHl@RFGYgAY)zAji^z_;5>NbK8YMr&X0-NLoxyCb`+ zUarqND6OCybgJ?nT8CDdoVHgGA5FDx2}a&i@jR|n_$y=)k1MGBaxoa2#rhr!C|_^* z2U*T7hsN{(b*iwGMCBW^F0`nRL7{G4RAp2K>maijL`U~^QVR71;-oV98dLIrY_%?$ zu~xrNc1~8Z(YMLeEYh6Wdow8V`}wcu!p5g%th(LvvVZmdpakzaBmH#4dZ81x@fnv@ zZ@+~Ctuti5NNAkHBETsEOYwZclzB?phT)&%Bc^UpkR8LJTP3!B@~@n_BU@?zqnfPI zapt4VlLU^)JcsPREa5k?dS zPM~}57n}~w7JNBr;ldt-^q{@1!f^eMD9#qOenpOBOqEk_S^}ZoAg@ZU)>LcM?SwJ4 z$l^xiBgE%MK)qL_ho1X&^IU_u&ASw>!yh^oQ_PmXxxLq(`goO{dU8SoC=|9c#A#@wNabeM}!MHhaTIo`&{28bExrTM(eMy3f|XnntA3WZ z(Xq*`ECswZ_dZf26~s*b>g>%ZGbEJh5KTGERp39Ebpd_fLa}l3m1McL6K&ZcC7v)k zBC}I$IShj7T%x!|yeru$`B0l)TgG_dxNDpjsJG`d#ChYN+a8RUj5{rdCnh+4h?dGu zCoOIM-39H4>${=gJBx3v0A#}uX!-dh-Zh^GMODGa06kv=S<^ZP%5&i_=I&>eiatSl zA)%+%w)M4ZRkJ@-X_EiF+h2k7u;%0Bx5e}zpP`eRnC^IW3`^O}wdZ`>4CV@8#*^`1 zAE!B@0qE|UyK-FmP+0as8DBi5`R$%C&42tGCgbZGwnTSJ#iT{fhoz=ZF4q!$xQZT_ zYc3Ua({9Iox?cL+fBk-qWoJ17cq~;{@SWMVY@bkdGRudqe6otL)oGKz$vz~#8Fpg* z(&ka&#$LQ@7c2F{M2=%1g^4nl`R%a>KF_wS-9FTPiWbDMSGMZva1QkhB{l#Hg9?@g zrmWpH)N7(Tj^c^X^CRj}{9s)KZ! z?3ltaRY(uoQW5`3(@RV4+SYwge$BqFIo*8Y>q_sxG^laXx)dIds#xu zlSwb6!FTHaESH6rH1w3(E706WM|n9y2{$HTPKe zuuPtOPt!pr9GF%xEIY^()NjOZ9%eLGMtCN&RqgeA=9K<8p$_nGxP6}i14nFKSf}B< zo9Z^W}^I%`?)B)_re$%+(+XY}h07M>P@9QhJVC`lMe4*HbhO7e|qSpY}Wv5Dx zQZ=Cq8ub;&-Q{(rK>Imc&H?_+X{-*aPYvWA*<8eodJDNsOUBiU-o$O)81={2*@o!xPp@{RwvOsv>s=QL| z=j=01k65PkB%U$cnGK0b+%Z~eM&Sc1K-DPBj%8X5S+Y-W@ZTIAZ($(<%4Sklc3C;O zm#8&n7rQfx*1rW8Nz9&^#M{xI-oYe7KVW`**BA9(O%3frp(F)uqX|8TjCiOoXvi)`p;GAOljZ{)(`$ihQGG?F<}b`nYb%?*sC~Yr{))~o z^tX7inyg4?74(F-W}ESq-Gl@0BPK2|25y1T&~Duh)(C#xE&eHu3Stng`r(aw=J!`*W_Wbkjx{7hvYBe0n zxxY=fK2h?8y6d|SmP=;FRP_da8~ouE6hpG!L3al#vD(7GeOsV=q~kt+?NL%4tZaxL>jkB~dP48hvqYYjU)m zt+)auOh!jU-l-}c?S2b%A?0(a7xhsQqj2|ZS~w6~b>}$&DFz76s0g>lazxQU^WrNY z5$o>V4ip`OAGg$DJs6ywUQ;tCM+p@>gnc+^J~YywhExc|JVbDRU8>5U_$pYZ0GR-2 z{?{UhAv#-|06a<|*phNtp|uG}$9lE|9$nz7ze?Esg==h9=^W)rDemKD!7ZrhsJO@x zDx%%>i1lJNC`Y;*jCuhT1m)B-yMB*$e;h~ZafcG?>;R{gU=sfpedrB#a;&^PSuX$~ z1Aft9v=m&pQ&L^@s~UW9-x!cW@D?c_l>&hl;vp&FzLFGP{=TW_ztsBdrH9K;QhVg&8iX( z0>1WWq~6K(lYy=MnPk4JTSoEd+rfu!@~r1jg+fP+IQhO(R9N)A!fR?e-uiK2kv>4E z17m<@s&^o#j>*ZHjIK3!Qan1?+jt&c&8*z?xHKw!Y?f>4B#S7FV6zPp&FS`RM>vfc zoO=}x3$#wj_9)HX|J>|ALw1WQsi+5hm-6CUoo;eZOYHVaWWrM(r~zs3LXi_pqO`8aWs#W(@ z@R1OEd3OI5x2;UG1T6tF7lZ7gpq?dGBwK`0+|tIVzwyat4XHZ*t)LbzeALnK@6tZm z)V6e-p7VH1t0D(ae0MSfj**<9Lj=8L*Wf4p`hKQdW<==fz!Sf?o6$KWkO!Cd-&sq1 zHq(KHd+%;-T-V;PLIHC7J`M>CNBS5h4QL8Q(eQ#TjhP0k%$=&Sc(0_O(|Y(h^KZos zAb!+n55a(PPzjC%ui!Fn(Ifej3#gfwV1Dx?v6^~ZUhk`8dILO3;v>WWul`>^xk(;t z*c!pUlp%TgOR}g>zOZ)ViFZt-ZlIIA9x`2k$ z8~3rx{kgZKPD8gOy8R!;RF?G!I{zWadwOFcBmcgU$cp1Yuv52=rhM$hy_qW5PGIl$ zAojL|6=qwF-hiBPv08|A(qE35@sf)IjCP-R>ruk{xnCE9!7sdHm|TBC8Ow`yfzuuk z4qb&)9!OO623?kY-R~PFt8A&ygZD=YmeKG2aE6oX%|pZBjX);UA%8FISqAe|v(S6ydfxDd`AY6X3A^dX#s+=e<*5sPI&{cb9w6ox0%D=g z8@|Z>-9LIWU;y-7w`C6h-G`xz%flYA7KGNCGbu@J7AKVxhZZUBNzvf#Eu(9Pb#=fi zh#hmW>uF$-2Um@Xf9zX-rYbD}mcUQ`EZT0fcxz9gJi_2)M)IsoYfC|@v_MR%q5xtr zkWkj>lEnjS-q~xc(i`xbK7kmpc>1M&MIS41->}KgGebB~Ah-<~?DGMqsY;*hEhes? zeB50bMFz3x=~C+zNLQuDlbB-6=$zOAk2UpishQtsFq*GTIJ0|dIJk2zYZpoc*bHl_ z$$-w_6SRxyQ2qz#JRvJ{dk1f&^L|XBeg=n2V|{FQ6Ua$bGbgHC|04gw(YY7Y_G@C^ zPZ}D}tF$TF69sjbp8P9d74Ro!mQP!Vn*;!a0_Eryvlol7`kzU>FM@|YaC|}+h{^mt zBZm1_0;i=tBN7t{(BNQCSi#W0sJSb`oahJ8C(T@Qsi$c72b9c8%83#1gn=OR9i%%H z=0#UV>rkte=w@gr;jVX~u-Y6RIN*=Y5_*VWDSFCOPYvJQbnSUaq9cLQOKTjEODt$1 z)$>2hUe{BkddxwB=QCS8YN{_$mT0X5JJud1lPcjx177pF$zG}ur%va`aFx!&7ckDi z?zIAMml{tzEL3mzl)KE=Zq5{2j#fKC)b~om0-<~Py;Gi`sT*Zn zei|f}4*^LD{+%4ZPF07fDukjLa>X3e8)%Z;G+3KXC&6w~hmv^wT-uvtH_IMlFI;Pe7#Td&v27ubF+O11XDl$MHxboZH2QL=B zsst*%QMm%mJGk|a_Mgn+4@YIb$!R{Wu-) zjM&UWzA_z-5Rf=^IPGt@P*q6e{hp!y8;Di%s_AP0sn$$}{-BkadDHW2=_@&a88@9V zbbehnob6iuz;yb}>?a*gC}@k$Tgc}Qs=clD8d!#7=MGxyg9p%aW?ydqBk%+e>iKV@ zMH`UNFmL-qrNiTGM}ymc%bRvK{ZQNdp+lU0DrNNXmr*6qOFXaB!84JQGfnxS8JV7- zJJUtrKMqbWArO$6E`WFJQ;t-?6x@vakcn|WcTDFHm8}6wUmSP0|!TkbgMIUa7WdSYxWRk z3U9yKVP^PTdu-=lw9)yeU{Fi?_Yz>&HWx2oBkmK7fG}DBq78$P(F+&Fm|h+=-l?ef z+~D`4*h*w&erD;gs`1`n-)oVB8K|G{kHP+V5-3W9Rz|$ni&3k0FH>*M9?Xr`Q>#^d zOYCClz9oM-*y?|(y31=(zw+LxsP+%D@}dPji0`!kzaQSPNas9@hw&seS)FRC1L#5I zUvI6kxn}Yt&oO^?-oC&s1`pfnXOxRlH)zadgGpP4Fl=P$%ey+xci;$>N3*Zq#fbJ3 zv-|=xw)&V`Z|${B`6&7Q=Skao;h~Y(KHbG5YmU!#S-RXj-54YM1F*a5@`~U)T_})j zPak3prH0qfHH=SNMVSpkyk@?040D| z3)j;x>GXXpR!hE^tkGuJc4z$IxO1Fm9I=Vg#2e)!S^mkp+qD0y@b>_8FDd|8Senc- z^J+!--ZzwU*^xC?dOHdyF1Tp9tMgpvoW#eiiocl8y3K0Og^8bo+Rs^d*W9Cm7cqB9 zOc$$4F9_2(?twi2IUp1i%Sj#e-KOAj3~r5fD9MQ0zzyJ=vn~qrI9{RT25KDF0jljcpnVrwNR#_r``SuqE#Mk#U_yajZQ%FnO{(5@`c$KU1vOu-W@f9t`ux=K^ zKlLkGoOe?&hnx$waqGkOUo0zCF@;7YKb@I<8i}l~=KkCMx&4nJ6Yn^st!@1BH6pq@L51MAc+^T407`|nu38I0&z0Gpm?x|35zW)z$#HHjul?2n zRk@p{tl&Vz4-+I`EGt#ar?_!{m zevKe$G5-8;=)*Ux$9Yez*?(?VJ-J&b=v6A7pRbq!5|GiC2P)&NFFL7W%nv?>)aEvC zCLHc^y;)z3@!p`>>nXqr4En#Z+|HJhIo&Qs^rltrdEIY~r&eM2k^b2#sGWyNF7@57 z4LL`kJonQs2BV8XHEHHX`Rvm}HmwQr1e}eO zopSq?D)ue)<>wpgyMnO(8@)t-HdT=wecsx)W`4nOtiD^T#W=+`u7cpTMoc}N@^8UU ziopTx$4%>)mT9*beF>FoNg+T_QQ1U}`$66|E|Td1t@aH!epz#Q6Y{B{OsV2sXglh`&1=4OwSU}ONIAN~fc^#H zu~&5hQVx3hw<{Gha8HTiRdd6B-%NM}sczLg$M@H9`;G%D)V%~8Gr@1WqBQVF4{ zwj~_ZT>I)9=MQBRRr*Yxi6gUK3!d#NsVxTjfr85q2K6|aeo=K6)$^;kyygQKczX|R z`lZMT4I@m$ZP31tb5U7HfM394EQDm^brL>yQtQU%E7|NX93FtE$>M!h6yyD5ZT&_$ z4ZApl-*?X2F6XYW{#7vR&=woi@9_vgHj%J!D7KY6 zb@=7|%H0J2>XO5cyk375<@tv`lkwFM^-_J`bT7-%sc7fG;&=n$G-CSNC@*TtI=z?S zHsf2Xe%~opYa~->Gz^Y_(KsAa8tQ!5ETW7{RWMJohRw)XYbFwx6wDWreH)@5e7jO^ zJK6d>p1WG4`=u}GOpEC04@$yVx6VDY5}f)gYv0SQxl7JU^}{EXc)h2G=R6N(izUR>aEFs*fL&~yKMRMVB8RPl_0S(mnKFsV!86%}cj4wKPMSAL)S zQ9bc;AjucI8$a>8P&NJOzaD+VJAhNYtWSrY&h|UKZ;DnNR6Im%v(=xiUj8=MdD=O_ z3MFs>>}9kO!0EcF8b zai;}7-KyNA;@9l2wbHj8!BjIRUDOXZVI+ve9bt4$LDFz}szw{JSdm72J^iD$kbiYG z!9X~8bv4{tNRd#tAffLEOP_lFUb)rFq!i(o#(f&`7|R8TR~GN;)Rruoxw6fQ ze>Ejn11-=gH#C`DlAZ?{^=^n64}r8(}sl zm=!jUV=a?{FD|<6W@+prX&)9@)yQf1>4CxNDLXVvi5S$wBB5Yyw2Vizj8{4_)fT{1 zG6r#RC6O3gQx?>&Ik13~bS%BB-mi%A-g}}-_^J7~k$#;~^3Li&qbrL5BkDJ(@3vQ> zUH;*d33Bs@(yjZVuTM8|x;r!U%nxK(LzAc%9Fsy{6m;w!OZecA-kJTc>wz)G*$6zW z?B&${pq01D`g+u~j$5}h|N0^Myy2=3e+tY_z9cPSra3fI(q+1J#0r`TXB!ybbtuqGfw zvoS8#h)!>o*Yhz{esU{-mKOJ;sv^cxvG&i?X&&L`WT$euEZzZX%>PByyT>!#|NrBi zbdW=bsSrB15nY9pGh=EM+sv7ia%haoDd&!8PIWc9B!_J+GpFWQgm(uW<~Yn@!qowD z7*}$*5Ppy8`h0)=)$NwB=j-`;JnxVD;qf%F;16FEzL-ciKB&>PI2zTw^nze`b!0q> zcPe2F9*R3`SnaSzTKnm;Bp>u(kN!x2Mc>AcgOl%wOPVct-IloqD+b?Z;5%39z@=J*G*TH7b5w%<#Mn<+3Z~HSNtot4Z_W} zTkv$ZQ^=}TjGF>iSi*mBuSl1ycZspH^w9SHK*14x6*-pdT{twFmKJZxv7EJuSt>z- z`nk<>`0R#zSYp>@Cm&ds@DY4qcK%QTi`F`SV^E@8Nr6|WS0x+5eG-)AlHQBTaLn%U za?MsspJps5%$7Gh2~_>|8qS3FUY(WMWf&Z?I1sQ&X|x2UdnOZ=;?g?X5-J4rSXWR^=ejnO({xb%5z&pYvXJLek| zg$mM(>M7_{`X%?Q(`-@F&Sy&$6FGf6%AlZg>o4uIoa}!`P_-EYhx_)&h3Mk5yJaGL z^(%2Tp#e}JEpB_^_Fh$*rM9%*tq7R;wRQ5|WbkBgj$+_xgS|m zzDKQ>sI)J$UN0FK+I4xAq+RtXx=S)0XA@QQ1-(CD`PfKTc#m zPvl0nJ*74X?_<9Hq08<(65!nZWsPnQ!IIW$`K9&q=Jn};*sHoRj@s+Gah0uSwvQP1 zC^RXzbzcmtHEb)ac15qY>{hs?P3teew+$2 zL|@Zz>hs6a{%en}9V8L*g%g`il=kLTSdr`78LFlJtJ#ZfiUTLU zV7p?Ey|k~4iq2BVj$D#52~=e&Ylm|Wz39KJgKm~7^*JbDP{VkJrS3+$S+*)>F>Nz% zg)FxZxNHo4qckfDFqn4yu1xE;)8s5EwN>jg06blh8&Ss z%!J6S(z$N&?=ki$CX9ORups+EXVPP0n5J$np^+9;tBcEab77rkOl}w+E7kmNKTWYs7pw)GW~>woaelc3_x+i`2tS`?v;s}I4~jR z@Vk)NP3^84+>ut7b;M@R5!NQTsjlR+M;^C&&fgL*Pt`X!*o~o1aHh*{mqySBN}+QRvWv5%vep>@J_5kcEu?X*!X z+m=7#UvtIZF^N6*VnE@l;0D_zb;kV#|K_nAz~q>{__*P=#?ZE`%|2#l3#!-HVKsH> z0;gu4VP&7cl+t*y+W1!CrOf;xYhgg9=yhXOam14ohT~lQ7{{I`*K2d61KI8_ET?ZR zw?p|chHZVG9SI%xn;J$kJ^$^?tUXlYCTaZIZU?hZ_ik3R+9a(OYFnjSReJ23!senl z4LDiO@n+JHbCd*vlo%`ikatl7E}_sqx9Vdq^#}3?Woq|^{jQu+SjgnV(o9#*>`}N~ z3jk#{VFLeJu6yh*OGrrwKl1onXqfl2w0_pRp_SQ$665@Hv0`A%8m06oIYg&a{;0n) zYnv5FstY9s){YJN7^fk+<4FZx8ML+h=Gd~!`sEBIy8wiFWkF{}Pr@`3d>oZutD3Bb z1w|@KFX$IlLkB6Md%fmo6`DK(PO9t0C$iMlg)D+H`a@yoIMy<&SFLw_ldN+@1go!s z>8k63UajiCNxCvT%-LtnEb;cBs^$cH;h5G6iF5pMd)#-M5myAInl$T%8?|ZB{9eVb zLSc#AebjLN82f2fTWVu=EN z8ot3sPY>QUJJI&QDb^SE!a(k3^3~a2&7(t4N+I!!@M7fph59*b}kQ+F_XcYnau^0d8aSbDK%E?O79%X&rK`7XIH+r~h>y30~Gl7t=?UruML}PSiM*ZR4Zd4Mm?;Yi3l)9S z&3er;wa|PhFagQAK{>U1>-YI2;ArB!Nx(@Ibh-i=*iM+C9l8b8nZ^f`$Dzv*G-VYp z%mu9|RdrX??HjLZ)r^du4_e`Z%Tp>Ixg0fg& zEgNehhI3y%L1H%z$8^skLy6k@(SOQ8)0x?I42vErpiW*1-e+Qk>T8W{>d6@Ltv`y3 z#(pw$Ae}zOwXODS*39e*{9OE-=^-7)_!|~$AKTv0da~YPKLxM{`vPDOY8*b*4FEE~ zd{zG9nZ6&iiKbDhoK-d?#eDM-s-FRyAPrbpd@MzHcwS4xClK1{jtMP?d53KV3Y!ZN zx#<5_@KI$-WV`AmQ$0lYy`anb!3+b6$oy<(7nY2PX^VLqE9<$zx3VUw*G?Knf@x*I z#9c8`*4~>$`=;<3&gQu*lIe@}k)OiXrrT8evuxbUXhEeFs{`578g2QuGg;>v?)`^E z#QTpwvw1S9$-eb)!#_2jQUY@o^fUc;&VL@`tjRLY_IpV+L3UoQ0tDwzy7D;ojgjZl z#Ix3Yh%asjpB!ME%(l!%B18diQEO{e-FHr?ZcEydK30FtTVcOmtsXOr2)C8D@QW@Z z-=gZ6^=1y1hflaOc19&V0W@cnX>F+b&!Zt?ETt_4+LEEO+r@Zgp}aMm__gf|FaWIR zyR1?FG>N+Aa>H`}G(Sdv=1BMTk_mqoO~$o;Fs)>EX9NMdrjFoC3BG1a&!}m*1h-Pw zn7`hiZOd&&w_$n2>!1>}_NZBU+HeksqVnhPyK0Z~ty9c#*MP z@qltaB)%2Kx~U6=gU22w(X3T}9u}5h{*ltn4IjkK56R{t|f37sxdYij;R6fz&YxYLZhI3E}rfs~YZjgtxy&7(anyQmjldr)#=D$=X zxBLYJN`d;~QZzAcc&$$~tRwcN9N8Mx&67!Ju`Ka6w%FD7eeNHM;v+aP7T~~;>UX?>rIT$LU$7rb5XuHm(brSUsSybqS^ob%*L+03zgwXYJ@>wOR7|=o0=r=8{(lK_{ayjR*VnweZCK>>AuIUL z>{{mMdy%=F8YSMinhltFXBB}ncY$@eS#j{?kb{mB?}tg{BUmD05;P0~RnKOJ(thaE za=UT!Sv}-o<8{Pn7RN+y2U@;A=o9%3vs=t z;KFU(bGO~d$qJGDfvl6YblhZM_r>>FD2hR>Tk>IP0E{=T%4Hg@9VJHl1q%Q2~Va##VhFUDVbsoS14To zvUH?k;|)?lSXG8Z!L%bWxMwV(oe@1!pXVxGy=R?4CEqGUb-{EO(v)w>psu%jWnKAp zrDmbB+1ZY%>Wu*(lP8|eFV)BJcq3(*M$w76^-$y-BP192{guOW!3ya?kH2Ra9|!JI zT=Ej?FR5fKnVgh_`Z;8p{ zpF)Ow#2892Ra2smM*AfFd9R4*0X=~els4=q3kh_YjU=9TKiy^<;{-ZLA3%)s&`T2{ z{pe}lDjn?N(!tVA>MbV^VNSQDFj;3f@M_*~$dL2uzrSD#;y}Kb>x>!Au#sQ~pca;F z+<%uj{(aHCV_Bq9|GfgOOP;m>UhYTao{Jlf4p6$GK=jxv_=?d%eo(S&K2{4o8#+j) z3b<%LsCwwRZL5`ak6$Gf)N7vOM1I%Aes<3l0lOSZ7hX| zJ@Q!7CpSt%6`zMt-%+;k&UCqnbRX^mcQwavw_$LY<;$zH#~gDyRZBwcn-FwuQr8Sm zmRhuP;Uot_3Z0H6mQKJkDwK`<1N|B&frVkV(Oq-+fh^xnTg!##!Om6uKQd}Qd(sC{ zb1+_mL#h4Ifu9)&D%_tFB@M1&E{>{n{q~#LXT0Fk=M3Ykdx4xp)F9r;Y%1L zPnNl@YhGC^LqEW8j+c2kJG8WP6}Yg3(;Ic!4`3#zYDY(C5 z$MP6|Z%)gH2k>s%3{I-p9``4)Z)~{x5cvea@3B(`G9eauAi&@```&p@8qC7rJ&V!s z#Uqn{f&TE~6SC{mQsQ?Q>huQb5|q1FnwcbgywRPdo{IE*H{hwkwO*RQ-<-q2@m}+F zv)?67?(SVWAGg-JR)5``w!4_OGcII+zJ(8%o>dQIxmz5lFx3ckJ1%H1gaXrC3!l@4 zCdpV3#agcySQuHS+OV**u=$h4x(gS2JZ4+s^(DNwQ~%nimra+f)-3$|@u<+!NzC3* zF(qf2J{EeIQ9U{kH-Jp5H#;c-F`j&FlM-IfsTtp|7oDgU1Z8*>p_`kMj#feSe_+{Y zm(Zp+>v@hFr>inI2If+g+j7GrSg!5>)%Q+YrkZHwb*`VdtQfL*bCKp(===Pu?;pX| zJ>eUSZ|c05j^Hmv9l-x1J%2!b&E4MSbSXp-+Hc7Ci_YYNI_1TML8*uMN$Gqeg#X)6 zJ&D@h=V2~a#m!)BlhBX4Wm9IQzNU+wipf37e%hsez@|E*hG+$BuzI&>Y{CjHPYOK1 zt+?QMvI{vFo!|?rs{)Opbhiv(08|`rCmi&@)MOg0mj)PHvQ;YVQI1#MCf07`(G{l` zL_n4pI8wN63=kj$FIVLg>wtdH@$oJ&=_ffzuwPy9i~$NoF|-k3)6>j9$PS8N1&Th$ z9_wkA*Ji)GP~((q9;owbCS=QJgQC#3D{sSU24^&Y8=~9#nRh#<9(3^m5#nVD)S9Fq zh5@%6TBN;KyZXD6WIjJ1M9I<*^m}7sd^`R2$v{I;24JD=EzoA#PmB-RaDm0;K#`F) zc$nbm;`hOD&{mby@gg8=Q86g|Mf6(V&X6Y9ywGeqS4S;oTV!?w7dMr0!GV%ls<}d9 zP8jwi_wag&`MmVq$To}ArWeoz3=mR|pEdhpXwWtA^T5RHVCvN^QTu<+4hqhEDU_-` zI;(b?)H16^X)x{20)jJsHnL^j|k0_5qIq&5f%QQ`tD&twuqQk z8$(RqnPAe1nM!&sxC$$)7MfIM!^jzGf2&^;K2fn)+m{NZzttNg;s1I5tboZ0?wY(a znfWs?`Ns{0-R5gx{KKciKRZvlXEwavLZly2Gv8RE4chQ94<1m2Jv^WpctA~w3u?=4 z+O=fDO;vu8n5?`E?Sl`rtv-7N-`~5JD?Vyqy{}#T4iJrq2H8;rWTnSz;E3FPE%d0@ z4hon*J||3jHIAFlYk9z~&y4Vfec$%6=5{YWb(|ioU2&FmisKRRk^hh0QnHTj*WxNS zC@-QbQc5#Jmt_N565gHan6Va?BrVjrXKM=cnhHLH96VJfT{{2DTK`*SaM;?mA?hd) zeKu&>;i<0jZ}66MFDNMd(^d7#gehN>ZWl|YrQy=fs=va38*D&)E|iR zMLNwoPyOhASa;SL$LN$(eWrbXRwq>dU*2d^X;NvZQdrr7Eg?AGwLR5`?t8c>u@Luv z^Ot6LGfb5%m6QEHswb{lOR#|ubow6iG5fFVRW>J$%#5g!cOv)MTsxEBc0{hn@v?hw zv?)R{<~{0|azgNg%3Cxq9UB4zVo`4&SRH8so6FqQSA`=Vo>_@^OOs1=&0Y}0GvCcW z`}J;e7iHm|()_pk@P!rE`?!J6Y=mJWUoDmf-_&HStyRE3bZcNaaAumrC<~h-vN|^h zm~plRICHiN{V3_?uvJFBMGTFcZEdz5`DW4Nl!@u5*kq}wPVb$xu8oXlBf4*#v(8(~ zN7}|k=5#LGErfx!y~ffMZThxaLo@iwg8?R-ptb`0b+ChHQFE7n3H>|_jL=5bd6G7? ze~p*A7kFy}x-usQe^m30%BkMX3fYHW{`h6cCV~=_+nI#_PZSe>)Wgk(pOT2`WHZIC z$iwqa(}hA;xp|#Qzm@|frv&lGP8ZVcm>tdD1nJ`J_ieWvpZr>K`G)>(U2h#nV!F~@ zu{EYOe-7hZehJeG^`}_pI1nIjfw59KyL-2PJ}+rPvt0C_-hf1N&QOQG*PKgD6ici7 zrGHFQSHdrU*({-@=EHpAV&%||x$&rMzV~PQC3&&OhGdf`?Lr*gQt{OOU`1YMHp`A< z2tW1bQu9)ARkY_u0lm|<#AZ%*Ql%w|zC``M5wnLUU0Vuyg$_!7>t_2fNkK?(LQo@b zNA6wNwqPr`8*~aL%nk($gImUV<4gmuq>}BTN5kKks#mdYQ7 zhK!00J-;+&BZtc7)rBd+A`)sv&ok;xRUGKqSyNLf@($7C}#h4GV7!lkD*w3<_% zJcptG-}rPopJhWrlUqUp&Q;vdI4NSe3>z!8mhUS^rDwf?aI-*4`z`TM|fL&m@Rzw$^%A_?t6^{;Hp>TgKFDpRF3Df@ur_Bz*s#h$8t9!sBY#l6qp z5PV(t^C+-^<$@O={4(p!LsT_E_N_M6vf|9L%%+m*{STM)0@Y61>vX`X!d;op{Ssso16kK8?o+Z%nqF*i+D%W24+B$#UbTGXrXFCc{-QtW3{JC~f~0157P8qak5 zZ`o=ABJ;~Pi)=^XO&jKo^G?+Q(V+TMO8ion_IY^ct(Ha}iw)Q4%lxHw@cv6h*2}m( ztMk?IA9L;XvBX0g+>t5wiV$@eu>~XKW_#l-YhUw#!*5Q&akf3{TCFNh{L?Co(+o!N z$)rAzUVNU+yJjo$mc1nGdTW*oN2V<&1oV z521`J2Uy)#%H6X`WnTTr?>^COsv!O9$B~JM?qvC-EiUy@+7IshX%i-i4MZ)>Yy`L# zceeuiMX7^JCjwyYz-*GAVsLxnmQTtcV-+xE<{AS=R)Ei(>!S<|wm0}sxCR5atI9+q z>&}h`R>fD-JK-3;Shh)>z=idGxHKAxQni)_y0n1_UgxjRH8AoDvh;5Pr5exmh zo5{t`<+)yI6JYCWi%Iu-c!^2jvU(p^|AKW=1iQGpvSlHrubDE+j+6H@9rC$xBC#Z&PxG> zt=X0{w2w!Q6$9(E!)g2oGAO>G`1p65>g!Y%^%T;9e98oM(MNXrcxZUM=t!pV&_y5p zY?{>6v90b2oCSy9>S>PbEbDwcnPIABff}TTT-<`Gsm)BnwiOXd&c})RF*u>lpdZ5C{6brkT zv(hGaT#@(eNST5T!_MZdHw*KP0EpQY5OV||W&*Hw#J52u7vu9e>B4eu`9=|;4*Hj2 z5zNowfM?Hb9sZ#JSmB&%;Dj;Hq3DRf5>#uM^-%REbd8|6+LF70)BIi&+<8;?!@kc$ zvyat^p>Iq#VA=hwfIeK$8NHevu}PX_0|bhr`s_tuNXbp~ao3I>~GC#*J8EE#c4CKDBBZ98gU*1ks2N2ZVI*^46m zB6%hGy4jZdVc1-W(igTyUmO>9&*2v4xBm8CIL(3g;$?tjx~&t4xC$fi1{7yYr+2i! zx}mFm3$$>KRr5jkHnVUVUKH)2F_My@=ufOetOea&nM)8O^! z!CU!!NIBdV`3!6eh;v(s{G$^Kb&3Kq?|HE!W1G+3GC+vL>wv<~ow6W{*%_nozd5A_f4UlXD* zTL%g3iN4vo?7uuwsvFB@UrMRliPW08=hJSBAJ#i~SX4RI(N5dXjwKqMwvC}gx%zmY z0F(|ehoR6xVnb@vyL~X)0w^RJ_Ja~E6Aq?ie`g}eiFfSaQhDxwRR8H&co`I!5Qr8` ztecEE-@UQsUawS{S^`{g5+}Ms?n-)GLQdoDF8vAjK6cIvBlwFe=XP}_t_1Lt;0gVt zdW4ix$7h3^mTW5Yl9)v)UB-hYqX1h2aL34bqeX%iCE?bDcYXN6i7A>lB_evQmJyJ( zjzLPxzT&6Uw_f(8NxL%3Cn8hZTt&o)BMXr*Fv6tSB)Otty>&6@EwLOxuoFj0G z69>Sw5Dw1-wCB9I^dIBe_jTUA->4;9g?j_%WhKy5D79u) z<}YQ({2(!l;wiz#S3457yUl+D(*Xy>D67332{OJq|92@T&RdqKy|ew-w?ywIfVv{L#ms4AJDP6{yxXN9 z!!h8kpU6Qp9k(4mu2(5*eDhm?)e4EEV)bpeOh0t}1xB22ql+!SeY!LPXef4E(FHJa z39ptVxZ&!Ldru)Iv#|Hffz#YQe!Q|J$>NjhehFq`u>)v)@4IYMDbLvT5P6wHn*Gz=`bTAd+*a|5g0{d6~IHLge-cyQzFLwGUnO(1_-ygRyJC3@Ve4`rMD> zdWs7h9J3VwJdzuvS)orv4|RUKXvNPa`$wLI^e}#};8q4>-l_IOkAXdLL&hr~M8R*P*W2P{F0YYg%-FnLx2z1ZNWj7-6-T@V7M271+A#uT zRxZ??d|&i-qN^UsE^l>UVzGh8_F-EtJO!Qzz3|QFaG{wbPe@_(V}ToNvoAEwwV8(+q5wEA zv~pX%qF-1voTuvDH`pJ#pLE6^%NYmx8uNS`KcU>lIZ5Gtx3(#8fzT43&F@VNVp+gg zoKk-sfo5-eAJldjt-D(F=Pr_hpT#SX48^7Zg?rmzhD!eq-JDKTKUG}nB$f*%8`haW~SaD%~hSP$fD8E7}$$vZ`CQ}t~(R-wtcYiPT+|1`R% zy;dUTz^|WV>5NSX1vcZ@<4q*Z??C}!EdG^s6?@y>>q^~4fkLQEiumi!9#gV2Y;I<} zDUakSMX~0_G^1(94k}}0a}5tqR4AMawCnhRJkmBc2Rv*t_;b+Y)7i9uGCN_AK-@+OOM~q@EH+%V-fT=+c;R zx<=obr6qxJ53Ouz)TBzaSavEGR7GQ^)PI^{6I?mod}2~03>uONh(ScZd3w)_9&oV2 zx?*F`{=1ATm$y9L*OM@oA|5%j8EGn>kR_fx16TDB_ED(x&Kk4STR03=G^L5Z=f-5| za}yWjmgSKH*qJaKnp!<;Qc1n0BiPOidm%KYiuTIVpCP*s>M$((!4HE4m5zFC(`*~5 zX`!S)GTnwQn9p~wG4n&V-}pDa;2%ueQ+v(O@kr9YMl&M`M)bXu(k$8Wa=o4?(?@di zh=|adslx5hk?Y@3zE8)OAa1*fXLpG&52BcJ2s^_Tj<>Es$Y;AQ(#&fA#9ezru7O~W z+hX4YJl5s9TYV2zLSjF`V1WG{Qrt{q$o>rrdALO8{=8(bngB()n|V$54lS~Gvi&vl`Xjj*9TF>(_2 zQLk+kJne)*CmaZPvA<{&8TRU=>mLWqek-3NyA{DZBhKqY@@KY%j_mH1@nfvUhHR?J zwcjeXTUKQ&EXF1x+iw{XN3DL>b$bz7nH_F;q#*4| z`Jkf4w%gCHZ+&ABbv5^!3EXgNbd_`bd*JLZtGZf-Sz-SBeUq#X+y7lec6oc=KnXY4 zd1Q=)sbX!UFC))#a)hT!4=FKor-3;o!PFck0Y<%tk!|2+ox+BuGt`mN(utjOw@828 z9=J}f2hpfdRCW4+70TcT@?4FJ<@s&D)iK*wAdFF+x(+Z*LuLXqL!*XFT zY5i!QaRa3)2KG{e5&bQtD(T;NWp_hkbxK66cu|E^Hy~c{qlLg%4sM=|rN(Yy?xXHA zpeQFRqmxd3LONhgP|LSX-CLugGM^|bVRT{d=38P0(^M|)MmQyefM-+Rlg?-^tY1Jj zV5+x>>BE0Jm!gfsF`i98A`;peb6WHK#u4F^meWeVU51QrT{j+63+1)5yMBesrrVB6 zkcV!^6b|u==+@mxZzxRs3r*dEZTTFHmlMIB>ZO@piYD0B&Pw+N!XZAeK={!W# z;!lGmt!#LH)#L2&pS(xUiZaKqhSeTsY^lZa>bNsJZW5>Vo*}1qE$?hpnN+fx?aj!a zPxBM|=&LD8W@jnddo!^=o@yGk1{&Txz;xnP;uGCovUa%)O2N1CR2W3Io}qcY(dzF0 zoH&L*w5liDe&5_}H$S>gcGscK7{}xy;6J&ig)Lg$E$PA{H%P$rkDymmr1t=USUn>C zbx>tIYr#1EY4)LMFqCmV;L6;Zb{Rf2SQ+ALkmV^?XL7>IA>ySlq;>)df$IgNEA!Qj zbGT8srC>rXYgMvCtcRid#bX;A2;4oyrv!?)aC$umE!iRdD5`Q!agj88ZFVHK=9qDz z+B7s&)tI(?dr0Gyg;RWy18CS6R>is*?JpHU_Ktd~(o@(8A>CR!ezLW_Xa|Bpg)7c$ zLD)b||M68*KswCD9oj0c0k*1TlKGL2H9ySO$%U<}$_-yuf`Dax_0fSCXCcu_P9nrooVlB3zMFyw)QQMevn{aO8NKMBWt z1)xh493~)br!NFtiWY5jY{n9p|zd<_ZIbdOG#L=&y2glOJ#!E$K#VJ)fts6^KP4)wTTUOR;D zkxQs6;vZ2?Xe#2!nA04}RvpOdw&5xXWtdXv3##sWB%6v#k8Uu(H1tS_JbF5J$8vnS zc+y+zdqYwFmZUAklW7F%6ZgG;-6FIVec*j_IOddTY;~#Yh`t@DMg%kgD|L~qbeC+;V2;OmrAdM-x z$>c*}?I9~2@4NqW2ixrf`*?1VPt{>`opuILAcyqC){#;$IbUPu87DhTSBikLBH1Ug zizZ!U#Xt-$uIAHqr>c~-FLlj9{8ejjIi2hfwA~jTfT((_sKp-8cS-FueKmW07m0v^ zpikK(B&;I*euvST1d(t*VZ$wm52U1TO*f6Qscv1ih|U=$Pv`{LqMB&_3ipzlEhrIy z!@>5b+8!+^_K^i+a|!t{J#Lt{zb&UXh~}Hz^&3?^&V&vfb7hmXcb>(405x5su0^8l z4nRG1_wL<%$Fz8=T?&yx9#q)MbJ0i{XsmjRzg|{w2X9uE&N+jDb71*SoSbooo<8%} zO^y-Z2XxSLeSCwEd{kO|ayQ_8AnZpNU@Y@_a!z+i2(WWNxMVpxo>2f)x>c=Ot`5&4cYJuYH2d0Js7NhNTK^J@OiZRJ@2cg!l{oNXCCF7*~fv^@3 z4aaG7CQsmpE=O&PUFDxQZh}1i!NX*|qz!ii@{om<4nyou3`k5*fMieUewmQuqssf) z(fg=*_LA5Jj^+<2{O+WH|+5GcPHI%WUiF(6+ycqH3OxS=e&wm!aB> z8X|J+5tPtg%upmEpLzs25K`Inhs0TY^*Y{dQs5y<1YFkj75BtV79>s2O>n1@&F$?W zHXizvsNTrcsW-MzCjiO1-9!Ee(Nj1;+s6z?7|gxuVTMW>JhMNFwLK&uPWmBj+@I03 zrY@*Heny3X6<(fX^JnJ_SCBuIlPl#!gw)DqT^^k1 zyJ4BmotJo(rG`Mv-hwXt-eG&xDden#HxP6YuN~8)TU?uMPH?ZA)L5H~VZZ=OoU58> zun-IN%R!f^TM1(@AK|DDoy;v)5)pEP84;@PM#};396=?naIPaJT($P+o^GLe!zSV) zefqqZ;S|f}|9g;YTyx$c9CNYHq!0Dn=9fze0cA%MOInZIGPA6R+&+A{n*pobIKmjv z9{tNI#p2E4|M+pSxVg-Jh2)_&YiZ<*=Ef;VX3%;Wciu=&k@YD!?k8jsuIUfD7o^#J zXc^&{Uen4|aTfRP24%n`iH%e3Td9s-O_C67EcFLgo_l7Qj6X-KR)uk3H&~G0Pht8zQn4Y*kf`6?Ou;bHfB+K@^KkfnvKuf#@{ZGyslIQ*JcW(OUy+O zZ^?-Q9t`pueF%YevmejTC1Ukh-nH!lW+x9>Y+akepC&m>0~$CbWPX^jWX=4X%yHe*%-LI~cN5;3O{vN0wG= zZyiUzioH2py6V|c@8t-BWoZXvZGtDzV(L}ko)^J7Cl|rta(xUF2ES2pl~>=H%I-=P zrN45r*W(|Oyr7I>p^VKX(po9$5Ng(dDGXu)hvcwMOe1P#J%H>B7o;Ons^>N}&lE8k z{>1%50|219vVirH=}gam@tuc8L;!#4%I5bWj+`ExLtabC|B6Hy)OmzRQPSNtPskW( z)eUsL6<$alGG7kG91>f@#k{x+=Q8qQO2eZwRHotosoeWjAh(*)Aa1( zrrz~vD0*<%)V$ay0|NT0{;-O58D3A4upV8nG|V@)6@ilzbNPrPosdF5n(*sriE}sL zpd5lN?OJIb+(TauDs{h865FHe+*RzA8tQ6nbqqMw3Zh$$B*&;m|b?AVxMMS z@z~;~c?HJewYjawdP(&nS5FvhU>;htmV!e)m%tf`}rTcTJfE~*KJMuw(W6ApSoSDD& z%+cKr(;iWLx*O3y+fu+ya1q8GAiB!WK{%3Mz9Tt@4;nK$1}w3|PIqm$4|O=QoKb2x zFvyzQP{_uLi1`z9ArBfxT(d~EAjfgb<;k`Yg>(gAK?1P=$J=6nRlF#kNP?>5jZ;Q< z{1aA^{n2(9I+>sDMuI~5iESi8DqtKg9QlYYc?Z~o;z;u>(2A6F(`rqJhsQbZF- zoejs@3i7*d>X!DvTm7E7&PAieZw(K+b1&R%0b_T=#|v7{mu8wU%|_JmwH36ZK$rcM z{g<|jkNQUA*R^vlt0Zk8uAx@OgP3I8RLWTdJ}>wm+B^}vk8-G8a|-E*x(Le6LR&&O z1c_Yrv4`5z6{ya6+6e@?)99hvxwAT4T&^ZQWw;KrZ1S$1z?*QCcpLF}4!HpW46_4p zafKhKHA`6Ds!|^Shj@tHvZ}#e&pd>#ONNc;;L~Rd^fnlJRPFR&866=*dw5^-7v`P0VHHJ4&np!7hO(>y1#ECkiR;9Pq>)u_Y2QA8_+oC+1 zyWI2$FiwJ92$Fp{l*=iYs^X?MIAUTjJn!C?tKJhcmpl%lz1}+B^D-_tkG(@Z4*u)= zn5iAA85xA_PtaKPI|ZBuRnUB&g=x~v<5egJl_*e{KE-8(@FPjjKhuX zoE=qK-DBSM=$~31KY6#hf(|?fD})G+r{p4#XrkS{?m8|gl@Qzke0v^@U#wxm`2_p4 z-)COK8=?zGA$i#qdQ@dukUx+NolkxH)B(12?g+lBOf>S_Vkg#S=mcoI#iu&1I^CqSTzH7rQLRfAp!GZ@rbsw)oKeqbqb||L^p@!aXoSOr)dphtbQ& zk8tT{z=x|YV^a%D4qYV|zC0T||0Vk1A!p(9tSh(QypgVX9esBz0;L_E z{$;Hq!Uy-lK8Kc6@GvUbq;_ScygjpMH}qOMe4t*Pqmn4gNQDV&+F zC}^6R4KHZQ!#2`pjmr0OS2+?#B^(KUk9dzs4i<{Tm33EbKVMC^<_&x+^DW=i@vUO} zoigQee5h<_(^c=mFkYCPKic;LS;iMV_CZwPd2j;v$>pQ9e9+#)Z^y7<&C2`Z21aal_xvrgNH$RAcy*5#Bb&2$k-=-bj zUlca+XTHG*4RabY;k*_Fug*b^y-*5k%rYz0-LPM!{Nif|>b1`UzN%O~U%Qwg;hU>^ z6EKI|CR&Pm^>d>|DstpS#^t1IiQYZ*SKmTcX{a{aZ>Q70g>I2kJ>mO-Ng&ef_p^!V zviJl6A&ykq@uOm)S)F%6qMcA9!~#!CTH=UX#s> z7tHQ#Q0{0QZH`jwYij;=b$(~pDo1_a;P0+k`}r^9Q~1L=&1nj=awYUmRYz+dB{DMe zG{PbpX~2{uC$>CT`4Thq@y2KRH=7BZ2F#bQU=%e}$1L3@&rdV`~; z8QgNk5c8qqH(xP)@<)F!I^3rnxnkCQ$bWxqP5Fnpi%8>q!`M~)lwAmf`~37)q&@k> z9aHMUACfle7C3vVXyyuHvwQ9ml0vLYq#?=M6Wr*NPkj*E-3PyFA`Q8XY8#Mv@+s3# z_|T>GOs{ zaugf7YAqX|@E+h@&Ub5K;ixnV-<5_deqSt6>b+!uR#NS{S3&gD8NSytY!N}3Vyv9< z+9Z8>O$;w~c&9l-FxJPb@lIM;v0$99jJ_!F-FcQZ{?H2>=A+PH*5$b?lhK9Ld)!D1 z;lI4GtyIS~YYDHu6t`%%|55XwZgpPfU3R?3ZX;gkBagfiC3w2qvVzS=TL19!FDdoe zcrBr9#;1%vqdE}%nNF@Hqq}VeWxf~a2JdO|ifG&sVm{KVFwq_q#ydxznHSD5$ls0P z4R?||J{f+r;6!}X5lo9#e$Uojz#Erj(2`a$$URWyyj+?X_r1bg0(acSbm!^adP5iG zDJAZqet{*9zKFzfybuiCi+Jafj9W2{$oWCupmv6LaYqA{a#!qvJHZPI{3~vPPSze^tV#x_ z7|HX9D&&WfbKLt`rVF`dNeptJzKIp_v^4u(*sm^^B+T7hYz74W7}?XA$&W}>e-c20-#zNGI1 z@7;!;hiGfcS%yQYyG%oF)JCr#ca*fxWl1Nb)}6BDpK>~p);#bqC1T?>gUf2ZYS;8~ zUQ;kg<1mmDPkVCpqv=ni`XWYhut?0T8~*bt zgTgJfxw0FOKb|UW{1Z2EDqRtu@_s+KIa8de!7U!%hN?IfNDiJ#%Y+-0XMGvn?4L3f z{w)KiH>lc-YEDDnF_9(#`^duhaSeFb}ef4U>b0O%StN+oZgHa#1 z3GP)G?3y!EVg}336FQ*j9gNx{7S=MQPKoT}!--cbm_(yKC2i@W-$Ghz>@q#fAG-+K z{`;j1^`dos>bB6rGBw|hAE0Adbm zw8Mfs7Z=JYYw`$u5{C1@4-VIF=!Z;7h1OmF+T)PfX5iX2%Vb)}y2Irhr#L$G!+ z`*nVp=LHiBM1d!ZCRa&`E{fc^vkq>exPECTtUOOmv!Z0_!kV}iPr*NG?549vNZ_8@ zW*%xZ?ybylyrFw(PJPcDYB8eqlwElqXZC`@&4!!*Mnn`u|8Fh2r1ZK3U805e!T^xvp|J))hVR_kqeZ{BFF zeq&PTZgf!>l-ZODq-MX}A9B*=0!eH4k|<4xG%2p}#^Xvl;|ZySjZf(6)L(VmIjs;s zcEP}MoW4a^zE7qo-JL)a;P4MCGw9+}ZxyCZaWTGnW$B<%BKHXsf4-!1-jPtg8`{_~ z)Xxi90~!pS{#jX8K3P!V%`l6aGI!yrjWDos;dr+a#SA!TKRI(VrsqK_autb4s3z(p z9wSWtkoo4>Il7$ionE+-Kel(ne51(WAGfI{cR`zWm5<#Ay*nS%E`F!+ioY)BNU5IA z^<+udUL$%{;+D4k{HQ8UV?AM01 z#%8D#?JG6A!kFVwDR5SOCZkWTS}80e*%Hf44LD!-btFWZA^%AgQ~>j5r)+xo$-?7f z(uIzH;{Q_3dC0+&mK+uwJpWZ#d8=BFJrI9H#vqPn`RNx1@?&c0s|(Vh?Z$h;w>KAS z08FUo^NYGnf$z3nju>|y)ou;@mKH~osX>;X;zyBlsbxa^jc}*C6w6N~ zRGj5dfCk!=HwUe18HMMnM!nz7Wpu#`cKgRks1yQ(^#@ghew}=;W=HE{3=PH*Y&S4r zaJ&_+eNWZ_EmQ+tfdm8 z8@uzDZONCNO%nJocd;H1YB}n8dXEuVg((0Lg8!V*F8-Hg+)LGc#1^m*4fL*5A0H?4 za_Ou+q%)+5;2l9{O5Oa<*gCc2V=**IVlJEBXGSP!aG?5WOI9;nHT*Z*zL%%Z z*-{jEnPej3^tEwNbt^9S1@pRy4GgP_Xze`x9i02_(CjPl+GJkh;SWB4KAd>hl}wgA zUo@_riFeASJ5Yz9&gQzBBs?L>H2qf%^Z{(~ow4$M2^I?er!2iMu=FgK>Uz?Dia0Yl zGF9_FK&BpQNwm&0ncC)0vsyf*C!zWG>)j2KvDwDOHw{0O#MCF-XS?pC8}VjuP2KXF zymP#nhl0{52GD`3|1pr+4$u_cP}t6OX(P zC|5uy^Ix8nE*QnoAN*t_*wfrRR57`G<+)bmcTr~>sMyaGmAt=xa=P*h5?yME_C;h| zP0hb>tlcJO2zk6Kv8NVkbu>9i{QXQOq(iCN-NUh5;6yv%L~(XBR9Xo}=L-21C=^## zqPz&o-qY;wbo@5pidNT&Rr}Qg2Qky#b4s|Tya^0k+Iy(3z2~A8g^Wul_`Rb53HY2t z2+p-c+DXBuE86+#=V_`!GNSXZPa!8Wi2-{%RbR%?H|(6Ew0G~VlH zjp*~NUr+4TzqLMB8hXz-$@oMR{BtPS&o*0d_Z#mvB1P%3IP-WLNnA?fy+-vYu_!bS z)Aq*Us@)1|g}I=!pra~Q@N<#E3mXAfc#Ne-9LvJaQUvBoMda+k*yqy2x1QSy&9{%! z2aU(G{H*pHUEjREMdAG@@n5P3uyD*crLz}{76W>ITX2|IRiK>X_7XWKh3~pKp9xtZ z_`6MGSK2}wd!?ybHiFCN{yR}_?%Rh6^ERZtAL%#y*5*RP{_X>fx33GTtZ^z$gu3YS z-#&1ErjZ3~a6aJ$;~(YkO`9=yDO!ygC}?gQrG`sSqoaxz|B8ppId};1W?de0)KaQ>oX+uLrXYGGFhg!Oix7TPs>|Ia?&UVas-z8 z!wn`DMdVo4z4Yp&Q4_VIl|6@8`F8c$9?`kObMGX-p7f5UbxsDH2{>Ce8Bkx^Do`MW zz5Mi2cRV^V(${h^r}e|z^|9b9yFx!|&KuT@jZEA)RaehZn+$L^zHaZT(8@nGBCLOhy?OF}6_Dmct^)RB@r~ZQU6XWc&ZLlNg%O~lJ+!FsSz#Z6JwaKn} z^7$jpxw(v1JQ;An*`Q`4C+xuRUorAw6bK&)$i)!n0I!=o7RZwUbMf7+MAlpUKalTE7d;_^F@o+g^$vao&r|JcoF*WiG z;-{JonGE&gx_2?z`Wt^01xr(lupfL(D}K=y+9@kQ!S#$u^y(fu>Hlpq=)2ZvVqw`~ zV?0}eVbM|ml7*Df_dFSw$aX6X)$8^%?0&G;*Wp0*`4ToQII!SkS@Jdvm9F-FPTvjRF#k!{@!(t|JHfq4 z#$1RHqU>Lth^7)@^&*-r4-P#g}RCb zk7_C!uWR~jb3>Qs)~sdR(30*jcbF7}c)&tPoby$p;CWn`s+&@~t-7*|PYImrDX)#c z?>U@ga(?ck)qNrNM^pISb4x+XH*71v(@~4q<;NwH7%oTu-5tWv$N|P4FU!|2pOdC3 zao;3t*X{>$(ql17`|%8vTR9Bpw%0{dOsplr{ zo&b5zIbKmQVht%?!T)TX+DZvKe4=^rP$0KbcCAq>^57;UC=`qd<}JLNludT@@sskB z9uHkvr?*-~{e!*1C+!ori!($1(CM`d*j7I&@2U18zGF4#loG{S1B<_u+1U!y?GPRR z9Cs}5FYPQNsIC=&vKmqnHIb{uQ$*q6t)4#h=Tg&NaRl-&x>n5e5Cw3a)y`&NJWT+# z8USjePGD3}4wUvc7pQZqwv*gLOzRR!V! zG>b3caF+pP>E!N$x)rR)Us#;<`9;GCqt^9vWM_OSjfjm+jE?W`O9!|$TK72kBknZm ztW$4k*V3VytMc)1-cqZIlPiDTlbbAQkX=TO z!Ce&WJ=Ap7C~3FYA=KUx`55avrOesbSKRwT!3Vv1f-5QlQU&A1Vu=5Xd_3mM^XNXE&>R1ny zUgEJg0>;Vs!almMHeJaGTg43C+xcX8f53O8kB9je(Egv;`u&_Zc5v+dlV2oC4fibWs_QbHm7U@K1&H$nuNDwz*GOvzzU22PiTTD~%Q;I&9_`AkZ?zg; zreEI`UcMJ{!i^P752M0hBn2i)G{?We4;}Mn(~#At5Y5g{PbQ$R@Md>Yn*R9wrM@fL z%4DbCq%59>IRY3yy$WeoeTnvZ7h74AmcX2N6T9}pL3T7Z`Od$AMPapKJP;=SZ|$oE78Wks~8(y;6W7w#u+ z(l_P&dx`VX;C(9R0dGmMCzTUuufwy;Ldin5!F+%w>rhXaa-zxiw);Z+n9ja@ft$Ph;08QL=j&=`f@Z{)lMnF(CMuu4S3q%IWXO zbMSm%_63n4#$pTt)OJk&#=|v)w2g;cE2MS+0I>}vC1VRoFrIkvk5g(bLWO7B9fEbS9`wm-1vUJgLUOIFdCuz#Qf{cklMW~zd!mZrt-Y;bHiEQcnW=N{ggL`rp--B)Y1}WT|i=&gYd3} zoduwJHOj)GlR8GlQaSpQvk}bH&4BiJHt|gEaLZH$Kk{ZS((cx#Ert0-mD$Y_F&Nb@ zQY)B3#n3E#72E%8DYI%%h)=y`UqK2CCn^zmx56CsD!$2m3=MDNZ1pi|P&7YEq0&xz z9>jhCi}UBn+4=e|w{gp!1;({O8V&%97${(2cS}wX0KfSplUNuEeb~;?G*Avx8%1 zN)$FPMx&3nzzn%S6HY-;9&2eSJLL9}zDk%tsuj%evZOQS^n*`w9$n2{KqS1+PElSl z^M9q###(*Q-E+og+s6J7hKL4QuH*Rg1=Dw%ax{ruQePviliXoDyduU_bmgM#E9Ua& zd<}Q>JisN=cXn3&qFv5b&udN~pI_Lbp|`p?mNS;*gz-;r3lp7jb#AAa^Bdwm@#mL5NZ!7gqhu7U1!XN` z#&Z3lG@rq*$sxx6sW}w2_?z^Vw!{f6{xSW)aq@1oOXWZ_2l+9j!7CAcC1b{gaSA!w zwm#gYaLyz?@unhdc5p@1Z#^{73jp@w&ZRy{ZpEVc5hs~8B?zM0;z6Uv$5p$TwU4J& z2u~t`&|Mk5j?mFO&sa`rNQCR?7b5Q$%Gy6(qR@AxZT9+Anx-%xcs0ufTBC*T4rr5J zBZm++0SBo*^?2=%Qzx?Jv=WbLyB*{7sTf#_h>115%!W%XC3>v<6itWMv*zlMav>UC*`;DD|ImySXQ*4vE^8QtqkB8dS z{COp6e^&sy&0!@9pGp(h;N$pUA$1@VQ>a0eGe12_n9m->=IDRHpH1(KHzlNc1{cBf zYo?0ocr$03FYd`O*KyDd^~dM1BPe{Gc_3_-Gp#qjRR`V4Ve5!=#pAj8d$AUQotG9! z!bJlROwI(qiCvMN#%@jQH_d){FRn6Rb}v0yz5cxd+Ji!+?-X8?JnuPF{YpEttdjeK3{Q;!og`X(D%?r2v zR4k76`l3Ji{FG#iwKKak4L~pH7n68I_YVui=EgXizAm_4k)MzjDphz(_Q=jIv}jn^ zLbAV0sT9`Y33L(MQh7uR_Y5?l^0Lk|hT1|oaw7-&m}@<8D+F(#XEkp5{7g5vhhdE% z5w>ktv>cTPa*y?|41ZQI~Yn z`2;{^)sS$OjEKStY6_Tag88b_MRC^D6;-=q*|}fs;`nsx*Q1lazXQ4ow?hA;gN*(0 z`^_d`t|IXbKsEn~zy15g{)fp}{J5ulhKDE+EH!c{(ZQQD)S(N>GMhR8JS5y+TjJ(% zHY`KnhyuiU=`gA;pk>ESz(G6vVbmJRZN1ht=ujMyjU$|0T-Z**UMw@;jy15A=kl%@ol;R)Z7pI#iTY%m!{ zMdu2&8yBQw&;y8Xl-z_tf=$_An7&MbOGVW={q|=xHIG!tV!q}@SKz{AUN)!z=5;^s z!zhA5Angdr{vJ+R4ejaYpvSas!x0Mffm2>|`%gA<-@_nQ0L7sX13FhE+*LwR8C#?s zZjR%$%8V47dmsvc)Y$#I51$g%?}O+>>E1a&oczYM*~Ojik++}uT@enYe6Zc&tQuc{ za^Rf*M344xZ}GYq=wl4uybFl^PT*5Wm_+&p-j7nl*HjusO#L_ezAwTf!p`>{F12 zXU;S9TD)BT8{|YBZ-u3H9(nKPKl*|D2cIJ?c5i>!)Ea!1OX*aFhM*45#&Q1guRg(L zMs6Ovf;zc1h4-Dxa^0@8CwaZELk}%EuXeq#98dNi(;JL63>K2G<7vfXm1d*0i|Vlr zt;g-HwxVC4!hr0~xr6s9ivsag+_vpE>HHZiKGji?>fYA`e83ZYQcx1-(q1}aEUU!2C!8c5tNflpiX(qYvQMEoFOLP2W!)f~pY++WF$@4=WWo%S|0;bM8=MUq6txCg#}A4aW9RKF*>X zd!LoiMdBFIj!*1(Dpu=S%??0cwiggDCX#)g|pSH#27)sg=TQ+=s49>w*Vb{&u48v9=R-!jBw&n9gt<1cAj|4m%$ zm*1Rq$C=bOK-zNqIs2u_+>hozQF*A=MYyhekW12Of@}1VI&ab0vKMHRR}I41`>pso%2r^ zuBVEDd#pd!$J`ARgB)}-5owkw1qd{13cXR162-8Jn!}n=fF5tga0ZD6NzlZ&dhvy2 z{1HFxVD6@%6J>DcBliyA^vDxElyDZMUt4q9=L1vG&AF`N&+?&}p_|U-pBzkE1(}^U zNj|GOM*DZyy7kW09!~OKIrhW+b1ykE-M-AB_{{a^WuG!7!VFeQf*V+}%c#|F>bS^% zbc1;c9*(H`Fm!l9wb__zS~k?GjL9DeXjC}+2;cUjbYTjNN0~WEi8T7a%)xmF>7tYt z>r}sZ%*la(5)b@aot#zta~{}+%Rhz4;Oue$&-?wd`IYakR)Ix%Gu`%DuWn>FI;$jC3PYBCiZVbgMdk z(io$Y=?x7}1JDA|VymBBBQ(0?Kr=-|!GEY8sIN`A!KJEd?MDO$322@RsEIWKV$N3( zAlm^E_@#G)JmzMSz?&6wtn(Up0Ha&+6`4|Bb{XAG?d5h}Ph&{ihZX&9%x_Y>>?f0A zhX)L^ES!>^awmr2jctc9C=P}O$L7qH!s<@kGyD=zK7(-$3;$Dh-cBPT*)5m)@Qip5 zc?Ukv9sKLvUh{{gQ=W_^ndPIxw#624zp1)5a$w~U8X=k)T^FP?o^bEJCt7U5L2{1D zl7eM_l@A&qgOJdeyY;5w z7vXJ9mcdwAx9eHu)|&LN!{w1qF%kEZ_;2q-ej$xZ96Hnd6@Og|%t*_+{b!LELX<$V z6*fWSZ26GMVYO5U>w#fuN*HO-xR9q*T_r2jt5~RscG!-8?GH+D4m5lwM^FeqR@#N0}&^{#bg(s)6Jndu5Hm!W#6+)4TSp|0w-VHJE8CW zaXS3i&XvyT{`5{j$a4{aXUhgkyMPw26JCUo$))=lW_Ca*EjfN=Waa6uu%dA&ts{x0 zFuL<9C6--l!a%lh8K^>AU*`j6t#;Wb-dN_nl)tZf;z#j@vg2>*-9Gg{N|Rm2Zl2vg zAROIBvC-g6-R1>J<`CLoPw;{|rT%g#uPg7G(C9nSR#{5<@baQMuJ&^9k1_?S5&AfL zWzD?Z!oyM%E(2kRZ#-fJeCZcdQN5$;SeXF<_p%D}4VlYutor*T6EE7N(}#OI&3=#A z90xSo{|RLf*Zj>$%r99}Spx!`&}qtPKtO@GfB$-D_d^EwjQJ4yfI{a_(~BVsDpQFC>QZrep$pgupZUIdv}mlB=#S;5SM&-p2{NBx2MrUHRngyP`U znIG1Cpyww4tDYmFP1fg^C^w86?=l>BeF&?}ZbN(xM_SfdffuPnSV-R4>h06WIg_lw zDTjYsg>i{eQw^up>*a&$^S!Up1-#2U!av1LM94KnzQpt>)~d0kHd(jnxah4C0(_jr zkvaLgd91PDknwngnZ42!{d7S3>ft7Na`Zpnm=wQyU?B&g#l1{40yMeDsTrzpT=bb8 zibR7m2}g8t|Es~GeUAG4v0f8V_UpL(;&^S-q4qajmJ6!QuBA4jBi#?LAV__jR}OLTB2aiODuJBf(MfLbEjcoH=I zUqibJl>{gi4Zn`D{3iRwZ+86wa<_HMo_afIaDEP_`L!3ltAX$}UZCHQU;JU|8v#{& z5lh2s7tVa}c^~I;_&iN{?CFy9lb%$ZCEZuJczo(OWlg#hIR?z{$t<%k6pcJ|XO*na zr?`e&Rrl;zOgj#5Prb$S#OP8y&qN+!m9fS3cj-aS!s&f6fphfGyigQ-CrPtMam%>l zuX5}oHCv1xO4rI>C=NZ6w8g-0W^-Z*EADD&ePS|p%xs7Ff}+eq@)iSwDCy;*$7jT? z8^IkC0&fd7@6Erz#b84blkYdQU)t{1;-d;^MmlgYrN(hI@qi{Q{UElsD@^@BbJ6&J z5D#;DX92^r2wD0^?$-y2Z*~PJyO_u!;=v5BUxiQfYeS2*!|o}prlm11siM@LdJm_; z3k3B^v&G|E7fdR|3HdW3S_V(`6Aviuqv?~Dq}QtXC0Jpm1I)!Cy7?csM65XO@*^gJ zRb<}CY$H#wzJHC5DcTx>?2oS#4+yzRzg#^5yBfI0L|6Mbr9OH}1Ebue8zWjersZ!j zXaqbbV%z)fT+znoE%AF&7dhIQs!zEa3TyT^MjRfXtN3FID-ZeE*e{4~KpVSH^w`{J zumi%~5nN)We{{ux22Z-8dPykD|AO!d&d+tEIPVgK@a@J6Q-EPMbvb)z$#kUDL@8GH zIQek5=s#U!b?YMThvt{|!J%6>ZM`13OK{=0|1Hb#>;5Mu&3ia~NL-y|uMe~O3HY(X>TK*-21y#qpq3LSrMMJeIE zxL`1NyU3X*nRa5QivO8xv>UOpJilCq_Zi~uLL--t9!rY~2bA3a=A=(2Yfq@`KCM1`aHJ;go z%Vnmkq?XHl^xD3J6>T%{kGu-lM`cLRea^|f0;t^nL#B;#;WwM<0bW{*LZ*Gkfgai` zk)gNElT|na#~4!gcHB9#_v2USm4S}Mr}H~clU}p)G)`-b)hAD%Z}^b-_A*bDctz~k zJ05Lo|4-|O!qFtNTvV-mSW&uBt5ZcoE4F&ZESdszeO4U~d*ifl_eJSQ+qpmT_i=*` zD%x$VA6%(4f&roPgiq=v+{O+J+O^ZgtN>q7!=rw( zLnhU1tsSdOtCI?QTj?>aIbI+DagJ2;O+AX}=$iV^tTU`={(_=tdbnocle{!@UGeP2 znuYpsh_@ z+`g`pO1l69qd_k|ZXPbN6Z!a2`3WCq0DqVtm1W*mPQNfEJXVsSr#P{l(GortBo**>P7e6wAC4W6Mt@T^xg8j`N-!=GkIh4|LP zZNBmey>Ydpe-Mt|a}Fyi8Y0f%9}NT34Yid4C-NC^M>hGE-^<%CNP`;Qm_*-6{R%Wo zGq+bZyCN5JD)U4)Cphh^)i(zk{0JJOZ{~vN1x}06e`q=4*>xMp`W@j9TkkKYn!`r>Crn zOlLjVgaGHS_u&=M|6~;bJav>@HjBUO4h{&B>>%@L>4x=fz9Hp^4h}jbPx70hqE;#M z+xBMJq1QN*HuTD+y*PXvA=U12cTc{0+G~s+3b+HM1r#Zf>C_#d z$?Dq4@RD_-vsQiS2txS-4Nq6&+Zg;0%@at5#qyb9_fv8Y2h6QGg&17lg>t88CM|m;iDyUNA?fLtfft+-Y z*mHFo8U^IH%y4@=hQplLMp5mr$--x|4Q{paUV!$lbK@jwukVBdVEL7=cM)aqIY~DHBCrnN*0X85~v# zm>msQIVKg2!|{#f`Ws?7p&H5zQ=g}T{Am|(V!oDiv`J!lv_H`OaMSS0C6xFx(uc5pYx(nQ z`^5=4XOTZwM{bFF&sJfFZ>yk1Srfs}gz``W#Yl4W%ow|u@q-gb30xlSZHz$PewCZSrAZv&gL0U!V!zazI ziUQKJw3|jt8D=Zt@SjK#f~&G=su6n3p4~;}L>?C2q-86bDbZVM1dNSsMx1ATd5G$| z1Kbg|@E>VzF?SE+Gux#U3_DZ@_|{3-HE3LH;Cb2y;_IZRF_6axuq3d6|)XIarzDHIwE=^<}NtBy+5pIV0-z$R)%fa zIew*O^wUVJ;oP7S`~Y)<4}d=pT^RnS)xH9}d5OXo%3^OTtQ=wZYnQ!!vyX3;XEj<8 z0*UT(Q}TYu@x;pT9#B8UbkX!TRg;MD`8%=U%c;9@ zgvlQ>ds?k%s-BN9r$QG>rL~Loe!BCK*s;a&IlXur>uO6`Njj$z^9dMhc7#+z(Tti8 zTE(6NF`X8y!Z3ECE-S}kCzdK{;04ZUiv<_maYy&^v6>?_k}fWJ0+sZOJHAcd@xqI; z^Xe5#g3zPok|Pe-Q5D@Yp!|#evr&b7XYzmZY85h*NneQ_Ej=x)krqyiMS$hDyz7z? zp27RXMB_+_U@we@E3lu^k(l>XGV2jg8Y)S&pQ(R=KO*@q=A_DEw6i+Jc4jx_M8y}g zEjV?K;;GaUG90-I`HY&3r!T}@WlLsx!;Lp;$1bbrPL|WBd9&L$lXw`OFm9`KeA9Lb zl?W~pfsz>bDlf-Yw0AR4aHMps>5F(NKf5?6zMp}|@S6lkap5@s&G%&bW#Jk? z3a#gWfdNt=`x7?RBL3JR1ggTy91JI&1#riqdBsaQHUI8o6SBTzB}vlYsHno|QoXeM zyEy^z#(QpktR8{N+yU4@vLVw%jZ#Y6BkV3nm2vf}IPVi&#H|&pO?OO!mSxir8pqDy zoebI$bb_06VjS;>O?7FlBFyC+F1Kmu$LvU5JK9>_*PjgY#SEZb?zFG8v)}64zHiW0 zB`L2vm3J*J|3}bB%!@{Tfu<$0@Zv}^So#ASgZ^gPPr}9B6#EU}ksV>Uwh#_KL!#G! zLFZ{IdZzN^AP!f=UvMtK?X5ngEQ2&Vj6!jHjjZE&HWXB9xg@bD9WWW536Tv(Xdy)> z4?_)s(<>3%43uPzEG4_QC4 ziF|2}cAPlg`=E@paQjL3@o@V`KIqG#0)u!PBgnu9FQxAos!RY3nv%FT|jq1s1(b9^n4ntoPprVe~OkVXdZ;5Zw+ zAw0EM#?K^BE81NtsJj)Wt(@q{%gF*aK05)k2aPMh> z>dSpY4WH$O&!MCILO`#BbY)*>kZN3_j>=F+xVFPR5@~B#pZ8_aHB#qCs;j2J-5WRQ zV<*Tq`vR$0jvQl0w1238I1T30Vwc$~iw)k`#`C}fdCZwMg?0N4-E*FEXaq7ScQ)c^ zXc`1$g?7K1S({qpb!`npvUi2~)sM7J=Z@x^8l!5V0rsADxj$xVu*+WxV)l);={c38Wp#$u`(P%UiUW_Ek}7(7krz{3hiQ~LKrpR zO3;8?Oo7!NVT1A>hUYDxsazL133_q_`ALK{)pvtRkB?x#hu+5jj}B&HgMHR>M+`)c z^RZp5t5%OT%+=Z(DgCoUPp*ST%nnxdC`kXLFZX$g95@y`O7v2Rk@~!}h`)Aw3ev{VuI*2EgcSobZ1oVxzGc+Q@5b#5 z=Zf>MYYors!2kNNv5j)GW9BX>NvT6iTldnRY8kl4(eG->j{x1U28Ezcv?vh?QyWR| zR%2dc3;h}?159V|8l7{Y{h!E!*B>pw!mkcRKx1grF_Vh}AFozcX)J^B`lHQBlxkH7 zfr28yo&>6QO`TxtgoErUkwJWMkTx+|kMH)D1AFQK45IZhX1jtI}gx;n#+MvR5GI3~&qk8Y@ zHcpBo``)Pa*qC`BGY8sL1(8*_8%8b_mv)DmiT*oKMr&QDu;MeZ5`YX+8#vw6vlt}b zt=QV|mRBn!P_N;BHeP59GWgJ-+|cxPcDm$-P;~<*A zUV?vb@Vl!fa>h4}X?8KvQLML(As_C1CA?7TuRF#}Uth7Orv+vU>2t3kD9 zb{*?`tlyN_=z1BO8kiTzsOe-l9Oc|})Tsk(ED|o|U@*p!!7MoqAngLw1E=kr`xxJY zYgt+_czGT~doY7x!EzkxZ=A0-eGr(k{ZI)I1;E$rkGx?g4TJ3jxeHc?nY|On#T$*j zQoO5UA1CX3>ZMoDkB7U>r5&wVC8ODUNKNJ5YDbq=7e7%!&~K~`mz{qexD*e&Q>)?3 zZS#$R!R~;H%cuRvi)VJ+AB!5HwMOLp8_?%B#0JyPL*KT zWvVEk-wx<0MA-?x!cIz5mQ*s*rosc+9^WwEAMq;^6Y`4oY?XY#=+=8~`nJ?-V~LkR z9Nk=`NTIxu2I*}nBpU0mB+Ri+r3-@ajl3{LmjR{v8={9t&`ScDh?6MJHHe1bIwYd{ z(n0=C0YKbXDzbsSTG<&+)4OoXk9FD~KN1z;@>QDazXAQuGtjh?38iARhE9NC?HQn9 z#E4~I$k=SfReJ7f_$y7mtpQkWM0-Gd0Vqdb!A^o$2Ay09%>Sg*)M%RBhV&X?*{f&M zZ&(Q=gP=l;b68cPwg@ft zQ&fdrk5*hiK%DWM z>T2z$*5&3IPYqtw-}jC!8%hq1HGUTtN$4;hcgiomI&OdQ!~3Kyr~nyd^BXd{PH=J} z|Cit7|F{2V9_wPJj82wWd8|vZF#uZ89ja{uTu`-{*8A5bt6d~laIr4&$LZtZYomv7 z_zoMqUu?tdPj|Ek7RTxskr_QI&6U>a?(lT^pLW+Y+j~dBuE7TsX0r$?#}!rdlC+wc zXXatx(_w`wjSu@NehwNd{%OGOiqKedX3s!%3p_uK2g=;5uLPp*L{mdVY;-(07Bxd? zW#Ue~|JC7UU>hBE@5X6Y#ci%%d&q=i5$AnMj&npDx}0!MFLU6UW*(XPrHB;}teXRU=QD3-H?O0hKQ1k9E8(Cy9kJfbJa zpB<3oSWwzowP{Ni(dKMNGSt~inwvt!yl8jbL#7x)IcJs9l137dExEq|o zX-&EesfN-|2vQ_5Bs3-TEDifY^mt!;{Dy9hu32OEj5AZ5l84P;%o7sEdVf|B{Tm?wN?w2r9**`8#iX}WPC4DiGO+m|NlyIw(1IKX2av~qBz zFSd`-nusO)bx{4Vg>n;cED6$uBm}EOK(en&fJNMZldCR}6{_|pZBGr{w?}pCM?{!U zOD3>^|<)v;LFSm|n?8LlCg6%WY!$|?TAnqj1+zZ{d)`TT@ zE$X?3jwxty%H1117e2IWm( z*VWX|ki>kfJ^T`u8jwmq*#S9(50k{T>tY%IB)h1MnxE#TJ5BW;t*2<1qM5M$=UX52 z&9dbOQUl@zNNUx9z65E<`o8}BXgj(TF%5i8^0hd9g7 zAz&yYRv^tnMIwLSguy-2;(!8JO(T*CyRrL;WF-U2k>Y>}a5nonXj3>3V91>SjNlGb~)- z>IhZq%#cNNRrJo8}l8vZs6Xg`d-#Q$;SU&-LUc7!C2-v*hSN0>399I96yc%dtt3VVGr`r#585*#LIwWuHQJwoErLk=AG(>>_SKtSl z0k*od!m_WxE|mUVGraWWw+sX#X34E*a}^bKqaK87L+%6|p>3)6?YvEw4Hs+-a9~F2 zbeS}0MchR-Ntgjv`zKBo^DAb}^E;CSQSBP7!U|&|^{vwImEYuf>leIr#@8=2y@)kb zn$A2B#!QC-=`oBg&y!$0mYoj|DE5$8xsMA!I@h9Wws=IjIvk>G;>lL@Nnoo_Nw8^R}UvW zQOHNfd;IfxSUzphodz++qm+D$vNvMb-6sCv{l_5zqV%v)W6HpDJE*Byz&h&rjz|*}hN%{4Yp@uGl zoQnhTfF}V~)(V$lz@sf>%oI8bQ4qc0(wQN0(K~~80kQz{Tgb=cFh|>AjT+RNO%Erg zG&<2MEpYFqD@6Oa-M6$L$6igV3v*WLt6-y#?~I4jji+|ljW3#e<5_F*E)ugQCyXkV z?z&=5oT+H6Ke}${d^5*wVIaZ)4mC< zDn571?f1EZ)8KDjk6+Vu0K**_h?RK7ZrGZd5RF$6`t8?fftdV~O(4%-I~~87phD+FC3?wZnOX2xwKmBXc}i{H%-A)1s&R5`bk!@z2D#1s9>0ZY z1oG*td9nQah@2K{AL>UP@#2aI|940l#;U_SSx0wAQa%IGaO$ReU-|`UdwRE0-oFSJ zEbTAEw3{T(P6JX8sExl|f8!TW0&1T-I(R$Ne=}Et3mfFzbSQkUT%*V|&1%>bEn6G7 zwQ2UUEryAQ52-Pm$p^asU8+HtEJflqX8qelKQNf{H_VpF*KVYF=uyVdX!t(C{vETz&iQ7;A_lFUy7X|Iq4aR9;l`QV*)y8O z_3In|7L~HD-ni+$yfyps)1p7##GT)jt~+@3)|>9Ug)gyhZlB+U+ofBY@MaHg7fvz2 z@#&}SS!e!GmXiL6_C4Esv#_8*9{JOQzw_R07ylBed`F^uQh7i?o~@Z&9nhPMiguo? zdxk8y^EF>>U*<>O=%=BbXFsDJUO!Nj);xvxOv*Q}PPwg%8ooV`t8HiPiHcDYShJJyj{Xqe)--UYqDgHO+)Y0y~?VoY<>>5v)$3!Up06skuy4KUZypPX8)Z~nC#P+ z(Erj$nijAn^WP(-U&r?c?xIb1(;}c4|(y`cY1I=AVy( zx#GYPlxVM|nbFaL|}9zN6n)RI)3i$!E1;M{Rp{#slvYLoquW6~!7Z zIsAxNN)et`>a^8WZbl`TeQuZRp=AW9X<*{{hj&JqsWio}V~0LWU9nOfO}E0dofwM# z`D{nuSP;v!w8Z?=iJ`^UCdFx`XCE>%Vs(+Lsw+j6kMbY+svEQLDyQ?GX9P@tq<6Nn z;cnU7ZBI>u$Cnp3|8C5TfN}yIA+%2TigLJPi8P3}R5hR?+$ukm@65rsRkad-@s^DU z&sfw(RCQEVAX_`$G>{bUnUaSX$MfP*dOOeK)$)-9m6tu*Y1xT?rlIqYo*W-`hEBv1 zB^a9g4=i(GIxWCcuk}fItq&b{*;E9abmuAsm0}|2KNH{PI6mgNn!h*4hK$get$g_Q z_DZTKPeSjmvuD@kt`qekahUJweGA&;Lk@}aNWz<(XCrLP2hP7Ei%N&L#m=yc-))mF z*8R|Pb3_+XC95lSkhUbRd_&J=pQ=g?pW;dqqt*Y*Dc7uK#yJN)9z8q)AKTA>pTDhl zD$ud1iQZJ~derYNspYDaAF%;YSvUmjImq(u)Qnn*AD_Q2iEyae8{1UkaL4O;K+DT> z(go^>PP+!ZDT@=s>d%xtQ5~lK#6U%qjorO#djhK_IbYgcO$-Qu$5FO+iHkm$B9e<= zhs7?>Q&jhfHMrYX|0-Rs{+&iR+Mcv9sMhax1V?CtLmIMSof`^DU7_TJ_V$Q-s^M4E z*b}FE{5<`w3oF$Lc_sTu+*USh)1*z^e-(5v$Cj+*Vx1+6uc|z7^^;7NQ3k%IQmJp1 zBDgc{V={Coi2KO)RoK(ljx@?L0}0dS`F+I4an6qU2v@7X|s1IPA6G zhg}IjQn{nV68(Wass1(k3n9puLR7or^RRLPNpwKqzVIR^zl`>}E-0pb)pY#KB)v#O zx(K!4X*AD0?Suw()*{istlTUsjdT{)LfM+;PHxryA9M+ibx@cSMWdQ5i=oSeMbzrM z%X9G-aJ4FC(9v8t3)kxDv0uJ@>dc0l;b|_|sB+%!PuSC`Bj#KAFfyT54@Q-c$h)8j z3|#a6k~un*hcEw>vq${e`LSDADPoYMcvNTCt&2W9f8EMYNN1I!J-e&*q|gmsPNxx_ z(VdH93M^Bh9c^JCVA?B>TRybzbgQvkH|DyQTh&@dY=3dup4O$z(g;l+!%kQ9DKKzC zXdvMX^!h+Rd0+l1RM>$W+qN&8zl|{b+N)trU?v@Q@cRzTn2xl=OOP1R+iG)=#9wW1 zYZZaW?puZ zds=h8Sj3EYJ>);K4;t0AyjnhpBc$JMEUHjHyIH9s0yI7It5LOk*Dk2U+>EYlVSDSg z+oj*iwNbO8Q`_P1UHuT=1|E*bY4dGZ7Ns*7&xiom47wRJ^dQk!oy%}_*s5RMl1T6U zcFmj`0lr=$i7M8KmIYVE-lC6;@u#IY7uu0hvc7fs@!ke)TpUl}dz+_t1TcZ+J==A_^j0Qn^Q( z_}u)M;_;ZC7{dIPa3__qv!WJKT&dgFIM8)Mkzqwzq<@#D0KLRpIW%omyTUG) z#O4hdh>WF_djg>w5XFxi!FO4 z8A~~3D;n9IMlr(-4WVtAFgaz*2&E80G(!>1Vi{x0*uGg$J0lv)U`#lt#2Cw*%5aSE z``pv_`#itrpI)6hUd`P1=ks2!>v~`B!?_I~x}CqH%2~&1t;I^T8+9PD&DK1w+k<0X zR`P24ke(h6^Tx_~wSDk^v1!~rI~B@w(krRT^9}o*cOmS?)7hj!$X7zU4KYBKXS>iO zF%ddftV?PgOHg#y!7vwbH+}2!%uK|tI%X1xc;O=J7Ir1ws;)N!#N62QPb(HFyQ=;k zJ$WadBtuVLt{|VnC$b*H0^2n5dSH$^V5bIqf_@fv4S(AUdkH~mMsKK{dPq?14kSin(r;Q-%Qf5 zPeO}+v!Ko#V2*`^wyw)}GXS4;fU(82%y(;JAu*@t%L>>DNrNuC41( zaiOj8#x&-$G7(;(&~Oh3AQ#kC0T`&B@z!(by{t_iI>bWOQ|Y!pT5v!9BIc;vA;vR< zL0bjC3zO3uYi)HrX<>C)x4)6T(EarI_sxR(y^*(BwzU{>JynApLCcc0lsNYs#xZv&ao3{Xy!-`fU} zE9`h=vz+S>T(RK(67!Imtc$hu-g=%3npUnb>sGHuE={^FWy|W_;zW0UkQ<$y!kLRs z^G*b?L|R^zcPh+=;A`I{Y>}xmn6}OjEZQ1g)}}emEDXJ6AX&#RXrSNP(D=dDW^?e# zjr0c_BFK+#y~G?{-*xOf{Jnh*xyxoz>sj?{%A*Ytj*nBJhxSJ6S=|}yRJkDus7HXB zFq<*%Mk)uwOYq7KNQS%@9!oE9$tZBxbuu9BlM{3Nxb)O>${L<@(voctF)e(J7&V;Fh}@%hiayB zk`kjW0p_bC&!OF^Co9o)m<Wb-Sz*LMFMB`oYRq{+OeJ!xbHnTaeg*_C<8x-YJHWY zPh=g61G8bzA@>exYVx86|Mx`Tu=om=^u`aD2XECscG<}qJkcyZG83Uh*GQWAbtoBu zW+}{CTn>!|pSeAsUa8%Bx}*MnBy6o3^{(RUn-0Ig(CK?|06Rp%?_A(9fpWk=rW><%hhLl z&Mweo3CV~s>*?5?8t4`~!2{MS2I4d54}qiM4tzc^f3z9Bqt0IZhA z!5NFsG&H~)LM&)|>f{eTH*2j7F{HY-TwRG#{i=Euw^5ZEd_c8`NJsrSE!ilSV32CP z2y0RvDf95Bs8sQn7azlf;W53bN(^!WY&G2S`fkoeTn5d_uOSqet$YpV$DP6_BMv)s zRPmdN6i5|@n=3q9wzrp$~p& z_<>j-m4+DD-{w_nCuXa1^thk`$FR2eAUi_Oq)A=6l1 z=(5#O>k##7k&C8NEMdta%%XLyI?f7W6X}m5_UIOEvSO2uLz(q^z*_&&*Am>&P8TeKyo`%w zz}}I11Gfc+(gxx@wj1XtuCoWKtBK^UqHSO`q%NxX?c)TfXB#N%+75HYS`C+*HGqX% zhW6f=>uUO-oR`)fwK|YY;d-r;7#u+0Te2DbZLh^yoabXZ0g|i%%(x)`rd<8yfpdqX z0b;O~U=1C^5Kms6P-8xmWz}CoTmhvM+E}~HRJ-S1ppOIU0qeYiTZJwPhQ{v6EhhH$ zNG}a*Bh&|w&Jn!#%N%mAS1I*WO5>&cO!Uo&uME`{NbYb*m*tnoPxx4hp z=r$XuK+V0`FUgB9Rl2kXB+uR zGA(ev<3O&@CC^Hb(4c}VFckDIN=ZsE?|Vvm-uHKN!9E6$?07d41btQ9RFfWz0=E;mdISHBkqjg3G2IH%!|K9S!0aLgxN&T?1%bF zCH>jl2C+#$D)H?XhU^L079an2|f(e-D45+YcU^(tE(pgx6lI`Tq>c!xF1K>#!)$`Wc0u9VlN?TSNo(919`po`w-!rF z1FKGrn2#*WomGFEolLSSG5kdaw$ zfyTC2o-eR7KXifCByjpX9heaU~1g-(9Dp$QBI?Zc*@Ypmb`LiVUD0G7ROU=M; z9M&{=mj50fU6G_7F?kt6*GzU?3jdI_{ztA1{yqSLK!FRje^Lm{Ee?d=v58)Fh0hJw z!0up^>?L4vagdV4ozTW-4xhU(6^50O6>8syM27;Xp~Iy1Wk@tm2QkdqJ{CbrUM$^_HQ#hqT|tC|iO%<)TtYWaGf-6*J7yIA+_ z1ksnbm0^$7ljO15=x^m078B33W8%6`EexIV<{ulkydu7y>4(+0PCg!2@Wo}N1{X=Q zTnnDI+74lY4sin(l#Aq>nq-)PL#6OISVo#DjEeLKp#x-MIw0mn$5$c2t~n9xs!S0Q zwkpvl$t_@&q=6+z69>%Gx%?zKeapM){rqEPAk$tsf7tYou#b}~jqh}O2-|a=@poC7 z0%NvSs$-NSzobVXhkI&wNi}%n9c^gSzyc-b&AtYkWl_~kb(^s5JT-2WD_K?!^c=X| z2#3Q*EQ=wSD>S<^=s%0D6#i)KOaxS>C$wH^yRDLV6AWE6VpyA>hXg(;Ih*93E8iZ8 z_`VImAAR$YUMtj{t|joFUHQzFd;<7zOKQ@RzoLFI-b9@WmM;FVpLGCrEFm>g=MU0fde9kKk)4o1X{1xng@pK&SeV z|J^J}npYw^TiogXJ)j3G;lt-G5y17Aw3@K01NNmCeixibDfluqCK&4l&3)lkL3~(d z(3%7PaL+x@Tkc2Z$EZCq?ACk!(Y(#Z%^);}W_rZ_)iv@Q=ArW$`6MUi?eyO^3UNK@ zpQM1+(&50d{hk%aLX7Q3%|_B4o8dw6?#JizuHpOn!As**0G&{>ZcDqxsJvCxW}-aj zZUezPPBUh-(`tHU>`x<#5rdozndvM_XGJRQC5Fn+nUf|Tu6vsC2UavcnVyLB+~@hY z@8tlYCmLbGbQojUK`HU~)E3XYTL<;??%HCEwsm=!ZGHpGOLZd`Q56G2K|_)i#PK4Z zOJZS;f(p0(XC3HKFQW)Eu=n-@zSIjt=(y57$UxeCs4?Qd0Mofo?avECoN389wHZhT>oBarcwal(!aGRdjPBoEE&xE3Ctc3lgLh zl>pT&zga8hY115M0Ub}FKf9b98YJR5vYj&F(i7x$EnTE z3r(?L7rHp5=Q}W*YPlt?1N#wrQ0Woa?{~kq~+3foB5Amrp6ml#b8 zoal$aFVec3{gPALS^ut>ZUp8(1?$L9k|ulx#yTly$@lHH9_H_Qw)2f&eFf>32V)#S zCT7ME)?2&4su;77BEFawf)uk3#kOs}4ap5P8iPe;a&%^=Bw~*R6Ie5(5vv?Z`d?k? zzkzMT#Y1IWL|reG!wp14uQN|=n-in|HG#StSv+@dUc_f0<{T7N19X07KNb)Y z5J5$h6)vb^kJ^XmTPC=alKU7aojlHCvlSPGMhYk}JPZy=fzjX^W0W!o%bx!k_UqAo zjeo5eV|#x+NrpxN%N6i6)+uQzAMvK(l8e*d?ERek29meBDQ-$>{$-0lA&KvmL)=)9 z%v+8rRAp@u{B027e*+xYtW?f!^0^dEPbh&$%YG}p3_u@Lh;0=6TaQuIknfTrRLBii z9{Q?IbiwWd`2AgF`cd2${0GInis+twIFQI4eSTt+Z{3ns8Hc`t#6>=F+vQw!ndlU{ zs)B#ZrF0x1E33IsRu|aSecL7ZJ*YoPVv-G9d_6!}lGWYxzA-W!Zo5t-B;JL(uJgFh z$o8gzR~vyNh&zA+!`tM~xVHc#TD+gLjSKq4(Yi?qNcxCw8!4(DmdP4c3` z{`ScmRQ^e5RBAYZ#+?N|=qgk{U71wxt&HAoQZa&%K4&DlsrAJz|Artf>Z6D}Y$&Q( z2!NEp&?5){HAB5dFBwPS&eqoh8in}5R@&JGHiR2FLTz{)zF`&{FNID6Lye@jdpJDu z-fHoTNFbVB=&snc;?8U1$cQ6%nU*DiDU|Z<(&h+)rEo5rJyYdc%*Bm?iVAajb}vZ=v685fvQ)=gbB?5) z8_>_jnozRtw9j&MUyG{OM*Fy$X*XQswm=D!DkGYTyoCG_-6-#riUxaUrPX0{#KuCZ zA{zukoQf1%T866y$Vt&9q$uGhNd}kWu9V#?<;(zWRomLP(DM@(j~FiJ-!(Jf$IF@sZEKyN zz(gef{~2G7PTKdQjpgNvbrHjGFy1Mu{cgWm71?1k&WtQcZK51r@!gp_R5W(LhU#M$ z2^daXAL>6s2MW|PG7hhNS^tx|)5)P-#_8d)IkQ~=yVC*m9r;|c^xXLna}%Ll`30|0 zU^`6)YuLDB2WzoBB{T=OrbyW-g~3bPE=qZ%VzbU3P4dUog)2=nPKx?ipmjo+N|PpA z$Vomt5-laVeBfae7edkD{<5q=lwVHQbS$8~DyvJXruNwVJvhTiu{I`k*`o%_$#|3H z+^)vsu!-D)#-HG)U!Pwu6*oBZu|}PM?l=Pz<*sI_6IzSgV2(I_Z2AJDtA+6?7XsOS zzjXXQ6J4dsJy)Y$qU3{&02jb_D+qt0(3NOEktLF|+!$xGPc+>klgr3@h!iX@n4bZ> zIN+*&#PADtLDZWRhy6Y}xHyh1m!#TFF>`Kvl#QxNzy3e1gc{pgaSXrjzc{Awg06m) z-&&F^hH+WPf|9kl#|D?gkp?$O*-wa1H0^1_*-`=6zbfK(!F^%A!zB9KiAG9A*e+9p zAe$H_m|Y-k-w&#qE=7j7>ro`KAgd_zU_9$C>q=ynr39RM6% z)xh8*8VZ6aQTm`6WRj27QoLPjP|a^4F~R8n31T{BUErj7yCP6b7Jx5dy@oqQ`+;HAW9d;&b2J}=r+41Ty@fx98ybm z6o1GSmix_&7*U(h->xc*idI6bU3W^!!Gxx=|yiQ|2q{HBq{JBxHb!7C%VznExP& zulXJU{_}Lz<&qp6RjmJf-I8QBZhV}Uwo-G@(r48Cpc%D!6}zvy8YXItH!B+jYP znnuAwbm$+t7St?23PaGdS5hCNI&Q#Z(s=Bj2^Aq)`b0U*<+<%Ps62UNrF zXpa6v)Jl69!g(bpLa5yK|Hv7&N14}}_b8LQ9BV>`G{IMbu)PpLv@!n0cK)TUV8*kU zq7ZUKs^Ns=v$0SaGnHWeofkv5s6h*zs?J&{ms=s{GxT0}~=^S`O!#oJe0FH6aa zI`g5tEp~14_XkRowCFQx^%>WZ$wGiMsfw@u#Q!rfbk(#XrTm`QW2xOE=N&7*)pthC zhg6YWL?0zuQl3Sb+>$mr;6dEnLN8Y_4RWrf_|{$55RW`koERsrh_yW*hdx}o-e;mJ z^YL;MiKw#y^`J!G^#yFaxT0sH$=6~H(L*G|^ZI)QkypY?_{bU#Ja85B02#}wlY%Y_ z6W5h4r)qQ49AqQ3cl5sX5Ow9RE)Gq^C@nCrw?EC%)~gDJXFGz`P8+ z)U$z$wIZ!TcmW_sXH$C8^CG&3lMz>kBL#?_%DnoqNcvH-p;L4%e32G2Jg|&PsK2UX z5!SaFBEEqBLT)}XnAgFWDDE2Z8gJ`3vJxF~Ib3kJ&FblZs*7BKk*{hZ1nMDV2Yv-r5*rOMx4&egMf>>Cy$$!MGlf}n^jj335 zXHXU!K1VT?)BJ;`yKRn)#@@gS=GJ$qJzF{oLd#`!uk!>8z>ENp_xGCfVDV|N9zye3 znS-pC*>6E9p?!J#K&g-lzUPpi~qCnbW43<&>p+%8^@qMQ!$ZEyT#^fWHqh{#5IHlx-+kRT zM6g!y_zOorGzTBZg||yq-u9_07~@+$IDFqEjyr^!p;Q{+Ur_Q#lxRA4h8ti}oB^23 zA+=gUi@KCuYstioibh;1P(WPSyBw2Y&H~hkAvk`*rIuj%;TiIeoRUL~^PKL%1bkUZ zpPi@#1u>qN9z-W<$-zq;n)+XX%LqJ1^(*|uf0c8DFaBP$RetL>^B^((NOt!2j;2JT zfDX)ry2caojj%udZOnSzJ4~;K4_1#4oSo>W4cqYhfShg9tVN8v#^Bi>?ILdU6@l_u zWYYj+LpTxf>p$Hy4DX70%557j5XFGiYnXXdaMw13 zckC6X*4xaknBH`ice+(=B&KsB;24AyXmjp+59h&z*&{ag^yRC(m}zCy`$Gf!I@LPQ znYfCjLIBv;0YDCP+I^^!7W*^Vgr)!Tm}Z`|I`#lHykTbB%B6Yvx~w#a=SyQYfHtk` zCc3bEk5rro5H0ZUE&=itsHPyrg;Y3KhfNdKnX7T6)$W3yyhX{(i9nBm_+c{GGv5^t zs-V#-y45Tnvx0z3*o5+nCv8AyeU(5)8wz=>ZAA04Hontb19s* z$b6-f4=f7o<<=H`CLanO_7XC${z>pSx>IIE>G;j^jZm1kY=rl&DvQ9hR-r51)k$vc zq_aU7qjs2u+h7ko1H;Qd-ntBf0I;jv$Q>e_C#QiAt? zGVOl+H(V|M?!hP?$9$76T~A*n#kM7@tl8rw2Mxi2m=M+6;;g=&Fmm(Ok)o_f`meY} zO7w~CE0M#|P<=wOI(q%a8jb?N{uc`gMTl|F4vTpw@(+1Q-|ze#x>7EIlkN*?*PlQ#fmD=$iT9x@Iyn>E%QtZjgCaN08 ze~kT+Z^_Z9AItwh{oo)MSJt=1dR?ILgQeYjj{h*caG+6}LtImr{k2xS)qbDvf{$n$ zd|d+b@}5toKTc+r(3(giX)n2U8&kfS%&$ezQKuN`%FI>zh zP-;2cu73xNpD2V8w|QC#HMHFspY!&)+E>*AxDnm6HoO!0SO{!iDp0_ZP8A~+%1Es9 zs{Nb!L}C^`&5qPsks8rs3=07U{CCcA_$9-aBa6x$d?le8%j&BH1?0J*C+e0mbI5dk5C?t;TjaQ9Nt^nQdDQ#@$sbM2 z$Vw1j86I>Q&Txg#YY+Bu;%-L94~cB**BoiL_P$;6F#<==#$ptOe<0qO`0~!ozp2(J zn+P*t9%3`Fd`>~Fa3%fIoiGRMWbh+k&1cCkRb&MclXwLNzc-7u0Dtk=#>|d|tRH@F z6QvqprT;6d=E^>OS=Ka|Ax7;e5`5XqFR0q<`)YEDMQKO+HkX{Q8AS$*nQEiD(Y|~F`R9&ib1b)5k-6`P6O>^$9Qq9I}L$0KCQ;dfT z0(y>d7j*9!N!n=a7e9M%t3CBags-d}>V+8? z6HyBe`1=@XPw;fkUAH^ovrdm+)YoI%m4jO*Y4PVRQ?{a#iAD~JFY09sGX3EF)VJpc zLaHN8faTnI%cpget771#c!$t>&Phvu`PZ02vt{H{$@Gr&W>GeGdB1Z_2)5<8;q%Jj zu(#D+Z+Q`0?5Up(x7wjT2TwcFhpt7)CEF!`uI)k!k6EVlaZ;{D=wOpu&AS)o^&zxF z@qP_TnKt`5Sm{Jk1Y^{t)}1FpC9~WhsBq~WZ?()WO-S8hno+Yd8sGSi$1C1E!ciRo zLsb*MsO|{}5P*)n(752xF<;T2NWl$)je@CfjT}@|5&vkecs0lwY@XTi)NU&${%eGc z*F7boPH0QTa`=2WH~Lq&$>>{^j8E_QT&w?H!RD?4z*SZpp!R>QC-)+YO9rUNGj4t+ zWPG84pAW#?L%iktoYG_N3Gr^&y~K^y2t@BV!-#4gF>RpCeT@*$+EmtO$-f-f-edYp zLL!HacD(@8f87o5ftkIYYx#`4d9Q-799=5?(PB~T9R~kQFG3U*VgS*&a!KXav@CaF-dyFRpdX$F*!wayRET8S# z$o|XuImr8nZinhX9l1AU(Be(eDOeP1#HpBq<^lo(;08x^`I?=!yg;4JO9%Pcz+Ctt z0m#|oJL+Y?oajLP9&#!9I{I&biiC`T&2UEi-{x19mUQ{&n08|3AXvu$NgjDo{U>;H z$GnkEUf@CN^X^Cv@|VDMdPo>J?miUf9_)PIex3Wg@1}&))rU?>GgV6NML5{U!Oi=r zfpe|S)S&>RM=BlmG*A(25w9Nbg1@Q!HHfoFUik%*%kYHzHZK(q`PhQx=ocs3f$V1$ z#I(0=V0m3^5hFNdcJVs;h=Z#ElB=MR#_&(+$^qo-Ss}7T0-mTo?{4>%C*Xk+@iw#W zGm_EUji%j@Y)_s&x~&eCVZV+_+<)8FwjyZ@RD>dLFuF#5RZwIGc)%PhfaZ+~q#Byr z>P#i7pG=!|lqe7$>$N9vaJ5R?_tm=zI{_6L9U!0aiR-`KOCiwvk0Xd}b>G37I)I~* zR09WZnUFLC7r(2(jL}ZV*d7Kzvafj^CH0v=Mz04+2n}p4@hbr5uLqv=oOXQ_hLNue zHgPgE8UT)7;hiMpA~poh3s>5xme-_Dyd2d)krOX!5?y(i{!-0Gj%i3*qLs!Ct?;Db z%s!A(SLgnbOoOv>SN`qIEj0$XJt^C3o+~7|y$UO`Z~bkgngVf2tG_ihl-hM&0OH+` zzxj9;_l}|6_oUe};E^11fj{kT*tfQMhZ0a;Hr2*)hIDZcC7g44xTn40qijw zQ0{;B%Hb@r`X~=}uMAEZ8yNfAao}ZE*?a6=r7QiZJ#^K{OYYhmG;82W?QZRt>gVLo zdQpP+Ie*Q-wrtE+f`jGHkBaPZrwoC_DyJyT*T_y3V_pqZ2DwG5+%nu0m{&2(kACkM zQ&8m0K3o%q#Tqz+sBu<^$s24bvhTF&%vzMR1uHlMh4Wd6pLd27x!J9j2Slfv;)_a1 z@UGrI_CQUo4=>aZo&&^;_lox8-WbmAVK*DUa>)jiR%h>V+$6TKaOS9U4%g4Xxq>}> zHgM1)>=^*7vXEKevLBDT6gbXUtJ8F>87~fWDcm=PjxoCp6gvCcCfqav7fgDV^ByUU z3*Z0su>q;c~7ONb)Kpo)A?rgooAbKO5Idg=>Fnh>p zAjJSFiwN|>ER*r3zV3?WjBytq&j)}M4{Yr#(5T;)MlBq^N+md3w8BlYa8C=;NSWp=`)1H4d(zx5_ z{`bQzA@SQ?|n@Ho~7_2YAlR{!}!4 zJhc{{o%(|g-ff~*O8hl+<2j@kU$Vxb??sal}G$3gDX68)l zLQCqo@mQ4D|6$j_(l*oXdIMW|3uAu$oD>r6Kfxc>uH8FmaD2W(DL{_U-Ba&4r!HR9 zVHxp&Md@75%&D}{lf0FMireSLM?*eLKiR|DgGk&_m;7;04FCM$+%k{W(;Y_q5wF8w zg~`hC9seAjUe^-fczefC3xAJ7nW5Yp`1wfwj{T63z=~ovnc3CXbMIr6MatyEuEAi3 zxtk-VabR61|4SL^2QyuJJQm~RVu&rD*nRyH#z^i>Y1ihSJH4RXF!=zYYp-oBQU|!a z9ERW3WYx5Sz*@ACL>bj`+~J%-aSHCVOy%sqa>T3r`wzMRHFaeEQ9X7)f&{M6{Py|n zQ^4W6cXzG5S4uVlGS4Ea!w>7wFGHI_$85*4TGLt&9kS~z{DOZz-zJDF0-K$ml2Y7? zOi0DiG!aEKG-=%(*%L{wur`>fF$~c0DpmOgpL@_6upF{4Wv!r~mI_2zfVnB(?~Pjl z{8L$Qca^x36Hyh^Hn>{+=%u6X4N4F#c}AqKD1VhC5In!FTG-q+O=#8`4mQ|!8yXY6hxOJuSa zFx2#FyFSlk4RSQof{lio*mKhh)ENEeTC;;^fw?*mO_gfOQCX%*6fwyrq@tOmdxQT}f77mYAppbS8+mEp zb)g{?Hp;-2T0*XHI_VDA(nogKqN&wrK*7}H*Nt3_d~zEW)|9XP3fUhKBe{LCVS4HS z$h&tTIZ5s8!htnQfhC`i0k()mHgzQ{;uE~E$sSi5q88xua9kNjzYZ*jtLGp8wq^cx zM4pT*O_%#Bu$I`A|6+h*%Ae(l7JC*kqRoQMLSXIBOfnqjS5BHqtwTB@_>D#Q!3h2i zpe00P)8Sr8E%+){4E|~TU$N4b11h~|7h-4!`^!hYkqtueUeD>jPP}W4aS2s^V-*lU zItC5a{P-{hR}PHrE@-RW>-pII^^9JxE)`bz`_sG76ez5@ed6ZE6n)kz@cD)6SBC*m zk9cMS*DgCyQ-Nj}aDhl-CcLD}`Y{_ckzO4(Q4R}Nt$=r*fxQmXGliWJ+)AQ@kv<0E zQmJEXom-NSY)W~%-_p;V8mGkjx@a_CwLfp)BnKp9RLyX(&FpXim^x`+@CPM!yCk!0 zH2)&He6isJeX>ZIv$e5RWNlfPk1rYBu%fx*E7>5qGhx3)KNG>rE3z=y?^imZ0ty@> z$40uZNt$D1Gd_U!focTHyLYe^|8D4ji31iU8-sc}MuSw=pB$!FG!^KV zKYX5`Ml}V;0+}e7a@ZY-%{v8)$*~eS@z~P&mT#h7)qRmUm7=Dp3k^i;))6B6_K&9U zgSK;5XWMd07g-A?-&)E;6!tFSd`kSN;|2@q`{b5Bug{%9FPauLXwq5D}DpKeWWB(ep!2D*D^r^^ffCM zIrIlB0}~tnr`t?HwE!g;Ry}2`O0-WphwO$i+Fm4Tz!uyFxaZ!dUL6im%LJuyde`#o zSzf&C0>AZ;y~8qrkcxtIrR;wHIqExX~`kb?% zf$`FFwA2qiIb*M*7_s?m3L9OejzJH}e*pSdQ>LTzR0ydu;Xx}v!k^`$!|ZSRwn1hhp2nyu!tRzD(F(_gWsx+Ji}jtuEG7r?A0< zml;Ekjn+Gqf<89%b^YseCTsTy(^ZrzMpqRL44lDM?~N!QpxD;|NAnDPE2UpsqGXOZ zdC~i~4LHqe`mwDzt?C-I9Q0bFyyyU4&II~rXk@h?ah!SVqUR9!#AaogYxiQdR?Bg< zs#|(*sb&menzrQkNx&317)7Ylsy4uF77m;RU*(zwW~NO)=F%1!^c2=Ywv@GWbX|f6 zRs`-oo0wsZ!bslkO#x!!H=a|=0kCRzy*;@2B0X3gyTG`R8dmrCb^)io!2U7D>;nrK zLDs+=Z}-G~Km#*LV!M+JW}y_fPrtl(GEUHdiSS#rgurkz-Vms@3EA`%{ie@g(GVMq zZ94j-{=h`U`6Q{5O{t+63p@IRe)Q4)_~AOZB{Gt{aPYdROG$2c)j)|!dqw?+&rj%= zox&?@=TOVp4?^$HJhIwlH+KXPdr1&d7}OpZmUHW)>WEK&7FXZyYK70&C+6*=oEVMk zW6wU6J^6h39l`$#?d4~WZw(;gf6p1C&aw;a9NuZ46#XCys)l=_aBGfhR#*97PJ%S} z@6?Bo0MfZ}Nw`&+T{to8Uoe9<2zd=Y5y81X{%1Vj$IYT>zk% zPz3hnM7jZ`X8+`+HQTk`k>TTEE|-pHbWcBQilfKz%|r5mFdRSaYpvWr<`9OW$Evkd z%r40hojy$GqG}chTLXJkeQa|IJD-dko~}wm{fYCYTPs}0E@nc~t(3;{w(a&kIkS73 zc8rvmwcTrF1e-PbVc&mg=U+O!BjdZfVT}G;mTQfP8!w=_Xiw0W8bdJLcS#Q;?mY`h zd$NzBzir7bKrS3`2GRa3+avo`uRFWIf9eWu8avDgmUjlj0~fC3utp3q_{(HNpc==O z`ifQ026_y+9f~Ti4_8lVE1xuip>!T1zu{s!Rf?FtstC`P zZM70s!At7<&V{aj3`rFpz*w4iLlz#+o0#kqT&a7m30MsaGs@G_f*ni!{=m9Kw8Z#} z1?K})JonBU{5zcG;*5RUpz6vxGN4^>s?NapSVU$BS^3)FYOrG3>g2ekT_+wAvM)RPZVI36QT zw0}HeLRH_?2DVa$JiL>Rk%j`j^?u^{qs-{-q*AjQWQ0NV7c$k4W7F!fj7dI6Dj_a0 zC>YTO`#- zmorcjD58s3!9Xb>rI~?sk>T9-vB0rDFjG|#;Sp?|=0yiE5TU@SO9;Gz8iu3q%Jq*h zv9~0(;meu)z&M+!+Uha>yo**sJ>bHS=)95d4)h^2HLN-U-Ex35T-eSvIHm_sD6 z6iX@KP+uE(X_JT!B2P%`Io?Eb{Y5(CcHQCWFO(F6h$Qc1XgpH2YN#X|xb0!L3R^D* z_20SbQ{8kz88m-UIn~W&%dY5!%31pL@z%1Yl8E%h2+Jk_3Cd&AdP2mIuHyyh6GGuL=J~7E zw1r>(H|uaSP)GSo_|QO?lY@p?4j^%ox|ZC~#l$ZRnqAw(9i~Naw1;+FQb8Y0A{XPV zWXdEToX?Q6OlnT(4jYPj0Xj)-%ZywMc*$i+;1yq3W`Klw84Sz;VOIpcv+Z3()Q15h zIbedjIPzc(zM^4reXP%tRyIQ}iwKcVyjV5d_>S6N7BOG4Zw!+kjqJd{M{HwppqXYG z`vnw6N0+31aTmDfn+XBQXP|Z)Qm3!C5S#yi6}m6Vz-rx}R#ASdJF0jF6QSGa&NG2z zYbGsy6TLnlqMm3{8>ui2`*<&v0y3#MKbbv}0n!iG)7fL0kUIBCt(e|!g;_gHD} zYyB?XI-lyYJVVrmBF}K)j0&m5P)jjPXnqQrIY8Z`7^DTyC>U(_wKl?Ew&bL{jHuA_ z^CRk);F6eT(sed~At zr4(xRmw14;OmtD6Y&=|Mt`$?)Ie|4yne8?HTG{^TKb3!*Jq?&z+85$ z60B{ozSF43sKt<&9l0Y75=7M&4Ho#Vsjf5*E{uh6Jjfpt>#sBgJMqbIaD*ADNL1Cz z;d4iZslmGXJ?)4d6d~u5;1Obg0>-rA!|M#M-0hLhoV8xgZD zqQ5c=7@X)dah6q`&4sAAHHS6K!n(#v4=ekamW3{UY=6~k)P@nH$h^n8%Ex?jW|`)b z>CCxD(;gv)Kn^e+kG#j)g8vjA6uLV%Y-HfV(cGIO1$$j>+|frB5}4%Q6pDyFPzj7^ zxjOdU)y|-jU;TXdinWe03Isf`(j};8c-l;NfEt{pvl(8LWDKSZR@~7aI1dH?c<&X;fz%~%eSh? z&q?xdY}F=V}8Clquh0|LNFLJzz#v$JT3SS zCCh4MZU;2m9XMBWtsXRaeOgnov@znp2PEh=jcZRGwI$+nvN6SD!WgAAVS`vLZB8(_ z7>~4W>v~~r^0qTERxR34R@ksSe%_>VEIsKftZ)qM!4`b?HJe|q^|O|5A+9ZI{mU7T zwOlQxaAM(#cGW9pcAt=eZ855k63qe$=F|WQA;cOio-SNz)(a;*^zu0#Zg)zF-f z!6&x!{Me??KQxAiLk3p~_~-GW^M6G;wd&QxY7V2lE zqS0roy~yG1{M}}YoDr&iOr9c7B2Otw}yhSz!bBd%c1qLR6s@%i7!Bj+2=H~fA&Unb(}!MEFchKbwUW8#lbVNbT`zhx z=s!o&e>!f4Rb|#bKa-uV|B&?_%_HGT*p-HxF>*Lxv@g54w3+;+kX>Q817n3-D*a|) zV2!cIqL?&x3QEy^!VYr|yM?)%jc_BQJyMt?RxcVyA{Q~s%VjZ&xL9;7o9PBd_zESb zv1gdM>_8OP%_EOl$vV&UXXm<`dJe=3Lven{I@CZmvw{_Yo+Z_l1XdZ6m~@s4dW4*S zO3>R{BI`MDhnd7GK(~;^RAE`U7T1&ATCB>LQDfS$H@T;w7dCKVxJ)#iyz=`O53|HT zFo1`?L{6itRt2x;0%0rTpk691#m($-Ad__k-AC@Cqb0)1cXdaf02xfD#2*@vIy?PAi|>8KUz%tkICP)flFFnG3cUbq)Dr6juU1(^GQNm$MS^AxhWFM@Yz7cK|{hairm|bFc60;5`Q!1-xa2j*^ z@eXpvQ9tGOx35C8)A;*zLc^J%B(S1tfKx&9Hx}1|Gh-kZ9xxXisP0t z4a#i9k6F2BQ!tE~af|`3 zqSVVE$d2oQwPZ%Hhu!Nul@N-|@(ma#Tt34>Z~C;jh;;ca8$ zaYxWc*#2%^Zf1Fb>8$7I@1(Ah+^XPpTw7c!0}LRat^=d$%p&&1QZQ$LdZV}eSQvn7 zL$1(*Rk&5`Z1)OeeO4fu#YF?FAF5Ybum%^5r!&m-_^0cD{+)S41c06$+NU!V8Foz^NOVl`l%%VPO~Ocg0+4gIX%nM|L4eQxJNt@0#p~ROI|tk ze~%m{B3(#hIiqt(D`&(RtWNZrev@su0}sOlq#F7ZyAtK&8F5FL$jU=EkVmMEWiy&w zW88<*0)uE9u^Z2TImjMGwxAZWg%zwww1`xMEP_S5ihX&T^)0Kc-hHuK5+ASpMW0!| z=NoDw^@rPg^O!Q)UkWSt*CiAQj1Ew2^d>^To*zf_xW_6~s9Zz_r^M>tHDi7`s8Gd| z=aedZ=PjBbPWO!I+IHwk)H2%#U<1)suUgHgr_yeYPM2i2i&|PE?|JD3rM(=Tjyj+^ z?;E#H`FVeD+DB2>%}bm|i~g?n9WIUK>F)i^xl#Az)O!j*x#`70Bo+MI=TV#rS_I8`i87l#Q zmciY;qPa`RIATdXto6P?l=704K#$dW-&ecJX!F;)b@u((sI_0*Z_oxbcz6@9m00_e%%ZK&gW=9j4{IGzFt6#|cP97~lIOp?8J^(9sC$*h zmT?^U&8p^90=u4m!+R{z#wj>v$CiAz&OQN+P;k!IHn~1(|D(Hef`3OGI_j4uUdhiR zq8CkBb+g%D0{GcamsWYY0(rgd2<;+=D@9?je3E8S&QZ!XH%HR{N86i+L%sL^$31fs}5R!eJFf#@j+o=p=KV|746rt?PAS2t1$=FY05W@E?Nn@Lt2KSKM=bY?I zCkD4E`n{&k=kvMm@8|x0e%JSRUB5q)>ng69dB5M!*Yo+m7lMTp`z=A>#Gwht4C{y)TfoP#lAm6s%_CXIoE=diS|w?*FMe{M6muw>xQA8=YGtO zrCdZR@*?iafL*Cha8sjLFu73+LJEaK>O)WQow?ii=d=^}r!-G|F^voL^|aLMdvatL z-JvY&)_m}duA!SR$U+0nrVCE9b*owkvT??kx+7j~$aqKUV7ycIDjj<}DjvQT*lY60 zdw3U}#9y$Di8R|N`5s#(V_bqI6(`nh-yNS{h+I6%OXY~R6=2EZ#)DH;252vidvN-s z!zwCXLn_r#0Vz_avILD@Zyk)$g-yI3eYt)s^DU+wQ7XqRr?-`Jb;^gw)2fc!AzF=+ zjE+C6SsUd)RE?G}FwZtFyC_HQcSekU3X}Y`pzBT@(Z4~*Phxo2GOr_Qmt8Dry9KD3cE(p?>1K78v#j^J7R-p=F6m+ncSO{UDIwW)r9 z4refbKH}xJEod_=66oUztTRpA?|4n)d=t2LYp%J9eC%G}wmm?&Bo;*Mvda_6c}*9a zbc_=Hh&yiw_RyZPz8`#s4E{m-yLP~6dex8G0WJ?zJY-vK!u{{CJl{!2+l&(JPbS}8oT!r^K7e8=yMqaTQZBCyI}V^)w@8hGg>>_;%3b=d?Q>uyRe`9 zkqwkpU-eYXa~h&H4uvfLAW`C3CmUBv5S|EEa4G@8KWKPH@eO1aTymHYQ0>VMg?kZG z=IkR`-a(2)^mF0WPMUM0?Z>0YOJ6 z&xYA}QD&GC>@UnOH8ZRaYy-N}WKKK6gee}RKB=*4*7c!W{A+Y^4Q>#e>Gm<<{yHGgc)VII)eh zoe_b|(~IYgHNUywUqtQq$=kC`a*$=&ES~H-x0}6Jyl3&nzJ!Ha^y9Te9rDRB2SgC$^B8$*NG~s{-+7HSa=d z>=qSjVmq>KR46-(`ndIb;5$ zcrIH~^K3P;L^U;&GcK)PZqdxh=!M_Od5OFT{^tz+Pm3#%m$F5i@nTCH-3Ev9#LXg& zhCLMBeh6BFX_7K@hW8pDz>L-}r#584`rwtN4OK9m;dv3W_w)46|2TNkEt>Z+LhMY^ zuOa()SA}6yv@E0%(lkCmC=?y z^!aX5craHXdIBg$ci{m^aQjvX+dl}|c7;(Rc7l@_YTI(Jbih5J$FhYNwX82_xZ_lM zX2p(^bSj>B5Gm0c~uw zK6uLA&D6%G(mn_Y(a>_#q*yK1@Sr_}{kS|`QWjc`;K0bzMR+1*G&C77a3N||pxp$a z*}NBdCGWFeP@X_*2}frOZj;}l6$y5X%yq{dktL;uO{HUmi}D#H8rlfs49jI8q>+c}&elWS zEQ@LwR2t@xTRzw@ijj6J`kdbjqVElsbLF~m)R&^(W&*|G{Q`D%BI8ypW#OeTa zB*#1WKGt3fg;c zlB2X)B3!kf?XjS_7{Y6lx_`FjuPO?8AncIB`Yz~O4W(SiKjvxi-2s5Ao{-yHl1BcG zeHd;Dd1UKoR;5&f!V{z(ou#nwbe;+ybz8aQy={2VF^EdG%}vTJ{1dohc8OZm5wKZVl?}G- z{FN!PC~vG@ZZ}T>(IGrpKBDWPwjW-2Q#%At(jlwxdznowb)^x{qs>z6>R*KT9V6W*Givj z;K6ULaK{qd9p@v`DP+IRrz0+(nTCs>Grhh{E8mo53;^{f14(e^LD^_zH-KR z`{PDaU%7Hm5^7ML6FZ)&Yh1qyl@z32om7a9Av_4hxeF(C`wQy@X!x6Sefj80>nk@Q zCtVNe+=%?!WoU%$7xehHbKhN1!oUziUoAxiXdGpn#o2gLLZM}Su}dZ2TIanvZmR5h z!HfJ3+t-h7J9Z+qH4GVAvlg*6FQ6?1iP^$+@@MpZj5+L~sADQpx$Xk&ytIW)4T(y{ z9Fs1*o0t1O^KM()|4s8;IuV8=M?n*C8;sZYz}t|<*sNP6qTMiKFZRwSz1KN(!Rj6t zv4|Ysw-Gm*_Tm8e2%)j$@7j)8H1E?(krSvS?;IG4{#`rn_;+*h4-53?B>fvG(gT~S zOta0`6*_!4_*>Ln%+14HXza*)=?-S>EXO8#O!pMn;dgk6+9)XilistT;q;5l7w!hi zUb~HFq<-C`bo9*|3Gp%YY4r|&_3M#;>hVf3l4FG6YAiYo<5i!sWFL+4(KvMop$vV{ zF#O_j#r!d91x9JC1X3l8w&EazA3z+kQ8(+3cyy@QQjlCV?^YTovZ8{l#vqd18CVt2 zRsSDqVc@9jo@!&kh+eRt)aTUKmU*B*7QERaPPs(aP+-KwHie1_lsh9DCb`X;-S^itx^pXF z@oB!A@hR`1@tNR?$&NhIRy%4DBa8Ei4O|N*h)AylV`VJG2>RCTx(#xm<=yTmxnqcB zO`AQQz1erX{vXn6h$>o?}p-H`w3lt|uwK3B2*JRe`f6XNeL{}V6e zQHR3YR7Dn9{zSeyc>Fzj&bD1w^P~;2`(OwhqP6=l@xAG1+I&`&a>*5u=baUuo-Sr~ zm1l}MF3=z(7PpABHQX5fGkR?e<=)ZR%1C?hcCPtXxt-_37uRim3O=3u^V_|5?zilI zqgG)--WFWfK;TZ7gOrWQ%zw?Dg6uH zkj#F5S;TCP)gLt<@h`B>=8`o4FM%I%Dj*>VYcO^4Yqk{JhM4ix@eLEc6gqJ| zXwlXU^&|Pn{*gWFjUp{`@PP;ut4+%BTh{cggIy=WwtjVrQpavrE+o>qTOtbG zGvPBgeBClVU6Mw(!}2C>w2Jhg)?Nlk%vtQnmg#lw`wC9M9o?iB=$AhX$v&tzS--no zB`i7)RffhqGlJb37+)C&>eKk|HLwf=?~kFV^Br_-?w;YF-SfoDGuHC$nP^ z@l3@aok`7?1^x{8t`skap=rnU2u3ff5d1x_E5rabe_#mIqN?dEkE+k zAw9Ws+7J@?a^=x8{1dW$?d%WmcdXR3k%;T$BMdc?Lr$D=hUFWD=%|YQBj&8&(v#6$$SmYH6I%f*7BLr*7)X$M+?oBkv+CCBu^L3BdUv!27yktE2kM@$P`;t>#D1@ z{g)|ByR~EeN&Ys|bn!}8?#K_keWrPev=*hMC*}x6;xZd8^@(}8?9tb?6Lslxz8~Sn z+sr43dDhGHxsi`29q;1bIe<+$R*`F0EVitA!j-D+CP}ZJNajYHJxo>#G0oq-HZkf? z^M9wszw_tk=$j)Y{%=OJe=lqsA8-zs`V#WnPSC+P(ge$uhlxw8a2RDpE*^@jHu>WV zGigpbu*ZL^B;bmn9wAHMb0(gW+aB!p38 zaX0y6PhsDcB_67KGJA8-64S0bpWhtjwV&Ut#J6^o{I2BcO^j$!^!wP~J;gzVr|*wR zq1%d~O6X5<9{!rG?CL0V9Kn}yPuKpmQ0Rv&TcZ<*rPBpRXWfb=q@&*N6o)Efu6dro zz{#E^HwM&inlBkfB%p4oZ`}Qbeh{`eu;CR!K?Z^5OXt^O3mgD>cBgMsU#N_J=<_g_ zE-$Y5g7Y}y7Na{F@xsF*@w5>73(eB){fC9f`M(KQ?Q04=Bg%Pf0k!AWF1TiUin+PE zE4bYW*#2CRD8>U62AD5fzX%e^0SY5j9{a=9QLc;R9H<&2!5-ai&3aOzBl%}C1hMFs;>@4M`L{I?+4re1-W9r z;jR1Y`i|TfJM!cF*hOOQwIQSX*U(?4esfuwnRQOYHf`B z_sw1KS$!KPN&vNVoMIHL4W6T#Vk(7a#P{YONKkIGY^njR8ArG+f0ERWHsLr2=T0KP zUYMnO#`X#*yE@6GbJ4ct6dhIxT9#w8l+hL37xhQn`0zmXjqXL!G(kuXXtK8Vd3?W( z>8uNt*=W5@D`HSr+!*dE-QBiFj($HTp{G?BTFfaH8^FTIv_9mx=%!(*{=H(Mt8-6j zVK{feTzt@feJ#I!$ob{^#~#?xu`{@oI$=#YOMPoDvc8&;hUz4A*1c6UYRS2XS-ed= zZ|WvooV)FLy6y!b)^*msIK4iT){OBfiYD{1o(J6?*o~+Y?qjS7ViW~Sr&EFv`}xVT;Fc%6YP z8VUpcTIt9#6bz-08MMWWtlx5hKNa+mZgROlnk}PWw5nboXSA;64!ur6L(4lZeRHvPafw5fGxcxI{jv}#hwmD(#7075i*_p0|zf)TCn&52Kn2`$CHu)d#umSwI& z$hKCYC^042P`G1;bv_$#J^T~9(9S%>ZIuqVaCUw_=^6VH+!>PFkC0>@3_44MI$0Lh zK&4cjYzrwG_zbwTQ_<7vAa)eohj>50o(08bSX^XZg}V|{0~}gep+VwAm0_Dm3J6Gs zD-D+jyh1Ju>Osm_sFr1B%}e|<`a!MyViE;?KBMS&??Ga$=of32y_498Dpq| zWqQpo3qM93RLIXEk=Ylct{Ug$Ad;%gY9tpPM4c=r>{%x{)-p8~;l^6!7J)Ub3yo3Y z<%J{U4K|2k<{#Zv^|6+vAQlREhI}u+$gYZyZ3!ib)yI~Ovgyibc66m(=Y3rh{>2Gk9Pl1En$8Lfmw~!VkIZX(!_F{)cd3B|%+23LLEGl-XPup!% zL>BJzj++t`tL@k~dDk3mU$Z57)^QmXj-yPyMWZKhO%@u2a{>`o+x(>Iffd}j!OY>@q1}}_lpC=UzV&|6=ExX9Qi1E)#R0C z^i~vR3y|Y44jetN>uCX-au0}Ai5SlNcDPKE06#~&49%teE5tySvOYusP&4L~ba6)2 zSu_fRfu&_Q0D5cPrWbt+;|;s-Xs?QLsFQ+8i@t4WjZOPf2@$$F7C_YXjbfKllg<9Fm;tH`%ttGbn5z)64w19Tv$x1aiqb5K8@ zNP3Fa<6I5SAtJO6gjLD}2>VIB{khTeuxQBjaj^Ne0e4J*_87EZxEXHQj>T%B2F*>! z{Ch|Bl|=WvH>!UG-`q|J?~fv%+w4vYhju>-#f{4@937s>Kw%FNYqJJG=OT9qV5_T- z45-=sujpzP+xeADSV-V_oQYt@7epY7YnWt-YnmkIKut2hu@lenZA~X3>x7ohL|ZFR zoT-JJ(zdlmO;PL&H*{5)Ufo)npyG&ZmsoXeR{|X#IK_z7N0&&ZGt$v+<6_Z;UF0?N zDbd28QO`O5ejLB)!h7>^S@zVEzYoNU9=F6z?a~u=jZ{9#rB?l8Z*Hj^U_#^j`sJ%O zB)LLECXJiYd`GQ5@nctZ!3HFT^Ji?!_k>X0Sw0%=i`r$gNjK0{4kNT1!^MsdA=7UrJp);4eq|% zUkwtp$R9zP`ai?Jfdl>{6|cKgtUeYx4ITtN@6##`2o6T9k1iGLofy%N?Lx_CREA^K zK>MUGK!!a_@Nd}JD_=>6W!=JJz335@_^-4rA4I)TjPN;d+2JDK9b(^w``O|4W6$h9 zNGy;crOp-I1T_@SxIw>$O)j=a2yFyniE&y`b2qk1pqwMB$iw}9JqdUWzn>FI$m`4B(dsc{CXXA1i&nAqAu<`h!8xd7#1JfY1E5YBHqW}$UR7Vh znUO1pyQ?<=0R0K)S+)CGx7F-T)!%Vl;%AFFUvyk0#=HV@tN`@yDa83-`SUs=2G(S_ zB43s`{*4X{=~cj|(GO_Xg3QO@8WN)U}K^k^TZ<5xW4!m^Wx$q zns>oH{)EaA3;=)s0O8d1Gy)N)8>XXWeZQS?<_lNrWV=*`o5L= zwioGZ4%@7Rw!8Nf@uo_o^x&PtrUi=RS4$<|7(nb58<(R00=toYe-(T!ziJP52oI|@ zQ)S5Z;<;82?b!KHPmMau=KoDx-m=K-iIUxlafQrpLY|YFF!O#g`*! zp|S7VM>opXMvo&BHDB%wzS2iIsc(G7^vKjV?Es1l(yCqGkO(v$pt`@gb-3juZ(CH4 zVTLL3c%1kJ4G01t41A*6=cXK~wtTjz$Gx@1N=_lRce?iokb^0#vTyw@ThQrcP9jQ} zINTQ!&~HIKxstpW8L_)P0FoP&*eP9Y1zMCi3ST8jW8Wcr@QOt(Eg&2JLf)y^k6vO0 zcBOItlfM(!{qO;tXxW~!WBRYA|AobydD7$#9%gx!2IXM<$dQI`WS)M!B*!{9gXlPn z)T=WJR;>B*+XE~#(11f zsj=drsU0Uh!y9$}vx^I#)zR>$O+iL7PDq0j&j{_7@}RYp-@GN2N*dD@9%e&ZS@La9 zGUw`NFT-7Kj@X@l*{G2N8c0T><+CN(bOU29%&v?n9>x-6=x9sL7*HFd*{B1?RVZ;% z3PZeFg^?rpr~p*dX0>`XpiP1{*kNebcwjxEk{{P`0O^VwMz(IvosY<|EQ&T)m@3=o zk`#3v{GQWd`YNGrBR*x9b;hpbNo3*$$h&vmJGNCvAdzQ@?*}$CbVY4KhE7S56ZKf3 zn;?m^-SC6v2J^A9t650KO&ikA`J_tokl{^SK%+!G? z25$u(!MJ-GVT?E{k6=*d>&ty*QV*^i)t_i3Qf;V4N3kSr2t{-0>1p7HWyF!+RnIjp zr|?sWt+i&5s*8P=Gt?OXl;0G${e>PdL;3)|kbi@KRZ*0kv#e8X@|jPA(}JMb-5X!? z$U~{I`u)|j)pM7>sHZUMueRiLbaAh> zpQ8^_woY^Vu1_{#wta?WimVcShRe;}q^QLf)HsjG#BuYsF5(0#OzN%MwkP#|f9OME zlzx1#MsRhbYB1$AmK+12mg~>FEGaHnkE< zprW^*i8n|n0oecjEiRirmxJ%R_yEjs)rj!MdGxOM^|@>soh{F!1%Ct^)IOB16MOt7e8peo2LH6w$4L&VW>;Kwb^u%*ZePgn21a)_BnE^-lpq zXiVy>$Bl=JTJK&a+SILGy}iMXGu-Jv=^V*$EE-kk$s^HM`1MFY7RBi+50aYje}2eXvF?Sn^#CTlP?h zk0ny5DG;!DT5{F4*w%h(5pDb{%=Zg?u4CaIR?%9dO*@@=0%r%DDKi&&=`_iOnt(6B zi*oByws!rjDuH^sfEj{|xODcsl9^Vl>&}mNUvzI%G7@iM`;lQhdeq3Y6Q;ch)%fF? zZv11^#rKi{Es%wwaqNap1x?po-Y}XOrJsHp}ImleUFx_442EplLn=a{b+N0~msg>yqV+&Di2eq; zteB3)TUTj-Q7jUrsIb(!hwD^NSVlny0Sg`04e7rmXzLjEbep@o5!xGm$*+<(&gP%$*&j zI7)E~YxzQC`41`Y7B>Hs=^5kl#d}=)qzELv_oi_zo1gDpS$Nx)-<0V7L!QF%aH)sM zKMxEzRn;xip^8(v{o5BRm((uI9el%f!nq&^AK`CHY#hOf zYSr>C-0{JDbiLYlu>Mz#r?``D;NHiy^F3Wzm~5l$i?u;l0k1l440%bN1$YU0$g-7Q z0T7e6C%-(7gsXvPhZ*7?0=*sf&yG;tL`zQK&yV;JP z=#7qU2`Q!3!fuag-@^c7T+}o)Y2S`I?N;cd7UDP-Tv*zo@Ak^+DNeoqLff(0+jW#O zhI>Gm+Eil}BQSGIy{N}VtK;@agnrBObFlb^k%1ZJ7tZ<}UiZjy7~V@_V}lHsFzniQ znK6%xo$9cw7e2M>7mbGNRqD9?8D5x*6o8gsK2)T8c%=P9(c;-hwM;VYk0R9zb63g( zF1`_LJYa00=BD%p(r5p0q28@y z@VBlew7~3U=U+eR&aB4(Zq{;kogVcr@-5~gKr;W=3J~gRv|V;8qM{0(>|}&ofptHB z-FT8}?J|8!*Q&0f?t^AH%p*u}&y=hMUFj=P*1Q>T$90FGH#Lut_8#FKtzPmNp|7~i zq7mRzE_RQltwRbK+ARt0_nUA#|A>Ej1d}N3Gzf+_O=7V=HMuAi2_D`m$3}d+!6WdQ z16dbc9Y$s_fKoXi26TvZI5(-rV&x&l8`v}?S2@5(fNr<9U#V|F0r5gG_qaZK{FFYb z?SfGb9yg@rR*J(KU4|z_d}==3$HLFbsSsonfgT zAi{C*4CF@}#Q*GsyWh*$DgwJT zhIQp8L}&4<6S1R!p{D_KbbMA5jLdPjbjAk3-heY6I@5{ef8-;+tST<9zYpQY!M5tMNN{oAgWTSTNmSdg_fA=o1JB2Cj^3L zfV1$UZT*7NfX0p1Ol_E3PE!l|U|anzmhV-RP!cK!xLCk&3w3d>~ut6nU)4It8~4F_p=lh;ueC zB-m6#afPTCwhrc>gddweS5i3j-AGr;0&`!amRVNLu?sEtfFhT#VD*Y#@rrc|mjvG1 z_V3_y?f)!U?$#H%@Fd{UR}O4JCp-3pkNaQ}IPUeAMY~8VFq(df03-T}sUPI-sAP$r zsXW{|dKdNj@Wv7}m0`P3i=*BJN9ck2Q`bkv9jUh;crL>RbS$@(2h4u22xJ^t8xqLV> zjcyS}UkyWu<`XB_a((ZGs6b zeAI)^ncWk+)SK@uwF6B}leWjQ-=3K3xp@pCc|Eb-P$oMXD-+X>mxr`))vJ!2n5(@n z$*MWL@%g-{jZyq!>V{LnYkWq|9EOf2H(G{7g-(z*v7=&m*9WoF;kIQeL)}9%bepMO z>9Fhz9weZdo=o{-)fdtW)<}*dgZes>r+}};u32_RRRGCfTLq9Bgt2_-9t#5MQIaqGbx|S|h%fhvNmi1v7c-uUhOgk6l zH1)m0G}GX%bq8IngQXDmi%*nG;7$V1e0k@%YKRYTsu(8%(T0AjurN1O1R`yrDng9b zNM*n@(_yfN2M0umo5w82z}Lq6kYn&=?(w!$`1W?yV0~sIB7}p|i?Z|)CWhF1a6+oM zz3-@_=B)_{tO=pviy7uA!o=3-3y|hw6(;rmobicA-a^BPx5&4M373gAVGk_<`60*4 zhCgf#%wr|elk&KdB1pg!0aj9bf+>bG1a}e1U zaf)1HWd!LMLl?kf7xk1ubCw_fqmfnru{piG*TDK0ON2JFW!kjdkFaapt>|8SUzFZtXtaZ%?Bo`>D;Cci#OT{$@XV{Y*$P64CMCB#;` z<@`@UoijjFwUyY!-5=%HT4`IW|I6wA%jAo7D<;9QveRQS(^lK?IdCbo{(_OvgRcM- z7h<26sk#|?sc5($?!zt+mYIsYVd`dM(cB=8u9hcOa5B}(-56Qs0UdVZ;62@A7w0|u zl`XEE9)|W}nzKMV@l{%w_SoZQ0KrYq--?^I;Cl);an}eb-o~@^B~F*^+;svY$ZA8A zmb1IJ7Xl|c(M2#<)prDtPl!82&~T?6Je23;Bz z7^I~b5M0BCC!9DkP6EW;%4j)_2(DgBb->jKLK2lbd0-%rdKyUG6@mkx-|pM=B~$5y z`qTB*OIDkOalF#GhDYEeu9C4DZg>vvUd)FMXehOJJ5wN4>s1VX7kQR>A$vy)(tOdb z3biEr=*F0?c$0i^^GbtYr3KyP6VA*L#DW#15lw&&7FhEZp3=M)a%kNPYsg567ztD4 z)^StJ)?rih)+tl)`*I6F#=N>fu(8ld149(;%U|j!NPk=4V{RZfZ{mXKgk5U-V)sRX zO$cT>BtNA~UAa)MLuFiubpD4jaCD*`+a9s|Eto5`i5#q;PF#qTk0UEH($1FH-Xed) zPZBbFi+ZhQ9A?NLD8E_66#vF|QUwEUn!goji=|B7-t{sP{|Z$>!nX#)rOdoXk23H7 z7LcT9t6T%CBz9VcUN*iNCPWbC6 zUZ)>?R-;%%fyO*2H5KQo@JwJTMt-(ScP)18h&!OT=f{cOW7Ok}-W#&t9`&&KX-PI2 zTjv)dWsDvbN7-ewk8DDMnh*7`?&Z%#^Q0kgcH`!E@T(!b@T?{e8@lwfK%S_BA2I3sDnEbJFBt#bj|%$4K0 za{(|l52V$syC3qKipTN33gqmkRdwWH&F>(@E0ZsN4>;qc)uhDAEjZeF&T!&DM{^3a zWlDbdF0_vZ6xLhdjG9o`%BNutwRF&u_}UR2n<;QwdWuGr59h3@wKzH6 z`TYv07%9O{H_%rC;bqRuKl!aPv@+Ps`)9LsTZX-%5rkNYf%J8|(v8M_u&Uxi0!X9n zI7|xH+?|TLz6snn)}`C`NYuvx+ZI<)d~sdT@ngyZl;Uuy7Szc+1`GW8mSUL6y;MmAc>{W6oVw+K!so9h~ z`M8t;xRt+uPYetAUM0T0|A|$fk@1ZIeY?>$!I~TYQI=-7_U>H0((Pe=V0&aV3gi%# zi5p`QopWX6MIaIm`7d6NeYQD2GfMqlvTTsBRQtdR<@@(o|E)~HkG;&IT_ach{Utx! zR;v5js2}q4jn)>)yq;_1^VKsahjUg`Cj$|s33bhZ(3rX_rDx;o+M&g$8~UQ6nfe}Y zz6TG*ziKR^Qum~H>)U*DiW_D{!8Wg+lTDa*(WU}-ksZ#pu-+pGTx(50Ws~^2s9~vL zkwSChtEDRUhO6U5hA$;_bE)b_b+x0lv`T1v#>yCW8IXA6xNja5p6r=%@+Je=_$GU^ z<%_cC5{9yWH(XLD4!ol#mNC_W^d`@T9a)DwQ;ohF0h>~BF*w=TzA*Mobs%s|rgfB> z>`_{*jFBq}BZ2E?UIbWL&>dihS0=8`IpJndF|u4Q`e-|;3A_9+p1}6&WzDA0#IkoY zKp{NoJh(bpIq&@o&5V9ydTitw@I!NVpz9JjP6Lr9E$asEaEdh0=5dlph4koz81sH~1Nqs_bjGH(nFt)`t&myy8x9FKVibMciXWaVQmsCRn_%`d% z_=?Zp#J&F7f9$xms{2+=V3!RC+|4xewH!H`@;+C=$}Vl7{VV$4d_7xhP6@)6TTZx+ zA0~P!cUHYDn#ViPUR`x7WR!yBjjkYI2MWj0Rp7@ayg|6l)Xzc-^l_ zrl|{pMAgb%?iMm@{7scz#6@!)4JzZPD|JhT*`Zk4j{CtP1#p%OI~%;ZE{=V=;=$K) zF)-VBn&A^pyHpQWn`5?|H>Xl#RLeY;!s%Yio$0GnWud|pdS}Da%5R7 zj;s&-A8quCDs{F%yxiaL$Ct~~(cVRYLj51@Y;4Z|D7PXbc}OUWD;jgOf8|N|+`*30 zNWDPKzfBu$D*Wv+h_M;Ec7OWHhYv=#{gR%H&hz7@U0xZbN9N6U8RzYKPamy_@LSlC zIn>Miq$0KVGeEfgLuxip_7HsC+FE$sUZ=`}2-f1n^Cq`(P z(ffu)7zx%g8n4Gs5$dv)zvWkfNu50?6L<9qi9KW#P=O~j2f9_P#zal6A%BGC#c z*(Og9sroi?s~$MbaOo4nTVj`q)QUI-sSZB}*=9UB^atvByUqbFaU{-Z8@sIv-)Q4b zdgAYQr9#)+xZNlyzs>iNikC{$e|XEDiOd8^keGMkDlu5=^_uT(zcvS_7ow1%P@-pT^k2G8vA* zHe7cZrsHNV4H6kN|21p@_`}=;&MbjqE2kczj}&{Yw1e0WHLrgZ?AV6Xsxzq98ncN0 z%d{$xXpLEI*6^vloPGLVeLw$ihSYDSF6)2qM>VbzN852wOAm}4%29!JN0-h<+xSqz zsbw66Xn|Q(D(&YQMQS=na+45O?Te1!cnRPr5G+vBOKssuY!-r{lf4gaE|4pwFwX>C zfSebzu&SxXQ{l(N3I&c+!v(pZgAiqb8Z&~`!M?L#5+nst&9)^|F5*Ip9@IrcUfF->Gyl5>6^AbsIQGw?Y5+H11LCRaCz}ZF)o$!yIu@HUZXd$J z1}R|Go4(0*=qJJmAfTHaK=+(XZnyVhxd+Kjs)gB2QND?D2r<<@Y*5xFQ?~5mS-wF^ zlj^H>pC|%T|35kPlNOQ$-h2&^oe$jD|8>y907_W%$HMcd1Lb+nq(Xsi^xu0+bzniE3MgKf)%|e+@%aw>rlKFilgMFi`S}5*gjDnKoKhN z@~>6LvlF8H;_fNhOR%gKU3j&;ZyKEckXt5I_to^VX4qy6N`e>wo)X^$=sMB5j>Q$# zfowoi#ohO{|F;fQ_CJ>f{<#F(N>w1snSJ%i%xrg8n&9Y|jYa_1=xeb~haePIL%~s< zVz;Pz=e;)0{Pa1A_saiWq_b{a0a8#3Xw{+U7=jPu{%w0Bl(U8`Lv_}+lLEAs1lif5 z_3FFmM1mjeo~S)gztkOvodc>&fm<9*7j=hWXQgdyC^r&gz#k1W6p-DR+)gO#5QWSR zM5krh=0i@WjvMjUzl4#)h~XxawfUb|7SZX*7yr39g;QNIA)>1iMFm@`WgAW>oC0ax#zMc6zg*=<4x4Zg=byrP=`0F zWJ7Fg$H2IK!-L9Iub-)BMbBSX5hP*B^9!Gi-Sjep@*Mc6~hZP{w%F zMX2+em*f!Qnz17@>e0Y>l)HnOiIYPgq4K-VA|B$GKM?b_v|Wx{Z9{X8e=cTQYr12} zert3Iq*^>}O|+;TE5F{QN6hi}L*B_>BN-QjHMBZbqmAbg|9=!Fvkk4(E^0GIVr)aN zvKR!t==%t9%mEUms&6euv8Cp7PU&yy%|P(q0$=J*2de?NnIc0?<(zCIB%^*DHwK{x zi%m$)I{jcRkZe%XPHp0dw-o|n0WHF@SbAveSdLV$(_1X(||@XrN_B#`^I_CP$j2r@``Kx_#~wRIq~@c)}ZzSnL>ARgC{PelN{O^`Jr zaMlAT;Hwn;B=OvT*OK#3@17qv*Q@bk>aYRD8Kg$k7`AM!;o{rjBE$J}q)s-_1PNSp zKx-R)==|S}vEOwa_SgASZ-(UgP$sy`Cd<1ff55k?_8*gj&nB*?gN<8aqQRylR^84Ro=v!glg1Tbyn+`6wpX2b42x z2?!qn2}XjmdU7!2Wly3;<*QC|P~AFMM~pV^NgRxEB*C@8Dj&k3t3&Q3oE{@3G+-` zv+QRH^(Q%D7hEQO&EV)pe{$)R%cyI)JVcXB^i*LIr-`gg_|R- zm!W-n?9K9?0|Q zaMk{|Ew!Y|Hj%)pPU7HY`kDT>VPG*U_8pq; zjd*CCZ%jnti{@yMFm_ZK%V6~pphj%h%)6g-KHs}To5oi@oyrwox+HJOTDrkR4bPr3 zuG7k}DWSLMkV8gJMDDgPMMohvUSyx7^Q?L1k+BaIUp>B);li95QH z(6uA-n^Xco>U(sPyoDX_?JX&VqMYiRkXVqN;9Moic8EeF9@;!x`nQMJ=4Zw9-+2&Y z#g`%f4|8uG5B2*0|5uW-rYs?p$sV1ug=}M+v5qk~4WrY>7@;ylh!&xUj5YfVgIO#m z3>o2^I+d(r%y5jRP958f@XmUW`o4y9&gZ>+zMtFg_r2YI%Rg=%b$HF|x~}K-+#dJm zIG`=~i=S|caU5mmN1{zr|D?@u|B^c5x0Q~yc)+>G0h)o%kHfo1HjMxYDWEz4&Hu}l zW-u?j)9%NOgCc)<3j=Tr&gBmu^`6b&cR8NarqNxCkAZ!4X6Tof3sQ*Bgbs#}GpHU7ou##Mk zC2brL&{~)5Mbr!Qar>2tR;Lf7v$_V+#f;B70jS;UUOZ29H;5-T7?56^qHqTIEe0%> zVudF6gsT_ucqi_IX~y{+bhcBt(^%8eEIOY7tk23X09X!xa+*9DBU!>$I*`^+woLnI zoPPrgXWWN zzJAqxxEo$>MvI34;SZ?`9#rOthv%E3l;MS}sz}gf zcz!|7S(HLnwZ)07e8v^hfXiBJ1CDB9i*?9dt;@K^!c^iZi4YNSmHQ+ z=uG$HuC4vw5l;DjMp&M0BX=vX!y7Z$y3f+{Np;VMswDyCBMm&m%uuR^Mv;Q z-gE7bG;Bw4hKOz*@P$ujn2}m0dJ|%t*U57S`HdDumvYTedT{DOm8-i;eLoL6(Z{%v zd4_!%`xS)>f(PNwLe8=;YtDMNlr^2}*(h0RV~CJM1kzat*qT{$xn^StWyV!^`LD8y zU*}J~x<!7Zy}c z(Ag`z97kmLup_%L^IwNuU zU}1guP9y;b+^ZD-hYF#kuFL~CSFcN1)}4;D-pCZXaxJGB=vZ#LmyWKOY}gm(a;pBW zX+@uMt7zCz*DN~4d~VpIX=wCd-M1NxBDXT!j9bB9DQ}<5y-k;y9YW4KcZQAwj=!tT zeQC^?3=ti6PST==Zhbf7SV7sV!;a3`z51;HY^Fc|_i0j|Vwy*hpW3hz)}4pL+V=>n z6@T!+(I%&MYNF3+YxtMs_BKW}nCHLs8oo3XqcL!)@!Yfhk8(6G+2^w zi6wCCgFu&hram9wT$Q1oZOg~sjXtxV|5GZ)oKgU?7@H3KgImFh3CpSZl21z*jnPq- z1cy?*FhXi$>ru0R;#-YpysebfNgTg(hV)RUB4^*_tWy=eaD^Pl?$idC(k|}>a3I_? z$GtnF!4)VN>;7LLHy(=^Hvsel|AwGRt@sGvhXCt6aB-=G=~9gK41kVXQUkdLA)TAu zU9kWcMc4`TV~z+f>ODPZuGeLXI90>P(WeqaE*ww!LIS$@5h9$-KcQEE3j9y0un^5C z?r;abUpz}t&VXAXJgJWau2L`&zW!3~f3g|>(^Z$d3nuxJbJ@!DJnp|h5&v0S1#~ep z2!?P!wvQm00p)o`3yF#6b=(AZVj)&uo)kra=CV_JW&Pj?{9jOkC!}meggh(bZ6F{E zkfAH5CcC^~eiw3D*-)q|bt1^J0Dj@RLcD%_N=G(80u+in0re8(;^6lohn2O{oqw;K zA6ymU|HPd?z;~x+YL!1=0k}iH^HPNn<|hPN{U;4D!O6zeh$+ceTuNKgU-v0|5aiOx zJRV|NXwYXDNoqyc8O!u#3$;00R1f440|$vpM>M|akU?G^L6Ze-C2 zysZBNdFTI#t^($(v4GAMAz9;}a2Z?Ft25v zF_IO74NSGaCZq})5+qo_L>0z8L#UAcx2@}`{2!53yK|0cmOK2LcvC1LeZ&OuPsSd% zvhyTWPg8_^taX)5gU!UR_^*!NT!3z9(y^RlniZG$O0il%*|id=?=K0Hq1y_d*u-~` zh(Uio0C{NN*7hvP#^+cQJz2p^XN6oVlN;as?B~D1^mI*J3@YtHj+u>X{S#UBExt|2 zpgWV9k|TRL=M>Qm9+YzyXc`kLJl`CQaS7~l{U_zmgoAlyfKGmn%0%7*;S4-5$FDnO z0lMauK-r;pM1EViIiCJZQ+*sH@03)jLB5ZWlg~{hUieqxre>~FW#uXILxe(ZZa48d zJO&X+y{#w2)lu*3x#Yq$DW|B%ee8TlR5Ddaof8u2RDJR>1m!<5tN%u0+Sa)U5p>iP z0d(0bp0X2jBtEGlOSwE54s_^Y9xA)K!wyn(F?uHUeI%eekG+eY39w7y+ZuoNHntS5 z!gj)>ab0F%mJ}<@2|x@&`Y&wKpDKM99?XnlDKJbbhv`ZtLH~v1*|KD^jua%WL$=!V z{?>XM@0ZH?H*xnNWi2V^7hC9|KOu8~P_c5J87&lGE2lfTUSu8$Ij*dqzD?;7B0URl zYe7Ef1f<%^3Mq5zJ2#I27@?d5unjbuc`W2q;c<66ZxRJfHI{PEuBza(2Bw2U_7oo7 zyqkbeaO`w38gvU$DAfEnDPhF4*9biX6XNPFsAJOug#re?L9BlJ-?wO{b@?Nf_7Zgc zp|z`NgJw_J>aDK@HEMj+|A&W^{jKjqxo)iM`cJ?2oc#y>mpJ=di*0`Z6v_YR)AVa& zXW%*FqjnaB08{N-PUoFq&SJ}pnYE(M>vyj>>wc?ON5vcE@0H_sEpKM($f4f%8tu^} zyE-%vrAHgo@5KC8zgje{PdVy}o{sn$5hypxw3&#GE@zrnTYkD3chNF6e7dYJHF~pD zBQ^*lOcTshJ4l^@Gn*8Cos-`)$U~Fw=PlGBidUFpHbjvan^zF=W{FGV68GJM- zZ?$D;?Z|tl;~&y1Qgwcm9V!X`_@zTsJjy9(di={RMV%(uP+uM9nzgzzx67t_SucMv z?uV{$(rjpN*Q>9(w>UbIpCM~bzA|!khPy^RRwq=H-KPuxDEhXc;%NHWb1g2>ONX&< zNIq(_eIJ(i;8u6Ek72oM2IDd|p=Sr`8k;j(=I3?SNlRnQtKXw;b^drgri9lwtp1fAFnxFOSt0qk%!4w_fQ%{juc*{b!6$yFO0R zD5<+MQs!4>=xbOX^(fv_`V%OJ<$lQm#06-dsDUHhs5`bLfsnB7d&6?qpLR zKcF+QQPokbF-W~QLhU8tbTDbA&F1qo@;m>WH>1fjIzRKp&0m|!YKj)=n<%wkTgo?D zFlbP1@1I$JAR#`eu*F+BJU0AQ_nYfenT4=E#=ZQ=3l?wh!E$U{ea)zS1={zJm%F@;gWFyR&3O8 zIVRYXu-o~vuwCu&nz@TpbH#-Tl#R*9KxT65v*^632hYY%`*j+5s*lf*ON~&Da?|A6 ziX(EL-12+q@xZGN9f@!!62rcKo_V2vg?KfXVcn0FMF**@{1O@L*$c+^cb(|0c+hMf zJN_l?r&%4YQY%wQDe+@*cw?mKFBQ9kOBIU^Wv!wtWP*Vv+GD|}XR4Z@F{QITbb8n* zxA|f3G#5F}%hQyM3^Q23F;e@xQgxX86${tB;GZ+pPK(Im*IwoY&tv)7C7rX2H7_tfE(L>%3UZzYF`Zg45rsau+;y zav-FxQGRq5yWA37Iy)#5Op+1Dj;|+N+Aog7@^A`-tIoWDTXrI&vwc2SaDttR{aoWJnHtIX7I3RoM)UNLYE*xw15j(=;5S)# z!*1MLd`rdqfU(;*E!S_YwX4xI#6O|yQh-Hx7$7)qwL8h8q|NA*q}1$mfRBfnWRhjK zfQvL9QW_n^$pgr-(23#`Ug)BVkh*VAb~svsKmn^pa#Ps4Z!u@oG_m7v<7ahbHO+aD z;7g|(O2X@A3TOw%M&8&=%*)@yf9TLrvg!Rb=&GaK zuLZU4SHmnZ5&9GXurZTc2@C{ zrE5#)7xm{?!W0Af>^E~)3>M~|W7`e`2F$QOGGk^gc~?pJ(;-pf56++aWhH=3(QGmB z<9RgMi02y&9EE2RJ&V_?(rk@NCN>9_10HIW@VS;KIqvYw&L4f4zzWQ|tKTCf^b58s@zb>KYN5r*BV7_(5L4Zul)?40iQl$G?;onMgQBT^{g^ zR&{Tx)vw>tV-XB6>1H3koqhPw?plALDsI>aSQnG}t^;0x{qgUo5iVV_1bv%YceUjG z+7bR$x3lE82hZ9DIoDR|WEN&$v5G8vX!m!uogA>P`)02$8hsJ9{qvF`n(8J%O&i!IfOejFoTBo;$k zw7YYDk`u9CT-vBU0r)^p$wcD$Nvr4IU7|I{ewVN2WJmUrS=4JjDL!{TuqBxwtvo85 zw92HJ2>-sJ)T+-?LtXCIp=Tg*@XuC#?Pqr5rYSMy%+g6K*db-^&|Ci$;y+3!Io`V) zOiDNs%dED>cb^8{1(mf{{Pd1%Eyo?J!5tEejUBI7Z{VB-fR@W@^)iBrI-qxP0-#+Q zH`oaN_u*k}&sF1q^*!;RbXyQf2(J7SeVh)iAOVo$e?$HV8-Dkp@5*I72cVh6c1v0J zoCI4Nh)ubAB|s}K>^Wu(|NP-zGy02dogRSb*vQD0v8p5PU#{_IG2~Ez7>6k&03FO40=z1hEBJzATX6RQe2Q zy$(#DNa?kluOUBW93cO4G}0&6fzIYQ(PawSt^x@I*S!vRQhJR7_X7(f1Q31wZS)^9 zktr(1Y!cr4w`X@CvH%p9OqnFEj!+3ilv7BeF21cUYa z)-GjCZNAa^@zJ-SFp%djpv$%GnY9^lcz|O#sXa~s0%qK8)l!R}p8471DI)N>v%t6$ zl%xwR|Na%6uX2vlBGx|qFH+Lu_gQXRy)#xvCN>}E{!2iO1aC*wyT=>9AfH-SJDk-V z*b(<*uxifR$JZ#1KM{AzspgNBm>GIdsX)yvg! zi(A%H6pj+g#UtaRNZ=NAX5jup2xowRz ziywEi)wg)rG!0u42)XQ^*3^|UXUTP;B$CP7d$vfU!=yMRbl&iS~kzpR6cV0%&@o9oI|S^EA&-I@jJ>6jf&T z&*?x})kxH>++CmIav#ot)YfWG_OsNF_?P%>qXqx7-w6BD$nu);)~pvqwh^t$Yj=Zc zUu20W(0s)HM~_*7R~SW_3KHG(>n$;5AcrF*sdFjp`s9MpMB5!d(e)Mt%2bv6?PAGw zgZl8>vnaEP^~Rg9A5f96CBYwXeKD$c4hRbMj{sNd_b8c-|n^ zf8_1xd*C<@sLl^=Fm(N%F7F&w4&nT6UR_!cEZHz4D%V`f7-m?9`o71?cGcC_?L>)K zJu=z*_!(g*=-Y*HxvWKUPz?53OI6k_1A}Oy)BjtV|DVlMp~J#-O5|JrMtVEr zsdfCNT2*)c$8|US?@Vs7)yZjWXyliELSt=TKtFNOV`?2?CB0SGd_o^Rm=D~zn1esW zHGi;v`sQq@;zzIER9uc!5-rUZAGWI-`3-w5{^RRH`abfNiDg{;tJmga!&dj7_?Mhp z+Zg`Akp7BHADI$OE5FsdOJJTW%NbV&DPzZLjYhZyw>viH1=FQ|9BPt+tm!^c`G{}O zW|c36^$jyB9)|Uu&D?i6EVSR(GY5r|&N+wLInEmnxMfX7`$uld+iQ*$PF29kHIs1Z zwPurGJ4b{gh*mBLi?NcOyy7J#N1hNR-fN!3xH&)z4VA1yLo+sj)*t_kU891U?QsTX zpjzoGabk_T0k8Szhf8*MRC|$P#ILH~5B%UP0()AaGqQOQsJ;Jt?*^I1{*$MrBcA*G zH0VXIsRMEPyGYW-Ox2*dT3?xAz!*Q*X-F|o0Ak6MR*MV3D-=A4#l*Bfc0JJ?UlaL@ z2D3VF(qliJ#pB@`I*FPgz4>8@!RZaIZ6_;}XMHE9~bsJ6i-=?doW`Q!1D^MkR zx*p9Kj@|B28!i8Et~H@BeOnb&!PE&cR<5m8{U376OqTXPCzn@$E_>K;bVJ)}$_=0i zzCkw_C+P>LdhHi4yHNVO2Jkrm47H$r2$&aJsP;pOo7rok{73xtz!oQA50Pqh(bOxC zA&~=dkLT3*){hSR9(Mk;lM?PZ!~vNvoy94U}A zw&$IgRum4P`E!y@th!lIys3YE9Bljw>I0g0rO|L^uz7Scw?9f)2b8lK3wU`_C#1Pm z@tCm8YrZpT`f$Z}a@NlE=U_{RjZl&eQ|Q{MQ`hU}babwV+jdvCdZBp%wc1?Mk(!>U zrii+N9^i+JT(Oq~Tsaefh_Ud`nQ=+TKm}p>_U}_33zMHGK7Br#i||Vwr`2gtfbu%& z2i#GTw7?=uf$R@KR)<^Z0+*1k2kMM26m{y2Z*V2@P^M)re<9PQiWQr+PMvX9riLHV z1*+*GsSFAU0M(Olg5m6P&dW>>YMLgHIXPzKyLvB&WLU7|#Pf%*v#TPtFT00Xc*1cw z69_P#5CSx3LE<^fAa^gbTw`zEan>%J1ayX7t1YZx%GDYs%T*he<`4|=OW*SjX4Uq) zyjZCmT){U~0bibR)-qkF`i?-$t%JC)B3Re}5JF}E)n=S5Nmo#n6+|s^L=wV}@=1*E z;l+#_@Nlz|V3Hu*VhRd$cxmBaBlxY-D-`#Hv=l-=2jL81O1EAD4EJ9@rI|A3k?N~x zA6qlGPxvDE>5P_RK+!J)l-G|fCB5al<);`Uc;B()aNf`{c9=F`*IXG@a~8UGD2+Fk z?fv`UZ2R~cCJ$b$@TpiTxCkiFEvwr1U5OBP#;c#U!2uWn z)G5G@r|tSAnfCAu?3H8CB`x7i(_LpMCj9>3g+ONy>ZkR$`N3J54{svg#Aw+Kx=x>= zo*vlS6IW;!>dCW~ECA)_C$Nh}7xx#)I+h&VUZ7!v9etSexY1- zLH013)g;|NRE}yWnKXZL-VBu4?p!YoXyjvq8-e01{@tUMP(F~VHCfnU@xwb!f3ZP3 z{(cKm>lY!s98fwqR-kqFyu6x_%$U3`%-LSuR6RLGx9q-pum5`du8dP^CqYKU8o?Q_ za9m7gi-o$}jb8#}>~z>(5yBi)PDMt4u90$5C?Ckf4E0@Q2%}%$>NN1k;rNN;^A^Cn zbskNwAX7qBV8azviw^Ic`>@tJOfTh;LgKLU=p_0lrfG&aOA3_KauVoi0Q|GDik)|6 z`>=M$+A8vx`<9t!;>v+B=L!6zSj)oSu;PBxp$=-yIq3=)NO#PrY?oJL646 zJPDGia-v-9I{dZd1pn9$BY2)2Ei_rqjPfk2R`%oU(+;t86m*z-hps$f|jQ&YDO zL*)Z=dXRy@pdOGvK|z3QSjyur9<%)Zwdp-W2h}&yg8@jQFSlcuoS5O_EJwwk@6~jR zJUVK{2HFU52%z~{0N|qp9ZrB5vERfZfWBw$3cz*fe{ct#S*7xD4^8E6GKK++-03g< zfF>~_2BQmmfXc^I58Bvb_^tgb!Zl@cwe*p%U)0=TifStRmDGx^yF25DlZs;Mw8J9b zv?^ZFc1$VK{3Y|FG3pE-`LxxdE?bQj2X?vsCdNI-Ew%y=oL?uTEc(gtm3_!^qZnOa z6a5>kHDja4yy6gcp?LJf6P>wYbJpkSJg0X~E9Q-*!!dOgi$Mb$gr63J4DEE5o|)Ib zfc+5@X_jt_pXz&(4j#-%h-Mthx%%$7mF(ygefZj2laEWiN#d^x8mj@VUU1c-lO`t@ z+;J^vpS;%(#iM0*jwNnj?@%Yqs5N%0KVm^}?(7`nKX`kYBV9qE+e^dV!|0t90A zo^I3*B6gi_94KctpKd(YT#c7%LT@*<=j889J~6jklL@3d#`;na;$~)gWBY~uc6(q4_shK zdH{>nH)jU~*7zJRl-5?m&=o;L_H{~+dv~p&%vKlBBFEr}fp<%BQvm811?oFwqG^JA zvz8oU1P3}=Angr>{MhVd+D7tHIzyJ^C{V~&p!tKjb>U(mDU1?Qi69CeMHzE%7<=50 z*$B3!*HtYFy@R+8i;yhF8`2v?^Lfjv%sN_|9fQaZ&jOC9*`?5!;eU%}lfM2v(m+V? z1w^m9`!u0%bP9}O$YnDsH>V4h4qG{&n~082Jn>V)>ho!#Q~cp|$4QH%8*)!3%@@z4125lyNx>=#mA)11)+@bJ ziGOrMu5ra8vfwuGmnl2qR>UgI(Q{&RBdW#k?-ry0-+a9z?q}zUB=nPtCyvFzaZL_9 zxE#e$99R<1>Fg!*pGsFo(d$#U(P~LGMK!^aZ<;y4Kr&5QRhYj?-=N$7+kG2lg_8%z zp8q|26aJ(y3VgD{AqPWr zA+W$(P-ff&<#qbH?8**aNvGTQ&6BGFtxT<_#b`ClLjhE})?EnPR13|uCk zb&uh11x;fcXc>5f4PV|D@_ffG5jDOq1-rJEo@n< z76e0rIVGSH@95Gc2c9>}8+QwT1()YPS{NQ4#1Dan@Z9nqJ6+WE>?O4e3)m z?4n#1emdj^va$4iX2)P*`VmL;xC6_<;DZ+%hE@1`M`;r@a@37miEo2$1c?8@-++D=7-kxh+oliaVucQ_ zTkwi2U|`z#4fuxEB9k7E?h3;by7i2kB(6Y^DR^2mA(|zi(wwQ)b=H&;#tLa=E-2J8 zb8Cmx)Jaf^7;~gK0T}w8x{9oqCMpy9j;a z5Mq_T1F|aIJS1jMp6o~a{U5+n(=$qp=D*g?xOG5BD?FJ)|yHq<8n zusUJ|Tg_bhe#q*mmG^4#(%TmS7f(O}m2mFa4VT#_?s}C#Y6$Dp=y(|tSOBDk{I%Sj zskL>|6b~)bJc%I?-~|+#C#Jg2iV`pUjxe%ekY`*3Rdtq>HU^B2&toL6V7JIBS^d?;J~*JIX(=)mZ=SSUYSr zYssl6&UKwI2jW*$Z8*3Tovn9=@=q0A%qc}6P$%JUdKsOWE);!tz1liSN(I9Mh=p*s zjvByPGMivS1{&M9&CCI4D!k=xlSbp*2~w_dYibh`G?F=t9!IibaViiMcG$77-kJ>w z-D7FMKkz+^y>)c!^_vU-Qy8lR3cpngYXKIIr^mwJLLs3Ik8x*RxfS6jLhAEc9%0>h z*I3v37I*9V@^o2BeT&C+4b$dKNjK7;*)lR6qgA#|1pQtp$zKqjeV{4m0Vz%}mpvCe zSaN^KmS@kp*tfWkU%;3mO`XMRYs6gUs3zqY(B^bVaDhv<3vmAL=XCb~hKthPyHa_y z(g!&4{XI3VvG6@OwPP|T8lOER^$Hp?8*UU#T-KCF_}xc97MHY4yhd`^?4IJYeUMr< zU5h@vz|90aHn4Je*dZ6?x;Yh=8S>rU?UkyI$*c39D;})F|l3 z_tVlqFKKPI4D#Foegi|FL=)8Ew=QSOoC3d@VM%He9DqC!%;D!KZJx2@IZpuA_Xz6A zw$ilnSykk#US>ooQ>YR9uc=&1oaLqJa zQ@w12vVb$Ltm}&DRx<)f0i(Txz3x;}-6=`~Lyv?J0M>Z4H^#RF;fJzF^bCommM!X4%;9d9o~7gL$2;_0)BbF2o{3dmrOiVr`-(*3YpXwB-iRufg`xr`^QI1K(+Jhpp!UczT8oc2yOOmB>Og`3c zEYmiYjK7ujmEGk`az+lkCTT0Lzj|u8n$RkEO zsohZOJR@EhNLO5OpZa{6fgrKX-SU&is|*cvYZ=&M(KscD5<4dI3?~NvjC~m-5A(}J zz)(lC9xsS>t7PgwdsZ^R1wW|LS;;+W+JO+2m=I-K%;*}|(Zo+tjLSY1v zCI!e$Bsml+?lqFic0q;0{c*F9SvFl;m=h3soNzxJ55i;Pw38?^b^>CZHYK0&j?^Jo z$FEanJO%aPJ3=xUKa-9MlCzws8+l8$jCn`}C;jNw{`BD8fCE()_&vr0(gX8epJfrg zSo#-)8V)tNDtdU`!A~=LT8w4n;hDhEte1u z;^#1iNJE1D%y-l{=h*xgZwKCGznl7Q^=Fx5K$fUDVAFj0>`q-D4`Ph zmFw%5%nm?Fz$I`7(4zt*9!Uvx$I$9jw=XO6W$ztuvGh+6L6-LjU@(QZm3g1nKF#e{ zrMYxW%E#=XF_;Hop>Y=>7uo5W>3*wL{5ae}hy>fM1NXGZm$HJ`|^f!?CVIRNok>kak%9xTuue;sf^a>pwTRdoFg8}l2o z_fS;alxxEGhTNY#m17JBIcGVAjHCbS(SchRXsEd>M-0~pDQBodY$!zzg{1IPAyh^P zDMV0}o#1PhxRtv453dW1OM?jAssHVwhBPt^NCtxDtY+Gn9hVrc9n!+EB3TJmvQ}t+ z_U_vYzB;d$F>D|w1=88lG)u5W)!b?RQ^rBk_qb|EHM>M>%Z3r=G`4J*zMw8^JHVLJ z;#V*{NuC1hZ0i}fW?_Wd8l%=zJ9QFHeH+AJA2Y)No*Cd}w$gfRy9xb?Kv18y^=Pb?lNS8ovWSe=XVF;h0=s; z;&P!r93PO6_mnf0*k3kYZ+Kf6#KFUGIEbAQ8GnPC96;#%lQ6j=4hnGR=zGlhBPQ33~H*oK>JN(S< z{O779GtNOe$s4)GuDmPT#)s1f+P-c9S%wBK4eH7<012;Mxyo?SkR(Pfi6a=!947m_ z{vF8i1S^><qfY=5>;8aW_f?EEk)mRjq_elY_@B;9B9$DroHd~*ep!&0ofle)-+tcllk=~Kvo5ez zwN!nh?_phdA*>KwFr?W+|3vhMXZ@?+>y1wtx?NX0=cJ$k#Ai3(HZByH&|IlSo@IaF z`>B@B7S(fSfSm5c)Lh=VXfu}IT3@iJ6cokAX$ljR%f727{7_sxWRtzDz3gXp+Ze_> z!h+#mK!(`v+U|aj#`Y#GWmsDdlZeY#hKd zBgF_3K$}(J*4xgEAn^3qTt%4n#PVQs_5w}cR*zbDh(cn(kDbHGLn|a^M)QrUetbvF z6mB=-m{vuLLGA!Al%C8vMkz~vhXNi323JWWM1~gzB|Ixsf#!$ zjPv*PXC9~m9@__8W|R4^R#+2j0}}e^itw9q&!1b>8qP^~+c{C3a(lcGXOu`CS*>5?Qk6eaL*>#f)jdU9s$B%j9 z0*{@*jY7=X6UQbH`Dr=Ms6coiZVh5B5YHB;>4WvE>P}ODb_PVOBYuS1vJ`6Tk}Vhpxv;*_qZclzQ>QxfVuRf3xd?_RGPk> z@ci&^#zap1g5RP=ABK${ z%2m~gQBoMCBp`j6Ei9!7s_Sehos6BNM*?fSwa<5BfZw=QXeh5suaEiaYJc4u_=LWI z2bq8qg}f8oglux8j!41GGL0d;A6WZw_E2Grn6x37N+mrIBplf!%sI2p;5zXM-ey~c z6zr>!V%K2kUx7N-j_1g7JQuH>h;`)oumEWIayiGr&XIuJZ>F#qlS`2a+WNzjDIZT z@7XM?Zj^lV5%bfuEtvRHLN0pbx4h%~!td;k&ic)R$2*)b;0;o6tSEQq8r85gxT?5YDxR z2)|l2IqL8Z3}JZxbx!gAOaWj$fl*#GB08p0XbWXFMS+%sUbJ=H(f%0Q=UB|UOnk%E;i#Jo=#;%M`vtJ8THZ)jYXa^ic z62Y^|XJA*!?H%`QK^!N$3h->nXEeHodm3HLy@4+09z$nwFLn7uD*q$;hRCL>w9n#M z>*g9D4O**!aIG~phKI>DHQkvzdDO2jq$|pl9R>b9-Z!bz?RExPH7R2aP!XQSy3U$n z$AULQq6u-BRiYS1hUjp-#uf2C87kFRimDKFE{$ey!ok?l*%*6S3?4S}-Nr^m zcqVP~USxmDO#T6w;A-1BmaWo@*)BJjZ+h>Z33gWiES!D@rq-9Q2q5g$yVb)7c)MUn z>Ca*3=^8LyItvz3TQ7-lsy&W4`qui99$22EXP3*?v$w;jbsel*B@_44sW2Zp1|~%> zg!NsG>mRv`p>ggAXh~p^CXNWPo_;Rb_9P~-s}paXeml#!!F5g2g_3-ZK{s;`qcgYx=nn2K^c`+AQ-l7Jd4aCUJVl>iUZ=}5_2?WXhHk>Npf59H=~7JK zu4e|(4Pei>kC>0bK3)5^&!Q%3w?%oBoCR@3Vks@-MLn|~qfH#b1QYx)^~4cO#F5VC zmE{3-mv_DcCv_lwA~9U9zKgsLqIM^nP>Tw(Czl}O$nD78a+Sk71%zSQ!g5pjLaM1$ zVXdiH;gIiZ)k2y>!MCO)BiOhSXz&qb0ek^1CZWGJ~7X({~G=u|EO zjj@dDE8G+2H@0&Y9lZLB2fB=#Fuf5KHLrFrwYjDC5Q5kqc!%IJI~(JxM6FTSD@seU zqW3|J%%_J zh#X8PfsUCWsB;qTCSW4UoNesoK}+3|qR!J+x6o9sF&cR<-l|YK_aVEQ1EWCNI#{r? z^y@Hl`U31R^0b_6$cW-TobSvo+ynN;1k8^f4m(Fj>mX~@*`6~qGExYY-BNHBNhz<5 zJ?lK!#5jHuNzd8Ow-&+#6G~jhs1T$uD#UC|HNhLxY1fJS(Qjyosg(XjbsYuz zcKa){s}c4-W2NAr)JrV;{Z8g_`Y01jcicKC2k4bs2gQZ%^Y;BF~e5M9PvMBd?L4BKMI=NL_LcG6bN=8uQ~fq% z*S%)7r+?(iPT%KxO+V%Co4&_A!GzMinY#4%0I$8%zLU1O69sGAi$ZKjFi25KjG7f0 ztk0}6)_v9j>piQmWsUu2)v%tk)=RKi*(J#A$t8zb-6im>=GKXGnKfCmn*}X-&D!Y1 z2albyRkD~ls7FQzZxkEu$@S8gutLP`wi48g>>x)e^4{1jxBVJ?3#eh&9yBJT1^!MT zqCU}jze7KD%DC-Bekrt{=qBzVbR}009jq7^#uMH8SR*&Z2*R5{yKr82$!*qrDPVT{ zzzcu9@2u*Q$E?*jmh*lSR$jNR_<-;bQ$VP}j1r15t%SR%V(s z;dNx}Fsm}HLXRMx$GjkZz<>yjm^9)`j4PoB^Ud}f+Opo(k5gwiV*DOQMw^x3UNtE_Rh{7yHYcZo3I~w>=Rf1q>&U`g;#S=sG$swIXb2tr7cdtpwY>){>2?6_cwS zmJw7Bt1FXD_bQW24=K}3rIklssHJ?~x*?9y-!Sdz&ddrmhPeGBda`yV4e#MO_b^Vd z>1l5@+i8-?$wW%)q#!+XT99fwkC1^noyeW!+ekZd)QNTt+vT`X1BoOsN7+`2tqgW& z7lIAgNU#A1X;;fe+T$@^FvN+ra~8H~Yz2FzxEWM}PH2SXDU}>|1Irwgff(DTRz+^e z|2-@570vy2740S1lT&Ip5IfUGW=7V20CoZB9DqVzFj+!^-rGi)EC71}^xj^bZ4FlE zd`(nd9<=m={cgP;-9hNG<|e{&oT6?sXv?=_m!6Cam%=>hfkJC3v|2h|y&Ex`7Ho0;5Pw!`!lq*$}*Uz9YWE(btqCE9~}}4=qzQA*^GFu!Hm}7zrsS zS9v+=_TBPX?F)dv5cVieUdN$U58+d*{Fi4Y?iae-1Rg56b@zCOO4AXcqI7tu6x}CO zjP4yO<4AS1^TMbSJTN81ehi8bjsZ3Z#)=S#X(ztJ#1qi;1egu|D{LX5x$<_yO5+sV zbh?xqKb>F`cUa9CVm`Gv_W|3Hl=^-?V%mPt0K}=*8_wi^> zP-a*Nu_ekK}tuuf}(`UX|}*y*l4r zdK6!Ay-HtYJ({nyUbU|phB7RUsT@|u(1xWk)x&>Zj`5sw;%Cf3LOf=JxQP)XBw|ts z_81%6&lnr94Rv$3s;}iPRWD2N5?@OZ9;|I2FxFU<2XB+&`Lv1gyxU}~gf<2qCu!vs zC*BT=+t-eW6K#jbNwxdLiM4yj$;87p_QoSNWB}jzXGf9EJ!6wHYcj)~j2)U@85sbt@MRFbcfIDFAoc+Q1O@a^Z7n-g95K$Yadd zzn*)GYD(eC&=(zT+c+z>aqJavO7iH6$kL1NHh%q`a4v`pT!ETx$?dwYeZ zdb@XtAJIKe6z(A#@=H769@-?W7-1b|b+CxpL)d`X-Pj9H-=UH{s3mtjD4TmG4ii_$ z3BSp%=U*iV{h4~C@s?dQ0}uG4{U5GKG+Dh0T#mMl0AxZfEZdOGp zbEh~w$)@+AEfYJiu-W}s$gJ3OF#QFyJ}~Z!2e=d;TP;OB1@C-t=dYDY!LQ&NL2P$W zn?28@K`bXCC$N?9rDCaDR35G`DetSlOWsF+kLbgOp5yyOA2n=f?#2-D2E_ZoJhh|3 z+jDE*0d`8C<7=lv?{H_XD#z>>zNYbvVXMJIS86)iPfM%RM=(8ps^VKV4n5&xp8V<- zpMp~`b?qtcd*9NtOxr{L{d(J!r5!IXbikg+iQRHXw@$wPrw(f|-uLGR)`|eHrDi-Z&4ff#qH=O4bq5PZ5_nD!W%W63BN!H!3+`kW6ST9jj{P1gCZ|Ku^MHSYfbkk z*PHG{Hv31bF&B7@#oNA=+GJl^?VYW?^~Wd8fhXz05QnKiuVn_(<6*@EaK~%Q$%47T zPHS<_ScT`|ty?x3bAIdSDbnk2vFqtOj#n~j`zLh4&%OuTlcvkEm>aD}>D9_PD_a;6!X^>?@Kq~g>CJp@%6pwc>v{pE=W+VGoE-DOhQ6I;YT9=rh!ExVB~L!}T)66VhW5wOT1~YUN!xr82n# z;VO0+(X(3^jRD(>{8E;OvonbIy&o2`ebIV_N^D)UWJj>BC&rS9(4LKOg4@r1!@m7C zKF_w9-DK@T|6I0iDUT#IA41kN@8;5)Wm3J+o0J1Kq%t`#a<*eq1UpRPmYXZ< zx5PVyCUJGpIg=_b0wJlk!XieI5Q-Tg&S1<4`Ivfw z*~q8g<0KpdN8S&?MrPJgGVE1`mEIuCCjFC)&|Ov)dIW>;3~)4O&Tf@GXaARHyyYFT zOYKi^0_}vZ(B+8f(Y?8C=UW=jAOdT5A?*GaX>T46_4@vgx2cdi5kjaWvStt2ixXk& zjNKSC3n$AI6D3>r7Do2%*v439m=QvYrN&yBF*C?%vCq)Sb`X9y=l%XXe&6r+@%{bt zd-R8_^P1P|y080sF4uk4oc|x(vSKN&B0E*C$NO^VE}46e11VtL3#ekL24u5>1DaVp z0hugB0GTB^^C#=l%&_Gq<9^HlK0jt)qH*v6@6ZGyt4JQ-i zGC|-@%sghD7&?Kt4e4_qFE#wOI48lCQ%BhcEm{?~|5D&?eqHvTf~Y44!yM)hueA9W z=6)D@fW=rJi#?3^zE@_*S}98CUZjC0urE-f=gf{3>00zhxw0qVE4% z!R*3{WXXB4C;vCj=?J{%Ws_~hjiL*PLZeH=w#Jue zwno{*swUYqk|A@LWWuBc8?F!kG+C$d82%Tg{g-Dvhj1vyBWOjt`|2*NsDvJ@jE0)X z+A8uS+0O4UQtGnQvDxO_an*dL?YV7v<` z%V<=?rQs9xu5K9+&+PvL)a5xC6>Bo5=EqsFDYZ2WjmO{wK66 z%i=!bBe~0*diVXm@dCb1h=+VPaLoc7s{oicGE@wV65^l3)A{CV=?CYE=>l^#^dobn zbm1h&`6DZK^CwnD98WwreCxYcKs{?@$b}p-lsXLnc?Dvy$R9CSJf^(N7a%*xJNnaj z_ttU^^ZXwb=|1vP$PeBv-rpf;vJNDY3<-F~@(Wnv-ReC!w71WZ#fSbw)IcV(Hk8h& zFPCk*OYQMkvCw0?Jem4d+4z9-%u^P8rZ8(&uSb4JkX${)N6v-BJ8g{U71en#aVG)B z7#Xu@qhpbfzmRP~2OS)$4?EaZAE((@bJ1+8`F5k8_8-RSBEqs*2%%Vfl>GZ1GB>J` z8n&p>8r~#FHbxem)=*Y=S^5`_?%sY28qR39+(XjnM!GbN(H=oDTx-%a9B9%+&c9P6 zgRm|Z&RLZHA4UYP9rWUO`-jb;A>p9q`@doUYo@Z?tt2hKn+EOOmuL?}D>Y(85$%`% z`y47$p{~0{!LW6W!LaAN*uGt;wGx3`vkj_TbJZoC*ejjC)@;`p?&ZV`R?r?hAf>pZ zvTV;0S-!cXm(cyP0j;3En!lZHxJNYaQV9Pcnjr+%v0W-~kKmcs&G#QlM;I6x+-ff@ zmO_{nm*y;<-ldvCJ(u(zNL1;?OCZ~2Ahm0h$@t)orlrZ~zU5{+d6kiH*+uMD?LN86 zCvm$_>YQ5HAHSa7h9~UN44>ztz&1!uF#00O1gY>zYH_zH^U%M_Yqjf{`JTq-Fe8z6B|xz zMZ4(jJOcE$1Jw2r0WZQJIK``y%XRMzqa?}tva@D2C-xw4iQ}m~=v(7>co*s-c5LR= zkbkU131y7YrZXTqPCI7U%6e0w=%h-)xC6uH#$|3;`~Q$PjqyJr(qt+GPBwg3>d1vJ z5jwUPMxQA52^;w9CLeO@B-Ncc$QdMh`Zrle^kH?A-aPJRM4H_(d7AY}I=|aF z1)U}wl8RnaTgvRB`i%GgUUA0J%27gIx%z>_V~0*TpZ$p`4sYb%%fT|?(auE*vP1bI zzG$KD4BFp0@PTfj%E*Ms3d(P;m6W5dpo9vcojEb}#NjnQpgM-=<#KdWI#vqTlEGAd zF2?UX<}!nHAmS<7w0Z<-E;`UHYzdpK>U?!d6lu?D6m{k!6a@KN(jlL6gj;>se-f*o zS5FP|gj$b~IL9z$IJA?BQ-4*zDl&I4xu4bc+||{hDu$*~NY0rWhU?Dz!1{4rut0Zm zM0DVn2!`#aB(Li!+J)ZNi6w}xdVsy_`4Rh_A3$#?fL$sim9xgl+CYUxj=p4gz?i9= zw_k_95+_pIg5tNL-ECTv+CJP10Kex*)kqZ7gCODPsdx(M#l~yP@ewb>6#Fpou+$Wq`i}MEZf60Q9s*`b^n;p*5aNgi z{q2E?WL3vf1-d8_2-HMO_f&Z|3wE;G>N(lW$EN%EAusXzwC>=n%R2{n=}d-s!>W?A z6KtpVLD<_CF(iyWa&W$?ZJ0NNjHyuZcZa3fq@S81ytNhU^;6)(eR2+mHP?f5?#u=I z(k2y~>hC*oTjQ}K54NX>o^JxH#=8Tn$6rfS>UC}- zeF`0vrbL(OU=+e7y80KT!P`0B{l5JN$IJR_6yH)btY4&uQee8dAv?|Ir766lWfZZ| z8p@H;Qi|{>KoH4x$vtCJ+-slHJ{>?7qi-dWJNeh4@`Ox+1|3R2jFdtqlQYS0S?^ge z4*aBZtO9>>#&vHS(sAb_E@p&Mf&l%!{`m?ux(hvS-d`B$(Z_k?@_6))(?`L1b6qgr z=o8<3IbD2SX+C;oC~Ee-%jaiHY!74z4t6Ob7=_Hn@h96X`PAN;m{M6<;YsPG%hy+a z8#$LPa3bH2I-T)qz%bBiG|#Q=z_Te;`e}>9Wvk3T6!AF zt-pDKH{tv}#}_bF8UDHXhH_{1VRDhXr&eW|b7VxezoFgKd~#R7C6AO#tpaax+EQ394;Qadhnd7dp$`Sd3%6VI z2e|uawt1hUYdwRI+o$dHr=Pp{@hc<}k96z5HD9)3ELrXA&KT!by>mdC=mpbGjq^I^ z=R0RL<@up|PDCC?(0BAi9_`Ah)aW{&LcT1N*i{)$ob}@~N$v8nAh*Mv^C;31x)Ztc zAMdICJTQg$^V5-eSY3?Ogy9;@bD-sP2z=)RjJn8HS!xCe=h_lgu-`T!XQ}15qcW>t za)k(LGiOkn5kPIGa8vONvV?vLSx!HLET;3%gQ{h;mU3{km?AJ*1>yia`w&`QRCFN9 z0I61Aw#9x2XMlRsIS+aj15_3aP+2hUoWrZ89K|WT_Exjda+9J6j?{s!svkz&s#izc zA~qsCeP)M0!ax}b17)NasBgRg4e2aSZrQsGP(Tp?vL|$~_Mrg1hXP_e3W)Kjm#jl5 z08UXrlt%$DssMHgO%wD*iYZzVW5!X!fL(SK2s*3I9PZthUj=Br&mrWn*FoQd#AuQc z<1Et)RnJDUk<8yvkJw^tF=kWrg3|=F_Yr)D9%yk~0WkgwfOApEf(9x8=3fCY{|bQl zCjjQ30Dvh00MkCOc~zGPr2s(g1N{7-A%)I1}mBo>|exXVjLHK?dJ zwAJ0vht!P~4N);1bhIe=_+r zrz5@o{SrGW`=O;4Cmb5G^RPe1e{C9tDli@BaU5t^`&?a5USfy09Ur|ixNS+|9@QBP z?A1h7u#^<6dQ*DbQbVVfcytRjP%2WNyk@6DtcTAhh6{G7ii-Jd^AE(rHCE}rYH)nL zw+OMfn(MDFg{SFV?(Iufk-n<6gW78v^RY#0^k&SLJUo7N>hE!%lSF6b?Wo(Qi5xCK~IYzKDP!WuFynF zi2HMb&aRS)$HD5YFNRVtE10I!le_wxuv!u!(;-%;)HnNFUTGks^9Lm@T3-F?@_0M8 z=Jj5fA(el?0&SY6;)*+L(ex_NB|_ob0W3<*JG=kgk@x*=d^lQ)LIC|SUvJfVuy?p{ z{T<<)1|>;H$f)g6UT3eSmJ5!4(UI5S#J{*!D`UNA!hfh+=d4vCy~wE=gWjvZ9=>`W z!OQ=d>xZ$D-8mUc|0QZ1t*M{8>x~dYO&h$8o}p7nZ$b@o4(BWeo0w8t?Dsn97kO@X z!fx0wY$i60R?3NA85WK3jwELUpdQdK|F+4x+FsX(mDqisQ6o`Eq zc#aK1l})+E)o4gf-)bU_q`?ra@kST52G&Ggn^!51o&Inb{65`#UVS10)rLAqF`}Ft zl^u;m`&ggRT+GnPCH9jP8A43QfwCHUx7SVWyrijSRUxqM(F{$!5)K2yJdR30$x!S- zK9wF#<={B4SKqDrVBwqfk)$m~6mviOfroB;PkWYl=kdc+!B)@L(0L||bDO_HqFzM} zc_e*v5$y3?`W9K2;p~>@kzfDm_9_qNFqYpxoodI1=jqjXdf%MQpYkhg>jvAFM6$nY z#Pg|N?`X?rn`bOynt^x_yLDkxWYYz6T312$q4*Q=t~6?zcaLum@f%5i!Oc`=D3d&i zo^ToBGm;(S5;KSqMEbTo(xY?2eAX5Rc}G+Wx$yR3`(Sk0LX+61HSQRGg*`HP;Gc{1AEm z?5M>Bixg?xx_6Z7{XS3JA&c{y$2M=`PFcuV#7jSmOp8?7Jg{kuJ7Xb{@#9kNv-1J= zv!@z=W3feGtR99c;D?&^m-E=N5iXHqX zug}@fMMxo8K_2ITQMy%o5mG|NYCP5G7VXXP zvh=kimXrLP)m%ad%>*vGF`XZI2^mLzO74dCvb@l~Xd;D#an^Og6513FBtO3H^MoX; zU{2pZe|G*+SVq_zo%cGhe7JkP5~m2!n}-nj=G}hrg=c@T=HulUynX{vBcDj)HkN@ zO<|>QSiK5~$Z%$Yq6KwT(?fHA?%CW&mKm0BF227Adj_|wzeK8H*fZ5pIVc@XccJ7i zs-KsduNpC%_18&V3?C*x zDiL*wVoy2dDwOfV{fxgh#f@^nwOD@B994!Ar0~oazF*7wW9ZwCBUm_~64f6p=nLoh z+lgda`c8<}Lj_{YZ1-i0jhZ=Rb92`rHc)K-DHz&qqpSm@+S-o}ttz zE)=fO^P@@VO!QmI?1#V}N-xGs*H@RAPjY7{F#}Oes1p=3fC}VC6FAQ}J*&OPy^i=! zz$SW+`y7EM)SHkbAC4gnoLkdWChth(>fJpE65$mEE1~qR`D5!RH*Ho0Rt4(Xx1Rp9 z9p4p&6YoBLgxT>S-OJ3^j96;4Dkj?V@N4`Ti~75=|K!4qnEAc^eI4%DlqWsvKd)f& zH2$3by16N&dv23!^ZKg%YBl@9+8Y_-*Y20kv9_F37`b;*qB~-%xe{-0u^ZXPFc)RN zV2uVA8H*%?dIMj7Vgo6Jq0QW>-+8~?xt)>UGtjH#CG0CqOeS^IcZ3dZYppi1`7xJd zzqm#Wz}Y0WBwLax$WCI*VKm;g3xx5tUTjTs&l-Of_%6^#3*J=kN*ZOLnd0m;wvyRo zZR9l%6x}`KjOg<P& zrR`~Nu)!>NulcSKH;uR#KWm?;KVrl^(HkP+b7F;kH&*YdUbjSVftR(fHL-%FJXr5f znr4JBdD+(=M>?_LkRMIT0tMpdAgApx6?*B)XObYvvAZnGudP~tTJ>42NqH8e!PC}T z+Jh}I&^y95R*Z$Xh{98tE_F^mI-mzdQ zeb&6o1tD19+V)G~5Q91V-;x{yZ0Acxr-B6)T91AYzjvZu3aIf%>Yd(=%dffMsW-yiQg4n^3mkh@S{fUB!_^x#Bm8DmAeP-Vg& z)B9CrO^ua#c>?Q8P_7c6?Q(;)TSw*jN@)43TEAg}-66A2Nm{Erkb?!LXdaoRWhGQo%ZcwoWT|`~XBEAYuPFc9n*q9p;z^_QlfefY zWz2ox%Z%QOOBe6~BUz_aKUHY_V-$thhCEHev=0^y4nH;a+XzKH%LZd3iZgPQ1;0Cp zai`jgaar2r^6ZLvdm1j#nB6og_#Iu+l`m(@L>8e%&ZaKctY?$Q@pC^bqCt<}AP;BI$Z?+A`zyEsmO3X$z--E+=zK4ga_~Q5U^Gb9qrkWGI8lcRHJ6J_EE4Je?q(rIFJK|1s=P3?;Xirz!`2T_ub3ytL6Y&R=-w6_{}qPJpY z(%)WX)D}F>#y7lV!K>EnOn)p zi?#e%@I1xRG528?;*y$e_yI7@lt0)XnH^HE&6;aw+-s!`96$lLch%K_^P~JmiNZ|s z=5EyO>N+zG*Q@voKHVtxO=eT>9gifw(_j5Q)v-CHcE{*av3)X|WoL2@YT{6tLx+gt zYc+-+AOiUQ^+!UX=IBZa-Qx(plspnQhxC;N6S)fnzJP02nEG9rGS3^0P@vRY^evAi zo9xCWxmZWkMHpZGWThwq>K7?%EG1QZI(69?M(Z~Erao~u;0enofXLzxNTk3oHQtoU zGU?R_<^rgEy4O5_Y+4(=D_ZZ`fhYmGO~#|c6cb(0VbDXfGVD;Gm`ytEDHd8}VC5xG z6i<+8_YLnWPzJXfhPYB+9(8v^r7wF9d9noVn`Ei~R0SQv9?^hpxFKgfAdTT`-d#e? z#aAuZ-+Flk?d1;%LVZS@_S|k@G4()B$>AN3$(67F$BNn5zOV963gMK!d9MOrCf$~5 z2ye_F{f}=uyry_hir#ahy4D=G_v}3ucYgSM@o990aBvo4QRyviR*rnewO0NE4=RoY z>J*k7ss=|oK3W9eQ>FYANad!1-9W~8O_|$hPUVaRnnj$u(^@;CTQ4r!EHGLIU+Bgl zIau59rwb}b#!rzoHl$BNQ2^T7vyd1D9s#>+716tTo6c!a6h2iyNO`*ZwVqXE`@yQK z7T-{=hr7C%ipdGJmF{t4FxK2RMqSla?vA%t6Z5U$i&qD{{5cJ8wG;BKCvW@{|AUJi z1Zxix@_bW!dOqN@#fzlzA^9b+CE&t^u}`U=XRmg7JSSIZOlU#98ZEKBc*fAqNp_ly{u z^<=I45Jfy$@PSUhs{U>qUhyq}ZTS_n=~@15(;&X=Sv%yxU7H8lDfz*!^U1)y}lE?c#Kl@*1@e(3|C7TMy#a8ECDd z)mk8~{ZHKH#-y1h+)0;f$B>zAV0-%w- ze5|0Yd`hOHd`zYd06h-!3BZ+*4&=-j4SU|VZ)l?4sl%c$;5+d_(^%fX$XXAKtVAV* zJFylqUJuNyL||sEZ%2G^25v+Ga3i9C>2{B@1dc=$Xctg0?N3g10&JXpZmgwkZVK4b zk}U0V)4-ng3izfv{i^$4PgV8z2;mjq2vsTWJ$YbNdF5DH)A!|4LpOy4iPNAs#QwJ{ zXCXo{1keq=V~@J3x?sRd>T_p!!3TI`eFldMV9LWDK8wSjVT-iwF8#{LPJR4VLNmh3 z%6g(vTR=fHcs#EqV){++tlr;a&Vep~-c(S=If2YA)0;k-CHRWx9ghzeJg(lD^v2oS zQ!kR zXa!o$gqkV<>y^SYsGmYI6oejBQy~`$urBoYp3D;q-REdqbIK9y;Es+pXB>gpD?|`_ z2vq2_-Nyy&L3@u$oTlTQPiyf4HX(1&Amk0KLPVfB3km;qpe`{@xr`28Y+Hl1R=j)^9qpzh&%#UhLS{$(qbp&v|sPsa#&QId-qrLho=5Rs>m{ zi0R814X0`woC#iIg3R*#=apNn*&XVafoS(G-0?#}>#h1nNx#G)-6<)ZpxlNv4Ew=C zM!i%qrq^0cTGPnNeE16f7>>f(Lc__~$ zC+uExHa3?^5BA=lsW+Q{!_W5y8@PSgp>XRr6+8ama=AMXz>S9Y+NHfY+9rEecLZLM07WS{Vl%BqCW&$=OY;o>G7dWey}^h%VR!Pl_l&N zea2!a+5qKIv<+hK1{X9c3TJHoi4HG%h=|)0mUm4GpcU=$rr|vH5g=CE&42`9--V~* zy=lI*b>4;+vNL;nP62M_x|FDkapoKa02FZQ8)GHA)IqYpm7-oq{Unp?yDDBO($Sqz3v@hdN6Bhs-Y#P}U;SZHyo8pg338qIi;v?e%C-Au-@ftv;{1Ye zlKwmWG*SWiP~(Y4R}OVg?jlY_w4q<$4)9hKa%H{Qjw2l#WxZ)H33~e#I@2KChyFsG zcpj8U9=;tANB$@Zh1INN{UJt3CDiov57D3fz%JL-r=az?J4yy)fr*I~;d7M|ey$1h zTq&3@g}sW$^SzC);`6@*LoXRGTp|C>K=d~qcCDt=*7#3?lEnzAHA*=i+yQz)h%q^f zzhO)`7crnkWfk;-tb%qFa3?rdU%QNk>u>Ss9!mO=Eh54Vq@O)2`xWwCP#KZPOWzfI zU6o{CJVu{;Jo-knLYi*7ME3cPK=YnzU}@G7S6D)_eleoo1BX<#e8k9omMJd@>u1*_ z$?^=l{S{r83`^$aea&N{{mZjs;s^KC-q#HV#`jBMfw7<0lRD3@xFx7BhBw^i17|-8hnP#NU_i-A$K#0}&U2pUF-Ak|2h0hl1Tl&-h=^{0JUo zD9});unuj#oR!qo3%_(5Jo+?NXFYM^CSo!D8Xd+!Y$RGwXi8d$%@Ze*yS{d_gwowr zFcWUfI`Exs=Dm)Lza&t3x2CoTzbU+VzL>lE#JTT^^_#`9m(F8Xu>NP#o4fTRdGEgL z$=CY)`SoDW^WZDfeNxZ|pd%(pWiq57TlW#10s0XcI-gWSwL0#C?4p~Qf;89JA)^hA7DFW@ZI;E z_4pZsbfX|P=yrma%CpeU`WH7+t_G#qT*Y)fU(6D5Qn~X~uP*<6foP%(RzGr$42oUC zfC_~m^u3!gb(i?!J@n#~Xf9_{aO)H*DRS*qc9LbL<=gW2<*-k1qB8*nG&@a!+)KHW zw|@?r-#vWcVP6KVc>r@UehdM86U2@3NN@cH?k?ba@yZ_t93DvLyS#%#h##yW%&PD2 z7uz8O>DSNs2MPwk;?C|>on}ox7Y>;QVNb!M8Z%ZH5&cd3N6(Hv zLT8|VzUa|%(T!G_`~#oE`NaiRWk17@DTGR7sdkz!{6QHp1%6M zWt4p9j+ZX`WC$i=>`z^ehk3m8M3vs7GFyw(GDnLTfTH6pA-Rv55d%u;xp%W7!+rvm z@5)KPKliK~pBG7+8x!sY7jCZSJxTd>Ow}&XUjugvxV=t1uU^j^X9QveF{|}(ESsrw zJ6$HeswgC5{pI6%yf&8D){?XEcJ=)#Y?Bl6N&D4$_^W3>>Lx(I90?uo8ao)lw@UE_z0(iLldP9q#)~I(z5hzQJ6`(h(U$Bc_vVdNwbcgpWsEcC zknVZiB=Jn~w`uRwU_Ee|dI6GWy{B)7PY2b?M+RO|Z%3M_pYW|9ej=$cM40~vk9T#U zZ^tEf#lZTQ-5afwXR|JSi7a70uYNL6$S5Q&F~XT#?1w$uh;Qcy6O!p4y=IkIYrKGp zr>S~@K36Z#YQERIIU87hUxTix*T5pJ%vNSjNUT+N)WAERv;AY7FOmU8PgZaSJt@w> z81D?4Q=LIS3gZv*N#~Rt;U#=(rzt-5O?PE#S9euvPj|KDtBZKR{Z?6a`_TNncxga) zqT#%N^UWJHWWhl7?&V6Ocmrq$0}eRv)?o|`G?DDpbN{X7wjDMffF_mQ=O|tKJPWnd z^VEZ+DB=iOtO>k)n&xPAO>lyzENylo3y41~HFg}!f?dXvXQ#4U*}z&3(n27t34W(um(+T-r1hoMPIm9r z^9t2Ovu=`icpt2k=$(@vKb}bOB>cIB%&D}OOM+7Ih!?vo-Jl$aQMBBgq0T^8>_MFlan{tgrH01 z`EP6gS*;*eGsI!HyBB;;+(T+D>2-RXmPfOtSL=ws!z3?{Fh<%ZFrSxRXfHBh8N9qN z{3T6pDEw0}zI4vHPp>uK1GS-t?erm*t+7wK#&?Z3q$^A4Mh@049-I2yfE{Tb6bYUP z^cPi_j%;0ZbN&(8ddH;x(dH^UvD0T^wDfCN`9u@)Q5WuW(}}& zi=e@WxzDi^60Xzxr>76L=C9Z9g9%4&a`8rarTZP#+=zC6dm1%+aPu_I+rXec{mW&{ zWVD`-6H%s{E`m*JKEYo9dexWjL`|HR_X!Rz4(4glh`sa9#F|rfLSP_K2l9MS;yOGw8&UGK}|Dl{oXeit4R z1~xQ(?F=_5JHsk+hB`!)+z5e^m5Y_heW4H#Q~D%Dfs7mT|60xg*yEbq@Kuo3%5arh zG7P`xmuBNpS!62okY~M*y$+5@=y&?Jsc%88q0Yik8vH=$K6_g!3!^f1lDa)qs@G6Z zopj!Q{TWd)8dAS{?Wn!`sO>>KM=eAN9FY)k32=p?E|T~K!S$(u@hcYElCwOQ`;=G}mYbgh#) ze?ECu>`WHf^CClQg2WrGq()4{?)epb5-YYu9G!asheuM19u&>->KGe`OyRDR=eSOKas+4F9b+rfDWz`9Mfo`+RC86j65(T&6e znA4n#0o8+jk*_raDsUuT*1XyhzU{<@$Gq;*u3H_QCI-lkGx2G&;h|@AYS*m{Wz>HP z&tzR&rEbfI+Dcg)RjB{en$b$V%9l@nr#9qLnBDp|WGI{rdLt6qVPE+}uXE%=O^`3R z$N$c5E_}hO_q%W16VS%36J=ej6|vnGw{7VQV&bd}(cR>{tc{PZr;jXguy4LqGQ(KP z&iImss$hn>l%2_}x@uc-C&t?MA!(y;%)u`v7<^Fs{*dP)WjgF!WhKr9aBpy-gd`ct z;2J+9u@h6sWw>9|gw<>G|z{3 z;9QSX!eNI`@8%%rRKmfy*}p-EB2tS?6FJ(9)2eoFkW$0fq;idS-5LR*KAQ-G!_X=U z543FE(WIK3k1Wz)`6G*CM8l8jWH9urqaJ*vMa4$hZ*m9I&KP*4|6;SA8C7kC-uHWF zz2*Y3G8nfo;@S#LIOOo7!QT;F)}Y6&n4-C;RUI3!Wc=#{Km!2y8 zSka-E(^k~J-69reiu`^$;AMwilt9t@?bU1@uAGISx=a+MCT zpk9gb*&h6~)#KnYu_I|v7RSXic>-b&{@FkvKZLz(w}oz+Tk!oRaP8Q!W2e~ljYajZ z%gf5REVa-rw?0{FjTbc*g?i7HTWZbpOjqYBT~b81xKH%NwHMsa8|7^OTyOupxVEyX zlW_1e+}}zYT8$FNzv!(E%&atLMl@b$I)<{9M(_97EV*M|<{74`4vw=&ThVoWCQFMH zwXprc8R7S?c-%wDOBc`TN31>k8OdHR+b6im(3dkJ>tm*dizD?hZi{9s;Q#7Hc5_S0 zGs<(5bu)FG%+06`_2A);pAtQEn79B#Gacs1@Kf&g7;g6kUo3&o-3BA*Zif+H{|w8P z{Mpe%*W0H}y}D*Qj+|fk8!o@jqFWk!c)E@T+b<#&#URPxFFKz3>hClI$(Zps`<>r> ztwBEY@XrnA%w#2fFfB{x`#($<_Uz5Ve6&)rEU_U!_l9g+gJM?n%Y1Z4R%rwoWvG~s z#!^}$F+_z^(iq~_%ly^3*E-AfHK&rG5zh3aJPAzx+96U@w2m<(qKG2G!~IdhB+*Fc+mJEbx=1FY zOsb9)Y+py%PnJbqw|b1WwzkI2S4|GF3MgSC#jFBMBfYqwjR033uFgWQdkquVhjhk! z2Zq&V2&9n8>n`%(VLfzN^BO%-EL+tC7kIMS5*CKtr&q~7w+so=osuc7qLvrmqL!D| zP(K?6EmM%|xikHrH6s)e_PrN}$3_=eGDDZ(_l@pz(4*klWrT11L7Rb@S?@Dvmu@QN z44V~-7Ne<@Qt`-T7jB(u_8G)1%-=!2rIO9xQo@#NDQD}neCSCV%zbAwHQPI0RR<@^ z*4FjwNTkkJPye1#slZ)^Y(ADjbFzLQ>*{hGN*|$Xo|vr8I$&Rn%dEuLafmAc$)uV} z$B-(M6{_galXeWBc9N(@*2Pc{Mdc!S(JeV}QN~veo3JBleMP70Z>!=@=P+o!m;uBx zxYLo85@p&?`B42%{kql%N{E*hGb9|+#HsPP(-Q$aGS~ngg^9hpVHY=h$$Q@>=D~v7 zJCP#PS(@Sa!NWFPmy#=znyO3uk2#c(E_|MqVa|v{5-yA?iQDvC$enhd2_!EY^tp}Aq-=+N61-ELdBlQ1B2OTL(pi0N@nA<3{Dq>hN^1W27REwpO<#=Zbuf54gb zf2{Ui)mn9t_LSo+XWaFk?$7;GPTtJ=Ch_FQCu$Ch0Ts7}tQ)rKB^<09!s$gYYFg>k zEzDG&p-cr6cO}ls`jgDnnIv3mQmthJCtO_n5^J%_zDnn!pItv)0{eW<+x5uc8N4?2 zW2M9g@?SRiW=-VaReU(hJl#gGd{Uw!!i{-vb@?7P>Tjckc}F@oSkSzcLWpLW%7UQ~ zUmb@Q)4?JtSS#)9={?;efHpBDCS zeu%!=Iv{y1p>fRHzVMb)>fz99Oq=1#t)bYoTdCka-PFZcpEc_Z7b1?G&$STHp}eDf zygmH#9c6_()I>4py#EuuaV)8lglfGjWT!|M=zV6tu2ai<1;e}CeCnrieS_31hiLLK z=fhV)1;|@W_9(ZSGC8MhVHG9_LU(EL}aTC z&4j3q%G$CWuRc2o78xr##U^PObIZ|!;qP3FD*Wt=U7Skf$ZqL)jRw(1qY&mJ&8kU1 z`)XWRKrV?Bkl;rV;C#H>`awdmNm%?tu$fIM>0+oY^HL}@vcSln_VWzFrq?mlgUJ;N zX3-YQb72(Rua7j2g@u~*j$cc|EfM|-aQ7Zb6qxzWGy16l@;eb;Ec?>AFtE6}i?vu; z&lvc6-X2dlh8_+Ey@yHYSf>xwT@*>pVkntlveLDh*0vu6g0!1~1-tE;B##pD1Gco1 zKk{R|kNNVfc1|^JY3LWfSmb`HZEu%sYbRarh=v@}xL+D`|4KA8gWOVD_tAe%)(?>3 zoh6CYD8Ca$M;w`M7mJT%>cvVx;jUn8I`Bs4P^f--;{7(bcnKHy^xM)Io7Bs~{SKNZ z`kg5I%IZky{Ag82X6yHx8CAGs2#(aXmx3tN1z5POr^|l1Vaz3C5BOvNM-J=foS=D2 zDffe>Vv{&$Xmu>{cnwLO<89wTEqEt7bTai1Fknr&0y09=^w2u>0%|aBWK&Jvf#gBE zOFL;Bl>O!|z%@|R3=NdXsYC6jI^tq*HIxRG6O(n6Fj>Pc(c(jyh-KAA3^@vsC^zgc zjkoPx3D`okO17nV(A}a^@R_tC@j18*i_A(}9}k#7wC-@sj;OyevafT|Dl%R97^^>g zSF#vZ%|V2m$#?7p8vx~(cBl!{@_WEl>)8&OLm5zvWJ}$!9|l-+2x4=Nh-s5M!|saM zqO)*48*6wQq|SEq=j+OJ=<4;z%($Z8;Kcy}RW;}fNpdvzQ(YM>z(I6nvet#uyQ{On z$WYVY4Y|uOY0@Rv$YAlQd#L6Vhdod9Lo~Yt;GpH;jF#+pk~wF){n zsbb;vL429;*6)giCWE(@$ur?_hoTj#hpDpsrpgAl@U<5pGv zez74_@;$D$5?o!0lSP=;wOkrFdnX6lp621ys~C_B4ZQAZ!4X;FTaL$J1!$MBylrLZ zRkcP-CT2NgWu14KH?`>?2LhIeEk%s;;V$-r3i)cCHW7<3cA)(oxbD>z;!HKDQLDDu;@ zbd6OxFDllSySa#5e&*45gXw2q=OGIDCaR0c9U^LMh)5zFdj%@tsrj%Pu&syV;I9bu-=pJl<7_j^O6(Q2#QGh36F$5}Xdmgf>jegyK~|rHS$g&4 zy+%Vt;gYzyCGO?U2F#>|*(@SETD5?@X?~G99GpCKUNI|9sCx3*%#D6HnDv8W%9<%= zm6Rc}lY?o&B2>FxFm4N~A6M|v?WavNwAN65_~)(VMyOE9d9qugBYskCMuepczYatevn{^=4aFR3d5dftOI%o<`veKiBDH=Pr`{XV zqb^)ui{Nk%35Pk-xx#Fw(l;*6r*B|6Gu$QzGx>~TGU7^KQ{#)yQR7Rzsqv*>s3k*3 z;Zh%duQ53$T808c^AwJE$&1Bw-$nDLU5B+{@=qsRtb`vhA7WiBxj}sjlKf?0i_!#x zb&q};Qm=CttSA*hXbbe)_x`(#?8$kle$|t2XT19(j^~u(ZUwYMl?-R+)DC7=PRcb> zks}4*eNncb0CGfA9NAxV#{LahRB&FYE(j01$$qF6BGL`a=hiEgwdk> z=Dx@x!pX==w$$>Ik=oXtp~B3_6n#f}ioVV2r49QK?Zg3jP{Sa3Dd)_xEAsHrLc$1y z#&YksGb5W7`Yo2>N2c%b*(+|a>of6|gPLG?Ae;OA(YX7twrgj1f@p+oZNwMq0RPvu*=f2=K`o9<&rk2Kf0-fyiF2*xWc5h|cT+0$@50Zn0@)@8NRLA;xu!D*nYC zj|<||oo%!QyQI^_D|g(ATc&E?=G%*p;kS02=6|QzFx~CXQH`rgGOpW6x6rB=CS0sb z%u-?7@M5OGMxAxl3n3QRV`A< z0J2pyXJEf$6BaWUkIxmz8`rAY5EQH%y+5%zVh@n!{i^Nix%>7zc9Rfo{8jF>Z#RA{ z{c{JgWALML;rACkA>S8PcMhh{S>X$toW%LhctjN(8N=OyjDK-#U+|o2e}*?nh#kEj z)GFm*2ESu7KIu0<#txM8Xxh1$bs{qziYaO7LA%URUS`dCG$AJB+wEWe(sLdEuvPhM zOm3`3$1aRM<6hbF!l42?w&-HB-l}+~S@B@yfie7m_@X|3a|~xOKDkiQ;yFK(iLdq> zPsQhw7VO8z=N{y)6wMXmqV1!h9cS@p`w21*)-|5Wc#lA3&(;v`avr){gx$*R>E^Ni z4cir3O9CV=0Hnvb7A6@xzIXt#5`w+8)4H%#wNVW}?eLs3y$`=Xr`Hf44NWkzk5SM1 z1OLaJSfQq@qxhqWTF()WC@TwLBR~=sFred0=Pvcdn-L|PT zw{Dx%c`yH-yZFBm+R=!ItDXlO9+Ix%udRTEMZ4Ntg&@1nRnC!X#468_mqUH6?=-fF zm}ky7zSbMv8F_zb8jPOTld-dO?7d_UmVYHKtdWy#1`f^luf)DosEELq=AT%%e;HV3 zv)>^)H$Qld!-E%`o4kdu&}IGY^82KNqt#?+qux|=GFz!eH!~y)Ej$PYC?V02mG|t! ze8zQejaTvOGDW3r%I=h8X|*=)OdwN+Zb(725wpz+a}v5ddvw8cO-~lpDO2*>I&+)1 z%sjMOjq}Z>Y?G;tGjd@2-MQ9cAX)meg?9fQYsX)GWBHR{gPM!~=%-10az45s%zh;w zy?hw|ET41l%Jr430ZjRJCLUnv%x{j$P3c2%_++{Ja`zqf6Ko!E`XTtved15-FYPCM zNLaX?Z=Si}cYUE?py($auAM3H%1wweA-Mo%1B@<3;Wx=#t+rtfG!Qm5trfbFn5NQ~ zdDPj!QP!sze1f0&^T!kNKUSlZ4UgB2&P$wm{y5v8c^;skeraCq>(P`6C)=9g;6X?@ zTH9LNp;>Wy{Uj~@0J`p~*-9R?whSs9fLy*xTcUatMHsno(S+cxRTRXsR^_T3HeoK` z&~ib4&a*Y4}e0MiYGo ziAPdv?c7K1?k;!Ex}+RP)eo;6d`RFaGe1U>(*A$Adh>9o*Z+UKRi#CXr3gu7EW;@z zWM{?_W*B5_=hPX-*iK^$;be_MmZ1oNiijf++>J?XE=!c@8dLCn zi%kIIU(#Np4iXiKA}P0nD8oCr`xUXTYG1ba?h@))!(}|KrTG~a(E8M)mTb@b@z`gv zW9P{GnZaX0dj_n$;R8?2%Isnk+Dz5|S$40IY4d_6=0_xmdOq~}!MwM%Jx(-UdGLqo z$XEq)y;XZ!V4ji?G@sEH%$%nsBz!i1FSazh5URWbNkmJLh|8>zqh=#w_Q0CjifF?4 zRsDi(Y#>@snKOc$O1&lUX$wl$SQ#UX+?@}5JbZmfVYSt3{`}t)x`n|$&-JGt1xHS$ zwEZd&tf?o9PyD_^@HTQ~E|K=?bXZ)}&}rddZ2R}dS^x3&cWX)Nu#TFH*~`qNn4xET&u+-4+N;Ek#4i3NLH+u z$a{>dvUOZI33)ekCKpB_ye8Q~OVSGD`OA;)oWoTB2v_86UD&+4kb6LU;aK+oz6n8R z@UhFMg$pti4Fc54NuH0a$YBsfL|+V>bD{gJj3`)_&BZs&xld|_jocdds1(tBp~-1U z)LG-DM~oJ1LvB_ywwy7+bwW2vdjxL`Qc4IL$2YEe8w!Y_>H=CAxW(6lf37(=-|xgl zN;eDKN*O#75SzEE!=8u52JtT^a;{-q$!A#%WGEuZ_4X)x-d4HzWAWsjdAAs& zuin>$ZH4O#pizA8R1b)X$2!}h{jSY$4n_xDdmAJpODndbO&k@bbRwR-naNqBVFF|s zf3|u<6ltM{r30>cz23WYEf=FlqMtOa8>EbBukSP|x=vArX%r=Z7y!fZz)h_ssGl_iDaFqs0PaKRygmA^W$x=ay8E(xy!O!YQZFY4V*$75 zZCU(V0b9d(#uYMSI=&s9^IX zw#gq_u1~qrtoZGdBfjnHK)9-vpxRj(@|M2`f@K1f*()+BKrZZHubl$jobnpz>FP=j zqo~E&T*sDMQfBTyM{2_A2JnVxzn|AzWjpI;&6X;PO;d8U*Y($$ir0@P`u+^JYBKG$ zF24bq*;1#yiuIv;717uP{iA0!%kG?$n|4X5hLmMjYnR;)gp_3kYC2ifvH~dvm^`8c zSnX!XlhauhmaY&d_zBhpq$f$a;jUz7u@4!SQN+;Q5-imU5oWi_3;6$)inrmHO*&&* zw%*8|G)JJ&9Qc`&4;Y^&(-^KCkRuV;e9Q*oYQC~)CubXGr-WUNIbfZd9UAyI1Pz4~ zkBg7qt=25dt*$FMfvskMo}M8q`91OIPjX~D#==@po*%b#lnxwIOZ}&XWlEet47h)s zHzD8b&KFJ&*~OH9Om%^*?`Lm=Uf;8p$&eqQ&qglU<@>33*(wxm9FrvA@h-O& z7}(bGjTO>*(MVof<3ORs^z**fTQahL^nE^>7LQ~4LvB{hm(hA1{lXCM9EE`-hy&Z% zw$M}1>H>2wa<@Nq`mE_v`Pw&?ZapqR z2CDOP6fIe7)@bLjP|-5&STkljr?bB zuO2rVV?k6x&sPg^go+YGiN~_}e^jI02bINFF>k|9NxKam6QePoc2h=KYsBYuQ4`h@ zl)hOv>kGhL(Lvi(PyYEMxu*#SZC-itkqYV82szdiFaFwV(oM{D&PR{dhPR|Mm}A_X zb+ZQ^q!kd%?f~W~sOQ(B>e(YplUl-Ok=)CeJknb){ug6a41{fa*OULHAYEQN;V6{5 z`~hanDkl5RWnyTSeCeg;)*v-4PftLBsCtq-Se_J~prVR)g%1dj#ar?okUCqBQg-|j zqxD-J7r0;cC=X0_!G{PNzi(1zGZND32aiaOI+Uww2LWHm4HWe4bLZX5mVw8O~XYPTkdiaxh zZJIN=Z6*Aqh5yIButN7sQATn6Jz{8+cP3F%hyJ}FY&(K|!1x>D=xvbgd2vUMPE&(Y z>ekj8mR#CevO4cPn@jKj+>b7la_LX+@xTs`SFZxW3W2xBW zmGGmJ%+bV9wRr29irfoD7_uEE<~!T^F2O9T7#k5tIf-#XHm><*NEbC&y3Xv?w8gLn zi9s!g{F`0)i<7&dUbnY)q%VnPJwxccmsB797{+7aIIaexu3V|GksK@q{XE4V+O!yP zOp>~n+6H6x3+S^4m#Ww5?Ig)K$vtpl3|P4M5!{95;q6ff{sLFE+3OJL6>Ia(CY3or ziN_qA^b@bDm{4Z*mmUr-L`*(nbWxINy+1NZIzx}^#oCnFu)s`kJuqXWh3F+;n;)?? zhu;}DIJuTG?|Xf5_V-&w(fF!a{{d(3*n#Ug-DeN))||g@h&?vg5K~#C+B@L_GtET~cf(|4I77I!8=1j7fI2m89j&p^q^SQ$K5hJCUEi zXYhe!ov)R$HZQplyh3f{7qi25+>II$5JuU0mN~QYtGcZ<;8uOP$~L4NW0_l3;yMcd@A^b}@M9+v=2k*z{Y}LqskbUyf;25;NufXC1D@qp zsbM=ACEUEqmQPKJJgqvL2(yrxfAyPf_%2JWi~zD3YndEdv>~O8h&jBm>Fv{HL8P!o z;i{KIycS>s)LEOQ{LgU*l)aXNmcBFr-z!C*Wp0z)j}PJ+W0K+D5rZjcLSpW7j>)Yo zK~ZAr^F+^uG_K?f#P$lFuA8k{@sl~phNIu_FV-iu&QyJcO$KpLxjBD*IpFf!{K-&@ z_w$y#U!H6%{qgCqwEl7((^RyH_h9xGwe!qtes9>MqMn88!@PBc)k$}#*$QGr|LRyC zb-J`fmC z_M!Z{Ts+S_dRs#OWFQW5V`Vbj4tmHv{432?fK+hg>GcJURBC-_*i0%}PdrG!oxgmr z-wO42{&Hf@Uiypteb2g-&C+nRvJKuwuI(8Q^4b-$V_x$olT?;c@Yolf8hT!HM3*7L zI9!gu>3sJW)T?ILtJ;j2TX)FWZgSmMbzTlzKzS0WC1Vr3><74h$lB;Q!uXh)6W(gI$t~!O<(@Ga zbTB*wUuuuZnr1LAZb2uoT<1UNycr}tVr6mHUc0@fiy(9)9p;|nDF>IU(K3Hgd*_+I z)~93NMoK1PZH&?R?zOXaTK-lQo%699{^YeRM&%ogGn)f`;ri^eY7;fAi-<4|Ua8jK zqcsax*gpJyc;Q_{wSXL|%~Sfa+)X#Coi6H>tNbgG?H8Vx&|=kd5hJXe=~`U}8kykESHM zB~oU6=-ShZT0BF{P;K}heAtRF(?Rs-OuP6x?akyZ)v~_|&o3_{Ir~-@+oDGfT7p3f z4G>^B&zK!xRivtP7&>y@e!ucBOUB<|MZB*c>k0CX+3wfFs6S}zivH|v-D1ne^iQ~n zvr0?QF+1!;X!)F@kx(b=o(tlKa6*lFi96J5S=MJtlWn3lp@~@yZQ2p0Uvw4gebiC2 zSw~K;_^M}Gwv&#w)da!MQi0%SZR6!FpGEfcmd|;ksg!q=aCU2G@tmG%;wIK+v6t*Aj~4?#=Y2E6(t*!w6uzDJZZAI#Xm)Mh;ull1QU z9%VhqRqqH{vX1O)$X&Y|tbdRsAYlVT>#df6HAo3DGH{Lhl<_&M!>C0SA$FdN{h#&v zj#1t4THhP@y)G={Bzz(}$k%!(@9juq8|i2NXXs@ZU=NWG7~27XAFNXHSAVFt#`q=H z1P9a(E{E_)>YGZ))lA*H2(97}b*Ht0}l=y9z;{Loh9%vhKyaW{5|*M0Ed zucZgr&RuT1U7ES6v^B_#lN?#6Nb3f9W7+*E0np2}I1Ry~o3clzkkOnthyqi}%a-Eb z!>oF#yS|%hj3j;CYpFKpu^wrRH_1=0pL~q7>y+XS>V08d`bp;BCk3sZDx3 zD+72fiv<-j-HRE|%2Zid>XR^lv%YpuCQOu@7sYtvEeg{i6Sfvn$~ z209JYMA1gMgka)L6wVHROPMC4{mE_A;_uZG`2_DEG`4WMi?sr5?u5IXT{CrSoVW^1U)&mH-d4kn?tAjh9>o#Q0U4}AS*{6;ywCRcogJi z-0EJQ`uiB@%_3YQx`$F)!&RlkUtycMi2oRjG3R~zb=|psH){U?UX2G-D+sgv(1oA+ zYx@lSr3ga}@ofoJkLaHIbrgDRov%>{5$7-%p^h|uzbtgE*u(FanVyD;5)rYx=-GSb z5dBaI7ExIb^_I4%_C@>%HdeM+akBR94ecSrkeW_t25hsFTWiSe002O(3^p zwK}QOP5bFZs4^!l-Ym*Tm|6Q7;zWtJcdH%kPSS809y*wt(65$D|E`j;Nrd6Wgtc)>j?tJ@>c);Dbgb79K2`;>IpmaB6F z)0rI-fH6R>mrL&m@rKZEjxiij8_zL@@78aFG5f1M#bLHBtZ76iLu%Xr{W+M7>od7! zAMMMptOet#4rZ=JIPx8ii6Baa}C~)(O$-8ei zf1V4AhIThr57j<0Ff}*J`>o^hHMl2;9QCyW_gQhaT@7mx9)tWM?6n?v;a+|gOAZceYefj)|Ds5V|sU?hvSLyfoa)bU> ze4_6beRXXhVmoh#U#!A~HEXjV~4B? zdQ1n(ji)=HF^&@NkCq|Edr`XJ;tI41Aau?1+*;_O2~?%_ddhSMV?RnkUSL`Ts&K>X z1s*1c0~0|OFI$PzmIF;@DjH+WP%drgz%w6m-u>YRY82R-k^@DL>$gct-1IViV-}t; zfY+mY4gOvlHzN3|fpALTZF=u(8}?`VJUM7Q$8HG--V=1@%%N8ELWE<2sL@8tQMEpf zd<(PtozR~ttUu`?(|QEQQ4up0T4*JnQQqE4_<@=rdsxbMO7U)DW1e6w+D1}={s7;? z`reE=_^yV-aDh+}Y|>Adorod^R+ge8e^$$BOV=Zdsm1032{)K;h9O#yNVISzgciwg z@(vXFt5AR2S@~dHNY%U6AT69G!ynBBlRL<*s@9|U3hv(5sMp1Djx->@yV5gt#q1c8 z7bsZuf{T8gMnAcO%kTMJ2mJBtr9INwC<;8Es5=;82I4`^S#GyU;eLcEC!uU_PWNTko6;elp=1|$M-9=V>t@~#hhrosGb z7EH->J8K^NHXIZvZ(|Q};j$4FN5fS%$C`md?m8V06J4&IW2TvxeDtu$(hAAy#(XJA zyMLK&o!{ikcSrd{y<9vx|1|HVlLXCwerAIFkk#FkOHay5vbN(fY%OBR_~OYECS_Va zu0ms!v59~2g_){&x2mtYy!G>RH0DRaepI#gt6qseUaXs@r8xwvv^P9I^d{l=>D#_D zn4@6)Ce(kZWjr+hLB`GOK?uddR(wDH;T1#Up`^Eo(mYv=du=stDHzp{53A@0ZQFqfyS6g^4@|2{&853nhqEGC;6m*6S} zH_p@F4orMPjuMO2h)gM-3qYWiYK7hE>$LI8Jt#79KS_*8HX z>wP}~YfRA_(%8j5CY9@*)Gj(@K9op|RlZ)-Q}XRm+$`t);(iGk1H5o3*( zVNH4$j@ge&_F9&qgZ~5tVjB6QZDuvPCDzO)Xu%&&XwqwjK}Ia@=A zawgVLVl+jHUc93{qE%8{wU7UjK622ewnKYB!(&dmU6qIAJ$_TN&ueyc9#YQlH5+6c1M=Us1D1Xx$-&>psY=o)`LvXUr*S{p)~oA#=bHw$$tLCH zsNBxLb=b>R=_tOgExBpX2zGe&3$~%yCsS*HanvJNcLo`~UO(cxD}A0m+Q|tZjSI94x`0sgvdpRpJ~G$H^MD=1o+1I7`T0nzzr&E|c0~ z(C_EON|l3AiuU?e5lgJ)c3GDQ>z3z6Gv@b z)-MY!^!_NJO!%`+$nb?0!_vEwAqHjzT^UF7gwBAg-G_4l#=3h5VtNPEA~J}iQ}Bmx zOCGKYZYt-yCWuDIOw|GcOs&6x+fJm2jdO&A*RvU57fC+{2>UxFNmOcmk=%;z!9JvNIx_6`Yfh%+p~H+w>dNE3;3kCL``61mz4(BGq~ zM1vG4j`?FvocQ6*aGzj3K~1QI$zOG58HZK{`O(LD>w?uG@EueUP(eO4Bn67&c9f&o z?vu@diC|#@8WZ;P>=__$aI$+sTmvkh2;FC_&0}=ZkRie} z7o5{0>!6m_2~LS1C4h9dlz%pg-`jXAY%+UrS*z{uptk^TK^CI|^P&g+4z9)w^7Gna zT8l>zk|En)J?YQJf|p=w<8k{^!v-UnqpAKFB#f&~58aoD*nCvjyvgYBy=Bg&;R39$D+1x{6 zRpndAceXz9ZYiPMQln+JE2$qX)SnCu5?-I+yzUY7PclCDWi(=!>LyED`#@ZUBpj2> zLem#p?}n}BzN@*LyJKAVy7jK=*M)15`@qo;%}GK0rXZB*MBZT_wzQ=S*Jc!MlMVb0 zvXSho1}@OIlt01qD>_?)OByxx_CRN@%~WK5ZU1OS+$N``ZT;GB_K~htl_KdtT>D24 z%E<F!OUr z;Qk-dck8f(YDy@^7!t6kv$f5GbdkxHDBST=1DuERPQ8c?Ga@^q!}SHEVpFazrkz`X z5NaoI&0B`^4q=^6+GZ9h!{E(+xn$TJ;at>}kf@V}A%Pk{kh?fes+{L-bWX7BJtdw={L8bJiCLP&yasP?TjOBiADp{btV&-L#Jrxv$)5)F*dh2vq zamckd2!d2ULvq-dJ?R81G%Nw{V&Ri{0%GT_Ra)o&nG}_C|2AU)f1WiT^w#zey1FuJ{~Y&73kbk(^Wx=cfeM6ItW|C!ntH-`JbekNdv`;$KMY2k2lrPPW4#}gKl>kbZT($DEev8Khx5*&8#IZxgvsy+ zesZx})M+9*+`@!7d&)#M(CfpiABh4t;} zIe=>7g7S;Z+-_ohzjvDw>DX80pCiB6`0*G@(w^*5h%M9x`Ei?2W+w*$RmdVseH^_9 zyRmb&R4&hL;DTKDiJ!d$1_oYi@YDpT<&>h?PH+K5V)JoKUGK@}(BB&pRI~>0cG!l` zj6)t+CdiqgW^@nF%+`ZX>fXdO+dyN<;Ql35Wlp^e*=FagbmDPdNWw+pb@cot+~8$b zA|TI*O{^Z0q+|HDt(_5IsbJUyi~?_d7zMb7V!ZMQXD?_U5@$}l`*H!{B|C1)d9!G< zxii|%%5RTg667S1H!pKw3pv(O(<8dlO4x+RZPKdPpyXYOCJ4AZU@3C06}=|g=9HwJ z(*!ZOM-cR@J0hEbGJvzINX*iS%LW1ZKEE@XhXMU0!XqT))+J7E%9dO^ZjXT13?hOZ zjZIw}zH>2{3BnSnWrb1#6=7}+mI>}G2^$F@`w5cUxkn_sk@MS0iSU^dJU0a-$Hk_Z zjls;BcU*jhm2a4oH#_%T(EU*dwE)0nCEpL5*)|XjeuhIpvLHXPTJt?_r+F84o^=fg zY!3#(_m%bDW51pn8RJHEV}4XHzzbs=124*8g413@67DN|8)NyW5)>Y0e&sQ?$sOt& z*(ay1ZB>;zt4TW$$8$24$fjxW_x+GKjub|Td#+(Du-R_riQF8L-HEOI%m90X-@_$Y z#oSVXiP4SQm64TjU#gjITIqx*3|~vV$f7KnZYP~cjDK#9U70+ zwS8C4k1K_*_sXnh3JH*H=`;*PBH9NsJjx}^m#y%R|D!xvA0d(GzWlB8t<7teBO>^Z zx$X-nQvK1nzP&(mk4Zpg?oIU1y>&Wt$>p6F@H*u^`J}%sI)_t(f?Tp*$V1qtg;gPB z<$uvv`u!!(X;*e1o(q8`zWJdU?Z!x#s{FDZBjuR&r1Rkqdw>`Ja#7=v3kc6NGd(Db zkJjBI3K;~GS+*SMT8oZV)pXSXNdot=dS~i(srO|qHGROI7id0^}#F@ z5TDa8)@0?v5bPXmA?)Kl$@q8qKx^HUf3s`iJbaIoaP;z>Lz<@druPWBg5Pr?rrC-u zXG=Nf8@M;NTvD~OvL+4w;5-TfL0^Ddl{2yU*ysdu38sW2da-su#jjuB4>yt$>VI}# zxuit?bYNA6dn3a-V^UvPwz_yH;=hMY^G+ikF>V@!-$|0bcQo_k}^jvg|vY;CJRCx}; zF2|O{^TE4t%XiK7e^{p2;Np%O;sQY{x^_9Y)NpOzQWfJd#||31&(E_Gv@ndiNx|Xv zKJcsqZ0D%oXwa2}rA$(>vbFN*=`OE#cT^dh|Bd-p4cpFKGthdCtCLu3;OM7JD7#vm?m29aJ|XRBn; z3z}%EU%*9*@^qwzKrVQwX#|_MHhg#4PH^JM{~R%U;dKy4)I@n9=od>UG-PD3^#qR% z{3PnlByCnBIRs4siQ;C(FON1}MJ-brUxlWHLlEAFrBwnuLA&*8c3vs_Wzj*)zhBMb z6mMr7YO1t@ks&SjVCP@W{`a1Q3g@25sknDeyDUYb_i)RYa@ZsBbwE!B3Pt;h%s(tA zNU;|xG1~OQ@;YcHpjWpF4-M^oP(b{0k?j0xHpoeW44%pH z4)weKcdI?yF2)~L?%SJ*>?{tkgl9~d>e6mJP<{{gV{q~k&a+a3qw#7s{0k6H^BsOT zX!s|hJR^U!7J7zFk2!H+Rr@Car)yo((h4?gts}d!Rum07&I1$D7kw++)hhpvPl3N+ z#Z&J8y-ZciewjHFl!~RHVPx9hF#%cNg~h(P=jueV2FZUkI{n`h0%{Vffg8d(2Yq%T z>_oUvFz9+Gqp_LA!mOBJ<_Na;xAtrEcIyLp3zMIQm&dFIXrfZi)4!K@-8gCZY~{kM zjk}OZD!RhD#<1jnlHR8lvIM}&HE=z~m8!Ile9dE+??eni5_+aHtOqX0rfY(91Y~ZC zidF3gva|a%W*}!-%Qjl26rF?JJp3Y}^$i=i>a108sKK;SN~lkzr3Rtg8r*t!V#`W| zOayB{0Cpl|OjT!gIHWxburk=(RcvRnr8zeyBi0(pjd#tuMvk5(|A9?Rm2q}s|7zgP zmo2IaJ6j?=1^kNXxLvRs|mXfa7Ffg%wKNVr=4~Ojti2G}U6}5BEk^ ztNyJYFy?R={DoDNJ^vSpi!161|Hl9BmV}T@JP|fj0glyHCou?i>2sXi7Hr`zKN6jI zQK3Sb(3idRvegO1C#gTSKD7Rbv@2jUFlK}5c6?KAm-4h+@;n=xsA zBduhKSxVUK2i%pCb7uI`d^zr(abHiSKdprEvuu66k)%dt}3tz5)@x!nOBR*A~){ImMb=qaDigC z4PQNsJwcRsbT;jUZJ=^=%95_-AW|G#&a&=%B^FbpF@(wAi%stw3eGtskrdF7-p5R; zK{Gb!>q0D4Tmb2G<2TS$Pfj3!UfeDK7uIF1VEFQER2)@V4J>HupB`JLIJnQ~u~%Xf zSmmJl*zrVk-nZ*Z!DiEn*Lxd4b5p$E`o;M*rkZrt)9XgE2R+#KvU1no0;xvUQ^V}7 z@z=F`W-l~I4!DQ+szW+XU~^&iKYF$E0D2*c2Y=b>G9eakDmwQgez`X?b{BEu-g9K8 zV~Zc_zR{c3XwV{5&LCT0kFAuNqm9U6I3`HC5;L61ENuPSEDPkXY;MiH$vg4DW_ms9 z067o?AOkd3x_r>wB=uyNpR3OLMbFAv67A~9E2M9IL)c}DKTr3kL&rbksOP&J^9jC6E_VoN9ow^sbf6NOdEJJ;{ zb_Md$Ys&28RN5{0RM75s$wf&QQULMugDJrLK!O(?D_@cz7%s$x{hD%v5?Yo6*JJ^z z0J*$TV$cld`$zp;)Ua;#!}|A0Lb3)K%$N&C_r+R2r-aR{ks2xDEW>QY28|oCMreyw zt52{Q(-H`>6QCeqXc_0OUD;N3Z?JrS_lYogh+=77D8R=4z|_QzY1W1DS$GbE8m~vECw|l-6f`>Lr|#~@3m@_=V1G>iO>qjEaC;ad7b1TX)2x zifj21kLGW_v*n8ooU7BRvJJ{0k~c!`SX9^`6|BvUgei>;K$bPUvXNhMf0b z2<1?3hCI9{@mm>xS>E*^W>b{cX~+!+gUk^Pjmpm+$5NIa5QW zo%gSlCtv>(({U31;`&n3vGjY~-gV^1<4O@f%&WOi=ZcsWgbR^KE;Gt2pMis=TLSwxzeClA)|tvfzBo?BEacE?Nj`-f`3TW%5pR zCOAN!@yB`EpkzxJfa}wXAW`A}_ax(kINmu)hgz^q&nP5Rj})T#w@KT1SeJGhC`eC- zp>L+&ORwg&M9WzEy+v344-xdV&4T#;y0{ivYCbqGuaC$scCw3X_Eju>{6(IqBW4_j z_D=$2+bK(Y`E)H@QA?ucdpq5E0B!17`72Qi1G3JWIx8iEk{p_+x3Zw>NDRdco!L40 zJ6gpy^UXAK+t$+>yhILM^6bj{U6(EbF)V48uFtha$&GM)!%qXp;hQgKesUS}u`&O& zG%q$n3{pe<@{1(^1dX@MT`E?NjMZG5ne*BgGzyu_aWM&TUL!6%O1 zoXm52Tk%LK>)%tXovchCr$r#iJI8OHX$B5w$yaCs8MGp#+lQ; zZ~P3s_sk%)_TS}zZ3iro4r{W9;tHcWPH8v*VuhX+Un1Vd+qpKgqmZV8VrSA+`fh?T zuy)x?Z$mqaoi_b7laWeAW_E84(bYOKBG;#%>VI%tEJscpMu8*JY?CJ{xz9?+93!~2 zFpEfj?$HG6^`berL>aQh<`((Edr%GQ2FqLnp$y=t4NO%{B)AsaXV6(=`@ayTstzMX ze^5Qff${pIM#+-wE;J|;$27Zk&cZXRr{?cY8^-T6A#?M{FpM+gR$Ed}`n77|-lvf8 zwu)Hpg_aLCrqwg1`zP<9RqWmlux~`++j3&T1xFmi6RSOvAH7dRJHQ8gGssU)w4RkB z{(B;(!f9UK@~b5mN_zRxUJq@QEK7p?Rz2@4k)9Z!yw7C2=>hnu{wMj* zhiju|TeMO|@Op%FY2%SV;?{63-od6yUz`&s!MGm5X&~=GLpV}m=8+K&9?%)0%T1S5 z1E-Xw1^Q0Olx=fmRSQleo2IBkvDy2-yeZ8XMV1 z*U7pV2r2sWr z=qRSmZ;!0~JZ)l;hpS+`rKxybti;`Bq@(r|%&Z8tp+|V9G2SRwEuWXG&uv|WkYBSB zpUY-!yliOmekLZZK$D_SIkbKmYI8a?4EYwd}LxgXyyAa*x?25e6!w zmJ^l|FyNMNM9kg|B)^hVS;X6FuOu>hKg>8RA3A6dG3t`b^S4SX_`>g$(xt(^!tEb0KkJ#l`GJ0rD3|)vd|7U}% z{KG}y$_|OxeiX5Mjt=d6HpTT}C1oU4hbjqbXTz3S*S?)yYhjpSA2VV(rmUpYBuc2N zN&RfzWFBiXO(JLnGUb_hg~=2~GC5gmU19o39|N#NRY}V!F_$T^X4oP9_@UI#vOdKb zec8~2U0Zg2_vPb~VWC85%R;s8g}N1|SD;#VL6OBdAYm80Ov^gks;XisQ*@Q>@FVmA z9RhY3P1V^i($==z&GIBlD3pap0`pS-f>z>Y$~P~*268(si7=`}&hThkJ~hUZ z5Er~P-SgQ<`MVNba0DdbSSM4^INS2>87lE~ms=UIU_2W@XAtkZt^cVn>k-TpV-st0 zRxaRK&0d2Dv%2-v5?0+h(wLVw@YR?;QPfZ+xnhU%xGCrfLiSsSxsjb(?@Z9G$yEg% z;MV9M&KyPikSbZ^UkI(kzZrD&F(6A74E0I-D)ZM?IjmAdVe$H55L0?zd)DoQDX~OT z|K^4Sjp={M6;+7OcTIM3Kpg)tYfOtuCU;_TXh^mp$%(a@v)Lee4g&&smV@ACd_ZpoCtG!k|l*f-CFyttvr@}M~?xud9PU~LJ#volHUe=yj3OR z5k+tt3wUR9zEYZ0E#{I0Fr7B&eSv-Q*?8AM+x0o;}_>(T509}H~v_W8$f2~F6L{Spm6p9YoOzcUHN zSlC$fe_99%KAQ@Y3al8SGCEx2$GHcB=Kw8X`v2N6)(DIMN`SU7RWjEE2E;v` zlv!{I8*5o@C3+^QS#{2f4I+guTHv$`2LC6?(PwM?;asHnt9g6?f6tFV_CAJlt5hY+ z5CA3Fhkv_i;X1Kh*`ph>D?9q4+gk@>`==1mA#;%pOJnuFaEnkd1NA1RU`zfnMzIQI_+k zrijC8eQL~5w^rXnn(&~zuc)u^aC`W8Zb2?fSzWo%)Wt+MHYLh>{>&70ShG))*-r&B zZ~LI}o`N1$xqA8fpYz9)G&Xcs_Dsnz7paSQ1$%|@%`+RCD+*J3%)8XP_!9e)aos{) z_J;GC&%E?h_OM5vM_AC1{ZKR1Ps6XI-KtG(MP^Esne6bLwE@SQJii%icJyl%A31%| zZPOr8#Zn96btfusxRbg*KCj_%zs{asP`!{=K(FF&{(EZbg+Y5jt;<)Z(L|mNHFI3$ zoSDwb-l-$Zn{FMx2i*=b;SPB$-WlFN^T26dL7g)l>XnItH|o|luGPco8eWyCfX3~$ zw|#BgY?v@A44>nWBPzXL`tI!gqXy9JZkD?C(k#QXhJ=KB16O89#dvW51L57|GaHbVV^bQ;N(T#e*r_m1QP`QVqV@Epy5eu=`ic!qKVkA) z>7Ot5UE~eB2pXq`tpsI(D`o5Udqjuw4}~nLQ`Lh_tP6ALpU?N5XMUo7!fV)T7{1i( z^A^YDF0~J*Bzd6VAj~{^9j=;46fyjfp@de}(J*=T~3TGhL% z0yj}xe%t$Kje~{j_YM4=uI&i!95$l9vlqrtsI=i{)QFbqF7-r>6|?txalI)?r#6U3 zlD5_=c+uWe{u@j{p89ZFG7jt8Px;VkAAh50zQ=xUeDutQ>wH+B5WjGLln~;I(;K=y z@JmtWRM8d3;u-sC$WYdRL!*9eldpoC0&~TF;eGV~_la^Cn8ES^zs5banZB-WuFMsO z1$Lt4nq{LxZHaG$TLjabYK~8INEEH*ue}#*h)a|#6;B!6H$dpxO21Ecuo=%N$jD`g z&F>YRGb$J_>3DV+o)3FpRoEwj6@pBymXp6;v{XBMweKqP2K5HMGT*##{m~M0_-5Zt z=055^e8BzZ_si@{Ax2pS4&fJq8N(%1J;Q~7{O1MiQvLmbs04hSeI1HO*UJPotjBNeC32;qyP_Xc!Edd_q^ zbc-s^nL$?$OnHm@QU6`!{%1Oi!eig-75WdJ z?6i)ziySB&fOU4j;+;D?T;hG^mE9QCZR$TZ9oUbi%$SYTM!Y6fmWgtsS2rnv5L<|g z(ugjZv6@yJDjd)sY1}iW(W$qxeQGDupX!hAbWrQIc_2I3eBkuKzNkaz4i+m}E1otg zGC+kN4}LJ5NtF?06lSnzCbYW zFs#Y14xV}FQmSi|YG4z7E;u*-p;KwyS&KXnFE#Uv4vQlB`||IgXP`wsw&*j@9yDJK z!R!kLmP6`eQE@>r3#tw+^l?G!K1*qKbMMSRwXlkuMr+kTn)aRg`pkv_^ zV)A3&&z+kaydbn`BhRgAO_dJLMfc@IZO|`I1&F_@PFb`>o~hY*r!=DecQto;d8M1` z1DjDeYQGBeX&2hB!e`39Qg=|oSm7)E*s@Gh`-NIRFE_82|CcGuir11%rwWEKeHdn!L;9Oi?JHWBJ;&6} zDHoeso0trm+g*mCFZB$cE(o~RwZqm#EB0R0tw$p}%TJxn9eOO6KdSP0QCjn~!r4Ua z73EriZ6X~`H%Bf!DTrr_)x;06b87|5Y~@qRi1t(}zHrIOg8H?v-fwqbCjON}Qr3p& zuHeyMp&@;B?&1)0>QJ?y;AS~0qV4&d70$q~QmLS|hhrLWrfa-K=rVn=-#6B6N_ z{X+K;;ZW^=tRtVT2a}v9l&O7qj6FskU5Rmki*oaG^_t@@S(P?l?NW7MU9FFp$RG75 zYZy{vOFlL?YcLHIttVT>6?THet6dmtmU+FYR3G8h z+W7C|13jiYl>676-txca&iEy{5k9T;Y}fqq$MY3yY2|0GhhCnE_3eE0yUXN=sF35( z&DET|hpR{jy-R9Ou;hjzuWk#X1#0nfl>hvWD60sW@B21tx!+SZ`yLzmrs+;E#Q3M^ z)_%rJGGPBzTJuTtzuk!KsN;CFdoDHJh-nLS_xoM8tvcY51~Wua^0~Fe*qxGoX6f-T zaJa>X@Wl3eFLhQ~W?vHakg1_T69Xp;3Ku&n_UR7v$M3VruekUO32Cq4eYoxGsx*>d z@q&;rhI?amdu8r1S&GD2UlY>rCyW)Rt!!VqZTwhaz$tOr<)c3(*82QH#P^{hhjz{7 zb??sF;GV^`pW;>5J6V??9C-2zC28@~fY;JCClW(P0TC?bgTLHp&oTYe8 zP(YJ0oC!%zXg6L84On+hlSepJsw~1Ic6SPfif<{=QsW&m+ze!D5wyqM3C9&5mmVV? z$SK*^JsrZvTx_O24jZ~l^1wY)MArp-?`c>pVat7wm~PA*tov-lF;X*$OneB@=3hn2sOdoEIv(GSL zMW>i#hSkmNsLGgI=!#8kOAj-P%8XA7>s(2TuMLc#J*%#l83+j9W?&h9$^b#hB;Lnm zknTO%JZ)m&G#6+C%A*a)lAy%xWIh>Wohs&^@_BXx@$>x+-r}jE3-1I~)+DPn_D95< zQ$lln(w+D$>+t)VxaFU*PX<38#@^XfS>o)1XNiHUs2>q&Wb^FZh>5}9f6aXcO`52n zOChLm*bEn|7xh>$vd0YKrA*gdIV|Zi25cHN2HfWpCli@6L^Zq(=@-1JwM&oEn?B|0 z>t|3&517&jyGp?-oa~4o{L<>>kxsAsY=ijrlX4Rg{p#a6`hRC0UqnSb$o(0i&I>)T zdpreUp9o&;7n5@~M|k(FT?{*Aj-8f#SW)Fv*!#1|``@27ULkGjuKWf&9v(#eX*^@* zq|pvVQo~>Blj_{JI#qcs2d%%T`cxVc|MS*Ue{cHuOI3|OWm;nl?Qg&MoI)+eH`r(4 z9kwc`z3vr!p#ijz6s#BlRx$iyvwiq^_0XS6Z1G*Ju#{GspS+}2G|yf4xh_=Gm`L1_ zNbZWPDE>>j>Y?@lf@71&O;JnTOI}Mm))j3%Sz*w=QqFB4PQ|$bF-(0|M;)`?1_Tpd59HV$15FW*QllG-zYVOWR_CV_!bB8_;le8 zyj9;Pyz70FcV`PhXq@gYD041VH!5iknBOLWNCoTcN3rLje;42V9Da5rk?X7JrpfH1 zhT}&Z%*Nvj-msldITw^&!Ml8lQ}>30X7}Wt-7taTerr;G8!Pn!OptGOESnZ6i&u}n zqOv=OF>_W=*>T9zNKp~0_-gWcbGqg2^R05bNSxzB>6eHMS9rt20aO<*b zDD`{kZv>-%=Unf&aS;x}>`^!Ju;a;~#rwO`-|+YT0W<1O?9O!arkRnS#?AZ1>tl9>LPC?A=#YK})9&v$c15Sn7JyA7on;)VX`lWFti;WK}mPnze%S`1iqp0O!6 zj8}lzC01Lj@ebJhAG+QIn$7h68!u|9wYDls)f$v;LQ(rp5fRkhRuLhzv5lyumMW^X ztJo52>@7lLo$i(*G$?|Z77dDNZBvT(j_>dL`~S~*&wI|CIde?N^E~(cT-WtkuIsiL zDtNVh*~s?>M2+#U%SMsM=6&Ak8vW?ZKN0xhdM#P7^z9lf%m93jb#QclB;b8P{mK=H z+Vptj>HcTviP!nCx8Ye)B8g4D)0n;ow18En;LpVh;29p+3PhC{uLgwXngzGJk7FDR z`QV8<>^<}9I_%DaG?BzY6qbvSICXf+Ak{ckH0TBRpEqBu-6BxFd=3t}!0mm$b?IY* zbSiWmwtZXMa)GgWa*v#tX2T;4xO{ zi1!BBHwJ&gepR%;cf*||daIhJz_tIj+%rtNcrPC{&^NI*#W^F&xHEWd3)hk z&23gYpTNwlLluZwZoWhSbclJmH-m^z-8_lw@M-%!0|090)y!ruBlD4({@&#Jva68i zZvJANDs53$z%5R+9yg(?a%zrkI?BHMt^Al%Khf#4uKRH%lA%*9j4V8rNl4Kp(-fp& zIl^HHVBn1>AyNtg-cp2Z7d44l`TI+u1YAAk6F;#6)f(sFa?5NgkKp9c%#%&TSx}~N z%i;KNr_Wv2BZ={q=S3}@Zw<%^FOyzxzn_JfgE>ASz>O`|7$%6fi0+U$_=UWjO&GaC za8?fB%I8sWxwWI5O2~;W+27Z7GRP2a?J_2)fYA?A^*^@tCtbWWDWI03{1R^M@dVS6 zH?1h%){}D-VRCKyr|byj{GFWk#dw;fdtd#R;)tBJe1fafWcy&7(z*0uxAg31!)^kK zCaO79iaD-GjF;hvd;2iO0B%->Vg{bZFAG%IbG$^7vv-=ofn`R2`sdi5YWR zvN?;r;s2c<5}hLf4jQq9(EfDehgY+ydskR2h}{^x3O9$ok)6<&Q7iX(6 zz}Z6Cl}U6#c4g6mmlq=F5oxmmsA`oa;msPfvxoR@K$%LW5XwvSdOy-D$|v(w_2O-K zd74Txq>nW6N25Wq<0q@Q*%3Ha1ayzJ`6lo#Ube{KZGBQIJ7HiYEsC}63Q2^k87gJB z_cz>VH<)RWZ8y?sN!(1p`dMuHbTTmdDFvk-{T^bTC!xz9ZM_~(bBWZY*T;`9*`Rb< zJT`eY(;&O2<&QO>vY8YAy3q$PC(?8L$b4}NJ-U62<&o-?qMuecP z!c+bKjyHsZO3yaNVaF`Ca4KTXU~VaTBa$9D!bjn2k2%a3iJ|833jJ&M!4a}q79GsW zd5E;SeNv5Xwi0|X`&`}$lW6KE{@#6}!VNtGy(R39FWqY$XzVAQBh#XTpF%VYeho&j(l@qw!hXw=ryVwU={CW$?yy%p z>g$R4Qt^ODMK<9)t$bP52_7}elQV^nyhd!nD!w_BGkNoaIeg%DQvmkF+60HJ!nd61^mMx+H+esAP4Ou3@lW)7Fq1(e zIbsvGn%N;AoI&$Y&#Nc1vQC~*as9N9 z5osE-cQjh7ht84R`e&pIE_w*2nPIF0YBvP%vG2Jqd)zhp{##O(te`fVMadEmu!`oy zS~g5ROnB?Fm}xG7n{1KI!a|$*v02g>yU}4(+XDvm(BdA*uIQ?o#6Wg^eG!8MU#OW1 zJ{LFSNU6o3)$fjV8aNHUR9{|z(xGGbC9pA&n?D#XS5G59{ z$myUiUKsmUJ~yBzj{`0eLp6sw#m-}^hi73yq!pH}k@i)tt*n*d_SK$O4Uy)_`}KLU zaLbs2GQ{Y4^5hY1mT}Pf&DdhkVdI#htIT|QVWGw`v71BU96Z#^Tn6XR&bN^1i%}QV zj9q`hkbn@bTrdi@%M@?;VX7~q{yFM{8ASn=$5zpoMoT}bHx8)nn{`_PvVfvJvzfSf zOIpn?P(aOMWdVa>GI?7wP#nN>i1u69?rL^J7)=%$8`hzIaJwcbwRo`{K2|t4y(z!la%=4mlM5=m0a{8=G22C=pEpIir zaqMv>XxWXTM5C<$9861RSqOL@9>d$bbM}RwqQ27ox0THteGCsgp$wPg_51LWco&Ca z$aSmq`6soDC+Ovi+d?6hWhD=7Y8OR^3Vc6$XVOH|qI2c$jk_slYAc8H?%K=zW_3rD zLGw+w$wnisL3!`s$T4PK2O5Zjl4j3(HED7=wU&|LPgG1iO zz~GC_$YZ5%btCGz9dc`#9qdXR2sH%(2Q>y`)Nk>W_=4}nP3(A0`KAE*P1w)V3v5ZaL@vl%tI0Ym4YTEkN zw3m$lw`0fyRY}9Y2M0e;?_|yR$?BiL^&As|T`+*yt!CmW@=@>Ey^)IEhWsGKW_R_q z)}86~lk6O<+Zo(#;pPlzRsK^-XsS*-ZSX|S!@wshdF9Xg-k>!+Sit*2A7)VMAiF--Slxl1C{z&gy16hQbR<1`bUjiCmyM;DzQz ziec?l`7JXexhylR60v<-4*}I}B#OzWK*=kVP_nr5iC>48oMJ=1={avJ)5~9DOw8Xc zSf&@+m&`hje|99^Un^1+`drgykEb|BwhKSJ+$x{FIrXi(h}oodO7~PE%@NHyjYqfJ z&hVlqy6C*`rwJ;@Iln)*eH#b+!i&y;A(OTQ9$uaYh>2I*-;D5GqP1~ee`tN9nWk|% zY;?dTYKqzWJ9RWsT6=3;Wz(PnyctGxOs`6?d+1(|sgD`{5y2H28 z_M!3$FX#6c^-vDzwAZi?&S-dT#6gP+ZxG(hqzzESBfnprJB4cdP^{Gn!pnzQ!|MqG zW2z@OS4YIvBL!x83jA$4A7xUk-13&2~9h6KS2N(y8_}Pw{+!&KG#NxajufQFsJ)J`-Ac4 zLX)*+iu2pc7GHFcC9}St`BvMMW!H~=m7r|MLGJ3?auMFLV1vXtC7w6ipYFeU^IPF{ z2u9yb2(lO3m6XjwX4%c&l=>>sQbo82`wPE)2@*ol&EPc>We=5%muBC}J&_#+b1H-l z8ECVgdC2RZAVbNBZ@u=^&}?k&bjSjJaL<8`qlMCU4YW&Xv4w@<99pvd51ULhVNaf1 zNFux`m7(yD*wKmf(;*)l(mTJN&->aM5)b=wFA`UDyyDEn43xU^GRkolT;RkW9M+B% z#U2KxLn-o?Z{Wt=;wC~dKK;JZbbasZ#qoeAkAi4eeN`>F3cJ) zU$we?k;(EZI_TnYd@S~a;W-kQ5rB|aDESFWvsMQhtX<6%=OXc8gKsSw2fX{LyDYm# zu0JE_o#Xwi;Gf7=33gUh%D4M5{yc`sB6WGPkPw66w}i)BVc+`_q(#2F$Z&dlQq(!f zTt)0j_HteQ#(LYTuj53!MaY$qX8I}msgZh0ed&Fe z?g*NKF8vLQ1~!^ldKf)yM1mqws!h-~2{#B&<}_qANyHnLg46lz_=%5*5Cj6jtt79+ zD=d-|Yx&61P|hUWC_L5Dpu)Iwmtoz#AV1><`# zH>oh{PQTHDi7=kC6eI&XIbtR@0v!K>5Un|1!|cEhXu1@T2aNd)`BG|(#!UDO_>v_b zN}keT){#z0`eFjbihFX9X03951SF}X*~FnytfxYA0P{fHOEtMmimgNd!a?W5v^Vj&&jyMx7-QM@|) z2&rwGohuYSGB{+891J!&&S21Zkg!-4lrb%G>B zigQW!i1j$x#nA=9p1@jcV*X_HQ0Fv!+7qy`b3DXx?ToSF_je*2JzYGSn(M-JVLN{! ziS9smuoEYy(LvQUvO-xY)xc{QqgmFFu4P^)<+i(ieMPe*=MBnbz*P&ZP;-?9fYX4eyo4#UV5pSfCFg0cTY0myj53-Wm+7uIUCC$?iF#x&d@`}OQ>2R;tm=UM$ft^ zxACU*ngG(WLSL~I0db)6EXyzRhKg))y!>k_Ir*bXJ zE%R)h+Iq12XxA{xWFH@0dH{7#SnPdQA(&=5tKp(T_%0dwE`{Op0^zI1JvRTpUTF zB$fWn4DJ+UMHo8}^Fgd%AzVD$v*8#*e+|4dWNkc1(0C<3bq@z37FVB?g#Wii zfA)$*BO78moNT+ktPjYe3?`@OaywQ!QwgS#plp==S)h)2%xRDf#zKAwlOex{d6oRG zLU@3qDs9Q(+$UghD7K?u#;6LiGwPDAmQ)(f^+&NsX^bvzMY>DB(M97P+biV#Z94lViZ1T(ut1zMjoCUvJ z!I4b}%cn?_T)8zhFBDZ|H#Dnn253Q3cc*>19>G7mE`JK9Y+zK*S^BM)$M6QR0$w{E z6d*`s3zA#SbW?G&8X53s*R^rFFg@o*tE3B9TXB)QEbm2m5+EoZHNxeJEi+74T#9e41hIncaUEi>mWaNa(rQ3l z5^8N%AO1JylNfk@2xJXXOwC$N=PxZ=jb-MF>unxzu%ib#UJ74%>*MZy1#QA?8YO8 z^*F7Q)pUcv%2hX<2;SIJhFm78%z>lQWqq*s(gn-cktCWJa#h-uZv_v`OL&>o05o81 z3)@b+oOfYX;g8~pQgPu_5mt%MP0lqMFj2+}m*!9`N0g8`NN9^o3!96K3s=1`U>TCf zjaE$N^yeN)!;FOzOG|?YK_&piCwC`xi|ilUm)ZreW>au8i_QS%Y{+<|OpDzn*Jdi+ ziS9HakIX_|X>r~Z-z-3KwU}hHdMCHC(L`L+(*VK1ecfH%(%YJhLOlK=~R&LwL#ypxlEdI&?77b@2PX}j_wapuf zH5+w}lZ%`{u&=9}IEjKxaG=gl+_A++3I^+#t4fI^cu+VlterUSp(Y|rcH14(GweCu zRUUT1=z@Qz6W*3;C6?X#p+UjaP-ek&^#oPayNfFK3ou>p4m&gEN1?Bg$nTOJj%V1T zaAZaTE~;4h3DVxFqzC`yMS=iHd-pjhD19d1_?a2aU(Ak}9ZYu#QkyeHDjh zz#6)VA0e6Tnn|W*e6`I(29(%cB`N>5NYV-By4m`kYPeuKEi(W`ur>x_e z^zbnY2l1dH2CK1sPp*5IR!>>o`#8fiqZlrNxLe{rEfmMO-n?|4S$NXdsvCj`DN)J0 z4ZF7mXI3iX?>F4}-dwvGN!UYdL=!tvjU^e3! zv%j!KV5^xtiK6dl&Kwrj@>9)M#f+H7xDB7KH_I#vQkrWfnXxv|k|YkuW8ex&4Q9-_V_2?9iV<5s5tW=J|@MTJ7*VU^*9F+U*46zS^BkXP zkF8@%OyvG@C5(eb;FBj}fWFW|eVh}4Xv`@bO5|OI)9(8_6(c+vn5#?Oh+&>)O6JsB{IC75*ewdKM?NS&zzs2#GhtXP0L#fBi?Yjf`Ld4e75}w9 zf-EJ$gj0UXH@HGP+ZOzd_l(bLx>&OD_wVhXldO#_?4$^e88UMgqBa9MCIoXW`Ujk4Z#2~_k00c=!^ zOe&vSIFQ;u7hXKC?k^b~-%1b2VD#?b#XPX!2{_C1)AV4XMPLVw z7ny{eJh4jU==iJ~?%ZK!4m>3)!J}mus0DNZm2u=_oM)D8vnpGk72){aiZd7$=@_&I z&wL$uC3zn4X_{qqY`mFIt0v+qo5aL5V3hEW(PJrc7!0PYYZdP^6-_jCAKS0~aS*54 z?;fY>C#h3qdCVF&un*Y~uG~Zq` zoW1{mDZ5kq`2*RWw`=_74LvB{STwLPu~5-_e}X%A}?K3LG5>}$_zgU0lXNK zFxbQfrIx+kN1WK@#!h?#lonB7))Ep6qvQ@GQSOrYVeM0C4}r=X%U}&k7SxZ}t1`?7 zycgyJ0XQh}f*1vmDJ8xvAEd9wv>E>5os13<2jy@5KRp$NXG=f-Ojx^CKCDaV;GKjk zaR}!sGv~lNMq%Iq!B}GwOb&h#q!AWtOmwC+57C{;93IpVeH@52rj2Y48#8m{ zpe2Jbz88|+O7lS_6r<&hTl8DjlQNXDMNWir?TtEEI^i-!{yS)sJb!MT1*0u-GRP$CJ9|AJnI{zB>cYv#p30``# zbw1V5WFf`i9kt;q!tE0XumqeOVHCG~8I~U~?a^=O4SlUc(W!|50)N+AgL{|-!cUYF zQ%ySBjGh7u9lOtgHSfB{t)t{5Sfl8~Rg;6>DJ2o6YMj|?ve463?nGehB@#@7jzdRB z(cDnSL3x-U`8dQt^%!dtx|YlE7TJJ;576%6d-$-I2i#A6;Au5Cna8oF#6`fjV*Ds~ z$c!W1WxL}Td@4i0?}rc8gH40MpBec(mP=9{#R=63m>%!~KYOBYW(?TKQm^k`A6lLo z)IN2-;15a|3176NMos9oyIgYH;nC&|@oty1@6)hL8~_s?cd}L3^t%@FcY;c?9@sxc z^HZDUBVouri&`=ZD9EZ~^VSiM1Es<1YTsC3v9O?&{yVcxT{#n|7xD~RqK|AZ_IJpi zGm%qtU3&K?^_U$a>v;hw%kRON$G~b|q1l#PTISo*^XlThD){Ir4u~=$P^S{1Os*sI zVOm~+et-IaEIC+gJ^Yctbmn2~(13faD$?a30iY^%O3U)(X&qBw|HZ}>GF&I4dq6>U zGP3BJ$7byUo65m%7Q@ zQ@7uGbE~~VVLkOdiHpW`WimI!NL3IguOR^(t%5iOaCWs++esIhwo@(&ZIX;D*&H;{ z#+l+Dxe2Az%(PK>$T3ouit9zE4%*Vda|V$tS(QC(q2o;13)vAO zI={oYnX((e)1@@QhPAf(5=sQVX<`wrfKq@-hLySrWS8^L#$`G*%TVotr2LuQ$}2j00N3WHeJCGUexd%*khL5z4Jo-!8}z+;p(FK?8!(9KwTxsxewFUoZL zyggrRc=FCS5EmWjHFN+lLyA^6+FNaj$6@kFXBHv_!9 z-_73ZnEZ<8CSOP5rmVjmiahIx5Bb3CAFj|>Z{M*+!EXKH0UK1jZd%;boscaa7W#}6 z2q=62W>NAmo(9>UJEBF8g!f7D)})en0H^pipVB?)o+H3mC(W*zArdmgwY(=wu`UIG z&!kPi?NK04`_DEphgc=><%2lOHZ~(D$dXS4BF7!LIEn5jEjQiQu;y`#{e$t47ry^& zfQ_)g)jsi4w2Rm7wr`b&lx3Z}E3qEc8b4LNSO7Cty8mkW_FC)B*`AJ0 zd$;%ng#~{lv!7NUGibq!o!`JPy8f9=S3_V1YgteizrcmTJpTL3hWJ=4^RIfJla@Iv zY+LCoC!(Y#0NkGtUzV8=0k0f*#7@VQq}p}pPiTQ5LVygM@jANQ|IjaM9POC!&wt#5 z{g%M#fucIxFg#@~ZVi5cl@M2I7@(8*I1?{a@^f|%;2fuCBV6L|41Oe{xvH5+=L5cy z;@WF{_=riiyE?~8%ioWQ-6e*!QW9IgiZXjWKQ#?9{{Pz)Y4bbwpWYo=(D=LmDD zpJ@k7MNWfU6i(8!PCF zVVRO^6Q7c46Tx7B0qG_2IKmJiprqI?-tLM>A*)o76J5aW`B=uVM2*7y?DFv|Ztsa) z+3@#^>cWh50}3Np4{zsUZ_+h_x${^;Yp=J#^Z?tc&DklHHuionO-PO%gl>?wN+X>= z?XY>xNv6dc?w~>-`?G)P%r=_rlfW9R18dXBzQN9~ebcXmzMbju4LR_Q7?`G=8^s~{ zN)4yo?O<0P&R$jm%r6^Qs>=Fw%{jfWU;XkG5TiG#D10*ad@An8H~gp_hRK0 zJ0WR7^1+w0&zHb}`>ihyyzNCfX<-H(%F|7=_L?{7o#fZ$ufGinpA*hfwoy`bikmOo z-K;t84i_$Kld=qOIbiQn+2N(mR?*gL!ecWRv7hGkgl}>B^C9 z=lMYk0-t*_YlkdA1tzuDF7h(I5PX zW(T-8$hpreZO64iYPb7|U9w%i+vj$YBxC@Ngx+F7Ld!`JIg5C(^v8TnN2h zTI~kk7F6{CWqStewt0ND7^aOJ5NyBj5F`QFPru451ugHxo!-M9y2%SgjOJPif!EER zVqfZW-S>(_*SU%7t`Wi8v5QkIQWI`#essUBpWIGb!>0lFcVGVW-u1GRh#L(Yh~J_G zO#(10vLme4_xrVd=4?d`*3!48CI3rw?8`7@g!g+4X0e&lTzcwzj0)X5A!ewW35w!> ztfPVEW_9`e>l_Dks~R6u7{iV2Ox*f;oH|;?dC+#>#UO~7*UCuZ)K^vRI zJqS{+$Ypf4X7MiarRiBF6?n=2xJ}@J!a^CThI;-70A8pWo@#N0?&zC2Y@D7~Yu`Du zSxAp)m?_r4o~$|OtOs^v03rz{!|WT;w+0y;W}}>wq)O-lQxV#)s}O9Z2~Lz8mI-UH zDZN=rm!r##3<*9-Vz85zl$@w{bje5Xey-ghaT-@nR%$$RBYl|}tf~JR zzsrgwQ+pQ)(7SOMAcJ5M2?7{70zi01;R88wkawMR>Ia&_3^#6j6?A1?=FmDdk`OsI z5LF)^zt)V4XQ-4$<_-T*IaZa7#ug;wBvEKv(X$UxePa(%weAwc3^y-EEv}=wb5s{? z2CUrlTb~L(5Z{1t4Xy@Lf>ArysPI)660c7uQZ-8`V#Fx4lEgDRKlUv#yQN>b5}Awyr+X$OiXy%5Ea=XTgP8Ht;&$5%ALA%a&H z+gCaw_Knugg1pm+`G|FJ5=oDA@ZD1{d@x1d6$EZMTdpf0ly$wIJb-qvD>0jRd?N7x z2Mnl0W>>yzHu?`gfO|}AoF^8zg%dxlw0^`IR?XWORe82`yt)G3z}eW@lcdC{l&MQt z?KIwsmQQrX54qdfg2bSJ%>E__Tm%@PG-3cR?{+Wf5iKsAAJ^mDSvQpyFW(!* z6m?F6A4lKG+!K!n)@OHgM=|%2r8Vta#ock65x`!8gAC%b|Ej<6Y{0C2l{NU6g$g91 z>zWyZ-&5ep6u&NZUL#?C)_g?s4615mE&)hbAP`ru&6HJ}LJ2O_?V}GQ^CFp1@)KvU z4h`UdcQ;pt(8K6PL)O!@7_BhiVYgpWnR$#dB6Uo2y>&NFJy#r;m^dS>zmJn%?#8RDA zk40Cy>)3Bz23_iA+Y$bAmajc&t_}B8Kl^s^#=7?xLb}`O{y*lheF^Hl=!DkJpih~s zMcLY{fHLGM%GG8m%FyNlWev+v!CAVhsM5}Z;`3n1R!jyxYEI;ARM*EW@Ut`O5P}C* zmD^;#l#=W5>a(_;^M4KNvjO#8B$8p!W~=gtR!SrWfP&euGuIP$i9Vja)s++M%QDMc zTf$rMyUDxk?lT9bTT&@erBQjoAYYR6e!OSEMU4zVNrh#Z4^15CVy{d{F+WzDeP|8_?nxh>LNE!w4a6qan$K*w`Cjb{`n z1L7O{+>;4K-0xKY>9r!qtP2?elBKy zukL4e%Ed6cE>-oa0U-`oAP@a-S1nsFk1S6%R|W{%(rKAi3S=0rRixKXt1IJW1}0rx zQG-)V&XTX48q#IP7HZWd_gMnOMTU-dozkUlx;|?V^!Nq3lu-uR5^PPp$dwYc{w|Pv zby1l`$BXhhj*(xqON+Co*K5$`|fZre(M;x3~P$8n-_vZ zsnc}$6}a*G1>O7gx)QOw4Py#87$Dv$(&TpxgpJObW<%#qGl5@`*x^{&oIEbnGX$E= z89(^1?H>OxPX1a z?ESlRpRq+6AOBNZOw~{BSr$DGzQvj%KjMRIrh`!sBf0qL&UbW;N4JNE@nHA@C2+2& zd;0J#pO#ekNiAYn5@V@Zjea$M&*C3F33#W;X|6wvEE*8Gvm3FNzLU|eY*^~K<7`EzG2xe63e1-ZWFs@AKfKzW6ZKp2!)Kcd9GDK2Oj zy2D%j#%<+F{(Nrr3;Q@t&YrL>>P@0__Jjd;4WVPi{Uu$OOP88l=c7j&8qqfuq|Cvv1HTJu_LYR_;hSJpQ@2@5~*pMDZV+D z1az(`$@9NIZ+|Wd=ZF9J5Rf2H9x2(3+sW*=`$YwK*?U8`?n?OL*v|XXEP5XuD0o8SNzyLIh z89gX!osEaxtx{R3)Q)c>J;(jB_~rUcSs(jbGuSpAr_**too~>>b)hw*6;PysZCU-c zSDYR&5|gk+vkwk*mT7#V-On5tM|{%{tQzcSOVymJ(2NsXZHhp0gHaRQ*!y`BE5)%O zBY^VDYj_V_-Mn7x>l#gt(zm(aZX)w(V9DnOirjz8oCP~`#vptpuX$BN6F_UCV#ih(Kln2` z6v+_}WFzuyi*3ujy&7f?n8CB-8dvZ?lHy(>)HS7fwc_vu-KU`GEJJ1-bPQ>(L!2;Xp>pi+&XT_R z@-S2j7fIkYREC(S3Uf+~`TByQ=!wCHki5_{TB=(7*KYi4{Fpc6iQUgB2?dEfZ3C@y z;hBtUTPmf=je@S7@>)4;rb_3WG7<2#z|ps-7UeU33+$2D zMgjY8;n^Q$Vi_^yrUa5tgSetqpt4^r4Gh;Hua>W3w9U2W!!pDASEWInZw>gLq@w{E zdh{;gVBZvNRdoN zD`IHo%Jt>*6N&$sh=Fmpa9@C%zgaL%H|>ow-ZfwI8vTGNN!QJ=k^$y$*|cnN6EV3w z8_PU#YcUm#hiZ<2XZ#9jzWUmd@XzzhBDk@f@hCC5o7sSk(tYVaR=&G0SY3(*pvg;wS}u8U{N}Zv`(e- z_WwtPcF*dtX;%%84?(>I<7TeB87z`>&*?C2mk%$Zu6eDl17&YJ9BxLoDYwBCS-cuq z#ASl@+7}rW#Mov6H7kV*VE^bR%y7C#Ze-$Sikm;&l^j+ch6&2doS&8MlH1YKOM`~9 zgB4w~fg6D30r1uW=ujCceZmSk*&PKTZJ@zZnJi)sR4{WFskU@R3iNBF>5c-{ygVM0 zWS%tNWMQA1U%=Qr1*R@4Z4X;a167vB9TtBwHqR*?#m=e!^7AnAt#Z(%n>jjfnt4>D zN=WEdE~;H z3`2gXZgrD@gD#5lShw`eIybJ-0Ze1MM~1)k(F~SQvW7W&VJc%b+e%ihuge5$wHEWg zBUb)9UIlC0pj=(+#_1PJ(;w9*pFEl~Q-$%e_&TpE6Q!zAtY)yrHEK+@D8EitEU(6V zGXJ#TlkU?$C_R`_a5O8VML+PIAAu%4dYQaXzJO6Subp?y8t<)_tIu+^WmE%8?Buf+ z01989l4{G?OrYF4DQCvCWv!)mWFZV2WUI?*GyfSRu&{Ox_~>IdW8J*rV}~0dbNB2f_|AOjA@6up zp9uUUbVhSDPWx`vU&SZ9eaNtZ46c41ft_Ba3ZI_yFIuQ-uUZOEtU0Gg=HOgMhS#@r z);12l?)}kO(jEBcy)z#WtKN>*B$qlTDykV(J9dk;cFcRszIGVvP=BtL-~vcN(u8vm zG4Z)eHOYr$=Rc5wSow3AIG#M_T+dZo>!RTpPLixEMs?lj8k@bnWtV!pt9Jb9nC+_0 z_#W!)b2cK+9Ui#&N3qgVZ^UZUA49LBudc|D`0MylGR|dVx;{~L>JOnd=xhF+Q^y?( zrxfaJsk+|Q@Pd!HI`u@THCoHReTsYhJZbnwN%f%5yV}89_4a$YIi;;xB>PpTaaGbx zoenC}IdW|K#dfX4O$o$ae5kofPEKXmvrywz$jY;+d*k;=f_3(&DliIesA;Hrzi-z{ zr6@F}1I>41?eCcLH)jq_(iS8S-eXI*v$qf`S;C$6>t5$~dQn?9bjGkRu+>{WJPzXT z#VXYcx3Z>u#(hXCbuuV3X9cQFQv=c6d&aTjO?y>X3FCL6K6z*_=dWRt>cv~hQ&n}g zWAaV%wbr++9SYv#s?*P(J#l z%&im`w4($`%JI32yQ2qipx2bda7Ahli0>Tpz}LOX8aCGu}%?X@2mqyuk>N~4!^3dsE~B)bWwJ7 zOQmwlw9y-GE|ns+#0Wa!S3qpoZONEa3hP@3HNSz2qr(! zU5kEdZ_YsXib}R73{&gc>LCL_8(evrj#n_Wb5BZcn%49<6Vj;FFUvo*HmX(k+P z!cPi2zW1WNi|n)qv}y;ged|7NfpunFmh%mFYI_q+X5}z_>Ae_H{Snk0ebK*WN^N{o zcCYE<(N0~EbZ&feZu|r(t1b&wb)za&(f5W=bKndZ;}-a<9$7mzO#kM;z4v^Ya$&;I zN?V+^Zn&ziP0h?0`Bk_=@cB1%-v;vKd5>U9L+y-yTf_AF*o>*^AekSPGE4E4FnkyI zc|Ban>;X#H?w$Ddo zChjl+_c>;>NafDKNVvx#4>aj;Z20Cm-b1S}AyMeJQ$b0tSZyiZL&emx5E6HY(W?Aq z)X*wy<2`!+)ZeR=*Jqro&cD74u0DRv{E%>1-a&5&;hV`?E8825hkg3}z=4bU^FdT? zi=pXYL~s2jtWCi3590a{LV41*`gH7Lo26@pPs=~hUu?=!k6#3xZipVYf`Vy z3Fk7k9>WoQP>p3ABy*uHV?F1@$G8nOYQnX#a27kNeUX4DRN)G>Wq|70Wh`-db*DkQ zR5gEFeI*5ZXDY8k0qgoLl6`BSWzIi}FDl({u9gjNkiV_H7C&;cD2PKW*Kd8|&B&wc zd#?F1BgRD-0bI6U&jl?oh+44< zdgREw^#d(uExJwSmhXep<3qZ)kX>tn77#`Im|rYtieiu1+{(glru}rkvjZBX zY3*%+h6U7UW4&c~w4vV8>T^-FBREZO$$Roi>q_??*A&5CzU)rddBt9$=I|deF_k;v zLO(yw#t|TfDgq`t%}*yrAdV`$a@Rh2@qzUYZupxV-Nj8(+7#l&md@Fv3jh=75oSAQSYdNLtAR^`;T>fM z4G;ICH6-6HUDh*b-k8ceFA4U_*?xruvtJd=#8|{h;cQNVA^aBNhEiOLxrv=!^|KFe zg_^}uZo8*df7#osl+60xzw@jxE_zHc9J~%X{u-7J;Do1lf9y-P$Mh($h(fEbwi(}> z5qPIFsoA6|$L@c-37vJrUi0_dC*MIt!MhZvf;X2<^OmyzLc6~H8WYp|;Q9$tCb1lm z5^1Y=SaFs0WKxf?aqZYR9*XiLRH5?0T2zn+EnO?5?5Dg+>T?XdL;6KVQsK@BN2R2G ziv_!gCArN^1d~HLGb~o<5pzWfu@rH_AycWWA1;hAsad{s=s;>uz52UxPiIqq^&FPC z%>k|w_u)9AnbX){?7L#T-6I!B3OvXj}0yg8}14*e_ z`=RIi$n?e7s^V7)Q_)W;#;u!;Jt2T_M{yPsC~~k`yy{$gg`F9hzxnj=TUHf5zv2F2)!XwzXTMj|JLg+9 zk;yh>p(x4kieKIC*^;^I?{1~m=Fnrb7BuMEPVVmYW_wgHh`zm>deipF*VctQ3tDR) zi{cOs<>7mgQ4!9+?pK{L9T--+OY^WaaJ=MhdCxKV>vkxlPbrkveZFF5;FEWEuTmtf zn|I;HVuHs|7CqY|=@Y%sV@Geqr0AzWd-?SD%k4E`JTtJ44rIG zHWMzZWCATJ!foH_Gzp9_qb~HRAIf(9&=~L?~_>T-o>x_cO>MLTTT8sRc9Y~Yt?QV z3<@8()(f_PmxM%s=a5%jR(rO6onB~v&y6LN==rimZUe#ZD(i1cZ$w%u0R1BOS^VO1 z_6Eg}WP*G#C6JBZi8an{u=l~cqS`X-f|m(ccof1D_2=FVmaeCSM{JUZ-`X;c!j0PV zVPQc#42vz^p0?9=(yrYm|3L#C-cXu^dYXQ3x}dv9<);$X;ewUXQ^grd4fmISJo{7W zCZr}FofqEdR4>t|xHf`<)W@8?NoT2n5XY6c_RotUXgYZ-2i@lUzN&6mcf_V>-D$Hn zGRm{PaaFaYme3^^RyG&fuY-K*vD}4hoYH-3H(tH&(I4I7xq3_s@2~d=J~j$-G1_}^ zcu}h^?6|~;e~6F-8oBQKf${>Jclpn~kWRw>wZD#k`A4rrFWE-DrQ}kfVHM5lM^w%a zHLdy;?f4E{)V`rp5Uxh zU|iL5|A)0V4~KgF|Hn^zkyMs4wj?$7ldV$7zJ(dfFe6m<(NHmj(1ubHSwh0hU{?EZ zjBwgiWSeG2#`ZoHF&fSZBZTk$a^C0teP7?t=bzto{rY3BF3im9^}3(;b9p=-&*zO* zXMUyiyPd|k^D=2__5S?=sk;Zuc9Cy!_TaOPOPyVVIcUL6mYomM zlOmsSYk2PXoioQ;%9@GO#(|O?OTpbZ2QVm@a!kN*j1_NDn>SA&!KKx#i6K56gV%Is z8%*=e%_F8Ff~5{CrRuSr}mA z7T?{0e$j9i)JAb$+(^=S)00 z0|Kcg{?L2lDucYXI8KQInrwM%&fbr6=(#WW9{kqnX0%P0x<3C=%lnWuqRlSU1-Zf2 za|xv)HBEu_AOW3_aHZ|jqR!N%6N3+`ALQ13J=tzt9{mJwAv~n%qkRis_N3)KP0N4o ziZOV~Wk*Bq8_1^Tw3l9HUp4S8xPI8K=2SzwU=K`~##GLaQ6-MQDm^|aHFtLooB~yF z=dc4f2rN{uK+DP8jYJ8d8b~-j0z;tLI}I!g?gly3^=eJ(&*dA)cjbOUJ~Pna@D7O%hPYVTGb0`sOf#cM{Cegw`B;j9b#_cF}iA1xD#HBCu*l> zw|KQrEImmMDXrhGoh3VqjH)qBBT()M-=v0y6!9D3p*1V~m96z?oH)PXkJW99& zzA&hOA7$Y4weSWoHGUprPH@AqKpq>eM*T6V=%Fvg%v^cO@0#IDHIxm7$c3 z{2ddYe*BPd-$T(D<_fE8ZVQ^=TOwj{ZQQVX9SLC(dEcQA<*xBs10cbAt$gdy7>V5iiO>r2?rQ1qJNuwr*=VKCDwiW#xPV~Jd=HuFY|9IMo(&^E(-++^< zd*eSXtYLxlb|zgC+$|WG&o-@h;b({(x19>=*+6RnZd7t0^?pHQuRlt$9+S>fs?T`g z2Mp`yjn#*{N-bSA9CFydNtREV-oca)^pj!qN;`@URZfffBpAnNw z;5LGPJo$d#w8H9M&&QdAI_5TAC+>ASeC<6k=`vR_w{OYO!FJMhYsbS?nezY3(`##hLpv+G$RwYw~{jos9a_`^r&dRCxRFRJPmh)V0_icLNU` ztRVVbqV)yif=Z)JUB3miVUA0Iq&Ydrr`FGHWoJUUk$hM5*m8d9RRd2PINhi}WCP}3 zzPDy7n6iXq!wY%^>uKMWc7f^&Y-PdvS?3J0+U}^YR_LHV2SW%mXABGbO*=7^UlYVnmQR2f{ z;lx3j1lXV8NTiN1z?KPrSa^9D8IPtN_LVa<87%+lnr2e`V~%t zhkxo5FM;H}@A8jPx3<%u;JvTp=+Y}SsUD{hNH{Yo7kAjiwny!yEs~hQCuh|xusX<)Z=L$z$^ctXKv}$||q-AyAPdw!(fX}=JFU}qf+xXpk3!&tvD0jP!3bqvPpbZ0HpZPm1 zv>Ub{Hc$>|z-26wNiWFN?we&Y)8d@YB55wWQ&*G^f@hibm+QU{j_HK7fkrR>d(^H9*V;GWW|!tB>Pqy2=7VMx%@G2Wmr z=o#{S;JinC-h3;68(s2RSAwJDxpX)A9$3|^(>ZN7?`}+G!%YYn%po<7ZslzqRUiHe zAFXTcS5G>(QsOx9mQNC?PT3X@RS{NS8Iy859Jq^YuTX3%I+gpN+L=~#9)hJ<3{XS4(!d&0)9sc04;K zl1{;X@cO_huiHgaJg`sZ{i;R3ikLzgE{^2lLm=E zMa0SV(xAxWKFX;Tl9RcGqHe8*5D&txsPkcE=#$Y@CEtW+=`*T| zYC;Tl)NQoDi3i|ar``+7c||g1vRwk2NGA*wCp_Ra=pI)f|t-u|d#%xOB<5a<=|NHBD9>vdC=QEK3s*o3)+9W94EPRo#fkv_16 zaGG+E3iq(cA$9n={Z{L-M;b9;D!BvXi=F$U2y88irFovSiym#cYu=5C$<@|KF;>M_imNMkzk|;Y6k&OW- zn#-rzP||Jw!bT!)Vh%dE4qgwZ0NgTtLD3&JVHhXVqG32!Adp~SOG;8iv#IB#iAK`t z*opb1qG$uyXz$dT@$zPAnrv$M)HQt&252(+zyrW8OQc6hz#B6A*US=LsSw-apB+sv zJ50Vi2a9vUb|h3&MreqOZY{41;v#3NwE;6(i}6JzGB?s+V6DBzIACcx8__vjYBiMp za#6IGRHE!FDh-w4;lePbwPH4{m)+4=AzH{i=oLY0c^PNR(1jAvoKn%Tsb~BxJT+z~ zT@&kx_T*O9gi}{uF4+qGc)-umjX(WQ`rk3D>bW#ldsmxWz@+R#?XY^JA}<$2fRVtEC`aaZxG zKdMLlZ537*7A}(WFcH#avgv@RvD(DlTI$98O?CwLm-f%bfoRl~YvODABx%%#u?9o` zWUWT+Y(o@IK@+9@;O}jtojf1ag3H&c8!4{Kh44`%ioR=U({=Y> zt*IaSp3-gG+VN6Xu( zj)lnf^YHf`guxfctHH~BqnU3BrA;P&Mi5W&;$=r=?yVe4?ITkud?%hZb5QGptFEIa zrvs!8t`X@N8guen*Km8QR;<@y0DH={Bs%Y_dN=x-`pc*4HMh+g6(}W8R}s>%UvV8I6Cb`Dpw=>K6=X`4$=d(($LoX$bLfiav>(3Ehqz3~IJRQog zr#Jv4Zow7zGi)K0ugiE;7VP?%-&$j?4u2TRGlu2IaFz(IY;f`wMOkp9<&AB{!d%~u z%RknFP8((0YU_4@$GY$4_tM==g!KGVU#KKl9lE(PkCqghtZEd4!Zd(=-je^yryiYg zR4$PuZ3ww;uv;Q~YpFRKoL>cd5q9$Slz64EwE@1cJ6;%@a#eG@hOw9Csx+ukN4@f6 ztyYaz;4-Zmh0l%cGpf+ipml1c0;mfKNHY!yzF7TNiS50zugMbDHQ|F(@mjX_tZa$5 z6WPu?8?W6DkCm1t&Ri&g9=Y`A`J}e1o1jZ-&zV_%-HmWQ!D*0y$C95iKsvVbbD2_k z9_;n54{tQ;eYJPs+y)al#^29AxaK7RvUjSFg#HzS-viupS`w7|N0_PTV=OgQIFia`E<^F=_gfTCwe1fSshpp#C+xm zeY72qE$NTy06>oOz|NLR(N-~}xOENoGCY>lzm`NRFM+6+^Q4uDs69T&=Ctq$y$F!R z-~V3llsK1Q2{@kY5qL+=OhqLDNq3e@{bV~y+eUo$P66Fh<>r<0a_wYjWZ$Wx2-5KWk%dpzPO0mkO_ZtChDcAs}op9eYx4q;j+sgn2OKrFR+;=r}W5I#f1TXam z@jg$c@o>1avK#U?=1^MNhc`07l3cEaB@!ABJN&Tn+hk>5{4xId)^%W~`|GtdQ*Pbp z-4KGo4kxzyk$9)>cOZ6Gz7ru;k99C|w~Zk??}?FRtN`Ru+KzQXxG{ss41VE6*E^BP zGezvNf!2ja+damChXlt5rq(DlXYy>oa;*P84shE7hDcUGluagZ2$_9`$K86RLp3U% zP`x7sr@iBjELjS78yj$2Z736f69tL=M3gMJRan7cC)*EYav>=O zQeD|WrD%5Wgnp<|f%a?S)zDo9s$JHRWwFnuXQMK#c0eySUHK5u(7Q2I1q0Xq^jBb} zl3(u&YmrhdK;(muVzjjXKwiE3w78V47H0;k5_DRwLour+R9Et!-Q?4VnPzc!1ECv3#v+qji7K{qx zi*|!+#L?_(@B$wDX5Y5WCPAeon@#d8{tg$%=V*MLIq#cm&2il`Ah%X(+$OZIp1B;~ zH?nzowN+A)v$%SivO|P&uza)kTl|~L;8Uzj#qBx4Dj`mUgmFD;tvS3lIWlMU85ZJ z#N#YuGxT>%W-`tUO8k@dRwp6{pYuy|-}5OV%_&c&4}FxA7`#&1kjiwynT56SH}K9g zRoD6dH(cjx0H+2Np-#RuCPwGZSMdGlZ5%c_iB=R0MyLJGB1Pxp(L%AQ0zRIHXUfx) zIIDpxwCHpWWzEj3x)_fQT zph^Y>_#(P1whSG}@eODpqjEg}8^&|Q%6Q3eHEJ{{9zh8Nk@}Py^X`8H0j6$+T?Gu; zo&us#o*}55!*1{`cmRlB7cDq)O@kQ-?{|QD{GC-EU4-`$Zk;OUo6(cF;WejlxY=6p zEbA`Nr?Dn~ODJe9uj3pUl3@?|=XmFsD)dt9ORtxllsZ$C{7V?oD0f`}aucH!R?C;> zNi!+*9!^kQ5bbr{Ke~h^3!x(~4@>hJrLFwFWR6n}1K`uT5@RQ`ZT*4!cr>>|*E0X2 zup!XD3FL(X^e5ORuO`lwI#8VA*L<{!4Cm=^mECKwc--5DlV^e@i(pn|qeAg_ewQL}@a4bR#SdE#&a) z_%!Qk78xIi_n2xIREU(OOqi?S%!jRi%XCokFCdu?gaU=#=X>#@m~wPEtUekN-gKev z1$TKAzJW9>%+olPbq$Lvvj<&F)AnbeykBC7BAF>$X0ewU1s5cA8|>j%MPHv!<*V>i znC}1CG8G)>I;bx7ack~oRYu?X=N3`re0`oi^DCV%#L->?iAoQ(+SfDw)_e+PJ1qwj zhLUGC(ErK3i@2=yyJ#unrE+bx)7H!94cJX+Wm@|AbfkPItjg$yp}BVMe-`H`^E3T3 z_J|h%6|1|+MS&|6(Y`5NW)yD}`xX6_t5dB*@d@%lHNW_~RtB5Xgt<)LhL!vu8`Sys zQ$NU2{4B@;xT|I=#u=r=d^X)i8}n}=p>BAXYhU+3GsI{Bj#*z0LoT+4MaBE$-KM(J zQ1ONH4g8bz<4hN?Vsb)90omxTAwaM?$tN=5=;DQn5_hHnaF5&&W_`*mqi+$h1WSn6 z4cHez<=4wHa@J8&%e6V>P{~@0+zYXU;c-x4E1Lzw1tD#3f+QX8|8>kv| zw>8H;hX)k3>fZ$63VEN8Ft}K>($RZquGD#P53JN^?`!Jo(yKll3fU#Ocd|G}C7oE$ z-WLpQEl2_S_>|=2>zk0@28qa#r_x#FC7H$-ru|s3{1MKrXiyoaEc)zk| z;EUn;Li!72r;~{9T?$Ma>CHR_E;#Ya>UZL_E_}cvVsx|?M9#$>D~E74h4Vg-fS!hr zs@n09T2)9WVTg|WxQTp=YB4L>UZl6znqp1N;MkPx37=h2YtIZJ4Vqpu6ier0lXCqH zV8V`t#z8Y1ZaWPTq#4fcdz8iwood;pNMX$iuj%&jJTpj|Aj=voRA3FRn(mmo?lSE^Y>oms>eNlX^*T-hcvC>N{Pj(g`{&0g&39Ka z=*wtzlpJ#(T9=v=*tNY5cQ`EQam#x&9dc#&xVhDk^a}&A!0RYf!ws3;;ob+PW-krq z*5odJN!%8GBCLro#si8W`XQzSJ*xOxTjt9&T)4MFrvVt4^kE~Dg9E>9$eXM;w~09V z_1IkDTywws>M&J|y40ND=xGUzl$?q2m!^)J0~uQy;+|C|RuN&#bS6K-1aq7iC&9Ln zcS053EdQ-*A!+!GHIS3q)#O(rvh!S9Dp#w-u7NdOCszv?$Y zT#%8jx1G_1C}AgefE!bsY}`2I1b}EEviMu)TKJL>hf!}Yw5|6L2G;{92&w>Vy1=RR z4$D8@GF_CLdSjNqxg^kSr?^=Nw&}9eE&1LI<1v?zI=*bZ_1D3)2G;kL`Fq7k07vO9 z&;1o)#;?lz_De?dwz=Q#r6^Wse0zy}##hL`^m}5xoz>*FIpkKkBKCs41pBU{IpJ2U9}iz48fycmatVESjTzgovl`R~uGO=RDt zA1c0<;i&bfGS7HZzGa+z+4t3l)P-&CC%C42J%{GF~CHHBY=>UOsPPLwNWy zj+YF16!2NVmj9sm9~{2OUhy z^R|@H0u^Rcf&znT@Zh z&u^TL3->lhnKLcu7T9F4J&wMe&@1{p@mti!qKD3eM{M;d2jg^S$KYPMNiAc|qS^3w ziQQEUx=;aKHL9ysH~l2h7^YSPsuHOF02Du{>{hLk9FqP@T+TCXSDDRI5@)Xq5cEiG zCq_q&l^s^S7wo`enLSl}yy~kIc`!DNPS=)c=*~R(oCM_37kLe@F1DExW^gQfSFVcKA>f855 zLHhFRsWtI{Ot`uB9yOmnmrtc2xd5YL*9gtnh28|_wuw@{>Kw>1Knd&NyFe2WL-x3j zQE?tfE=?4s&xHyj_!p{@43dsfD2U^Z@ILfj^K5NDl7e!>LeEe781`aT&s!V)}e0 zl`5W9ywM7no~-$5s?439BEs|*xJo74SlOu)rE_;0U#bqrBfhIHd*n!G6B?w1u>rb~ zy8Ma;WnogljMO%SKy_IQE&(nv_M4%$k~h;zLFP&9bnrKj3p0;_^8T0|zZ7IC$mKU8 z*g*t<`Z?wdRRK9{;%r1QoyLr3)B1h%@y_Bc2{k^6$@e=-Me{OqCJ0(5%A6+#Q)aYSQz4fC9-9{6h z7xpiB?GC1?U}Ch zecX=P4r-2nj+F=!svF3-z;&#jA(CG&4L2}vt(S&C;#Tv3q8O~`dGfh2BRU0d zBh;Fr@(p>0%&GOfQj)7w13aumU|rX{)mP0%#W=q@-dG)wT7CElVXa>P*7{F1o6}r^ zi}hL*7bFzmfoygvmycUVm4TMYt4VxP54{MzBy-cM|HDp|iNwNM`5V_&=9{qFAk(1} zv2VP9@~1|J>=OXMpAJ@8bRphTsH7Qlz9o_VA{nRof?A2XB}0;ZkEQU^xG13$N|!l8 z2Rcn2oY_aO!G89V;vTLkr#ksVwj=V7ia4G7S;hRe zP5FS^e)R4Q=S;#G>mB(^bQus1A;RB05V#ATZhV+)rqpR@VspKvE1(^r(AurJv&mr+b<#$DPRr}z<lmA92DZH5u|O~8Qd7m;@KN%PGvSCK+TfeT>!k=s9;+>CQ7zbwlD&_VH3tuANNtoGx!-kq}@$Y;q?RNSq zyCDM&Jj$rz%Z|48r?tP({sn6+x{^f5@$h17r`5Ym$0T-CLp+L1!q>>880KDDtus2= z!?EI8vWIsC{iPUN{T5oqI1sLRrebHXp=a20?4(=SwV|(Q;ZPoT0pBR1`x*yEprnC7 z=+`}6>#F&WM;0Q5D)jv=T9#;id$iBhXlC;i$z{6#u5-<_AbY_} z65nA1hdL-5ATQH#lqh~(kt7^suEoXzAj=iRqGLb*-DK6 z*=W@7;K)6o+ccmPD#(60UOCsUD4S{4jkr#|1c={jyeA0TQ z3bzaOA?9LOyBHuCSvGJQNLf+GfE2Ic^*Z0mD9|D8kC-QIZ8*?5yq~trOF@S(qZAJH<+ZL#(d7O1#L`#H& z4h<+Y|4pQqy*P7PeQ+ZZp}r>kw3&F$v$fcedQU**TFyHRys29vC#tWlybry8{HI@4 zyi5xWmzM=WLl%Cbvzb*k*FZ14*?kb;tf%^#oG}^$Yfb_M( zKtnrchkjG%59O&Rr^uJ&mUDG(I^@+ck%IB zRi3nYdWRs|TqRH_luN^a%v$+90}+6ZZ;m=$W9+9;fZ?^SlmkFL`?H}&aLzUvonROA zW(WW;xgugp*r<$s3zG)#WBqG2JrDJE;+k`;yKmh8&Zv@W-M4sTQVCR7Lw6_Y1FEAT zLSiy-uGU?On~hD*uVm6$rQyt<8C#rVAg=LK*g!l_0m_Tlxk_;AP|HEC4YSOc`~b|F zC!Lel;#%X&;>b_kmAQGalC5moga<_h3pe~E9C_QyDTUW&;uI07HloZ@RRB+H0EsrZ z4+EQjQ!3`WoJ_x>kPhO7#`k z;FX&7=DU&CBO->lmKGWZg2*84%=oN)+wiZ)iWfTc+nmZ0VrhHAq4d+LB#@LFh^1%Q z5c}9~Cj3Kp!c^0({mU+gJTXv8&pTYQ!&NIS=M&<|+>RxyCFukWr!Sv{R{a znpylZqPkpXLrxD!cb9+N;nUx6ivAOi)BIfwMeAIrw^bAc`{oDDJZFN3mS6e_#^Udl$;Ncxa*hEPV(YJ5-jNk>khsWgS?( zjyXUhR95Y!u`m+r;1?+E=|Bdsu8%1ox3sUP6_6+fa+3h_;HAb<%r2xOxR@XA)M(kLKxOPkKRAGZY7- zDZ(H~YO*d1F=ejMq0A?VtaxEP_CYW;lszdklh85T>6&Sp$vH@Z5=R%^4!l3z-)&Kk zz}%L#zt?vmbO+|3wzXqfPv2LzUi}$hV~&tsGVn2_nN0-%jM-P(-}0uji-|fj9sqSo zI~dgpm2|g%eN=ERCxtCF_a5jpkL*!%@GH?J>GtKZHR>HO=_p6gm^1nRf_ad>vDbLg zdyX-uxa5rK(XJWM*lS(c*ofW+KJrlZA>98WQtZoMyG$Gj)#q#B%)LpVS8Psy3C&Mw zupjJ;p4>NguYQy8VHUDB`=%?YD5S!)@rTR`wLx5%6+JufDm=mHM$mM_*FvZZN`A>{ zNpVF-xI@4ATMaN()|2FO97ta0Z<8E z4?AAc^D*bJQ~)>Z?yx*ht`ry z3}|W2=o}A^e&2KtrwV#EwbZTkecV9BhWY|}0V@SV2g<*Ibvh*!`vDELc?MAu+96hl zPj5(O0?3PJ#1zsMvG1VX3+tLVd4T@3c&zi9=o_*;c zXGgRjT|T}B^b6gWb;f?v*@8C<*Dc#7DCJ2(OuIfesPxBY@W#i*xAqRX1+6F?fuMk! zwkc9euv22jd&bw&+s*;QessS4Py6@;YecX8AVlrK*Rj7NLVvsUvKio<`(i8`H+1G3heLyEaFU2vz401|24&dDEVJ8=_Z{-Y&HXJt@fSpcW%wJ+B#2 z4vl-oPL%Zn-u0`2v3AiPC}X1cj^rmhX4isZ;KpUqu**MmXLo{bU_}tEfQ0GESnON0 ziKMxHk05qCzfvR)K@2^dr^K(=t>7~hs+Lc*Ov5Lhm<0X`NTSkTnU|!ijJ9UcZh!s*IORv+rNtljd>H z5(F*~BjtuV^`mrck#ccKwt%mH8!#dFYP7y>KIGQ>QP%s}`dI)QnN-Ce0>$LkBILWEB+|JL_`H0%!@!L7G)@=uNEkFB(`9XbxE+|%hP`TJH3A?v{stB!WqfifOT*asC?D31a68aFI;lLDF{iua$x05lZ|uWO z?qaE~q^>@iCN#56qFh)R(~gq8n`EaL>D38)i$ho0)~h7e>(Q3JIOuQ$J7 zZWsQLMMWYk#C_H!KkC}w81+)ZXl6S%BBa>4NqMC-dV5(zb>lS{@Dm@h2FuFA_hk>c z_NM|Y^}kfYC~^)5#?0lH7`b|LP;pW%>P$-^Nkndue(tEa$Ct0p{yl+`c^BdjT!8}- z+%a}2LL8y!3$*a&KBP)AjiY_)Nb1_xQ(kJqA_MXtDND5S~OX2D;YsUy;Bfwx!y8eGkC`zsS<6N+Qi&IhZx&U_=HmBtpiSrVDWv{9)a8hbh zs1p7XZt~r*%Fdq;=Sx9#FJpGW32`qF7*`F7!U$prO$XO5e+%PDV&&10Q1Tzq25{;H zcpKe$H17n{44p(NtDB|{`wxEr>f=Dp6D4wLi)qEzZ-4&$3=&|CQzH!rA-TyBrPq#; zy$bQ_-DeFv3sT4JXZx;&ZonJ>+NLsqRoCy=&dn`RV~NT_D0Ba`)BIZ;W2ITPIs1Sb z!D{j!$x1THp4NvAmB6SbB)4Yq2uybWsgpl3J-YxrjMq(rs2m`|uo~m~T7YC5>hpqv z0HE`fmx|{kmTWL@^htOivA?-}E9$o3`ofxJ za5;%KW{!isMxiJ9Ix9C5GowosUG*GtT@h(uH)khWw>dQT>VzKSYp;ND0*SV5j`6)p zp}Krcq2)4ZC8RCt7sZFW2)EeE6Oxm=jSrO(+|?z@>{I*BPi{9psAz3l=0EW`NALVMC>}+4r7dpAqShdJHxGZww$=s18wxq^5>QR_zNd*+qGd7UhV9zyMOor& zIQFg=q)=$@QdnD40*%7v@Ep+`1k&+oZo_E?i%~l zWK_Ur?}a)N?^MjA*c-3_0}+^#lSU2z6biT^K|ksj^{`X46E z=8B{C4d?uK4@jTo#mM<(vhNt@*8AnmhvON0zzGl>+(C2L1h|g@ro0 zUZ70&S)AT7i~zEUSIFPr%_PRmp8y`&DBG#yL9OG7g2LMhsJn3WZF%gTmBj9?+0@(= z_HgbzR~cB;6L>{7t!c+w?$Fvk?@dU%%5k(A?q9bFcfe?wyg!gnB&1U+e%lsfcd37K z-e&vl=6i?iFX`%Rv9RcqZ6&-`d9G+tnk;J%&Nlxvy*VxH&wtID)D0~Bd^}}*?5pAc z_%}SzmDMr2@-B9}AiLvzza0MZm$*|=)}=7Hl#A*0uFHcvDCxcjPBI7dG$kB}nW5-- zjH;P|4nyvQ($S_WcrtMZOzy@(1HHWi0(w-`>3o0tjU?t%PU{9WpuC)0{nm5>BvOH=WKPXQ=9Y%wHT$r(mHkp-z0vriA+|x0E^9YM)WK8{?d0`~c$BON zEh~(bE_^-IdR%%Y#1$Fbqv~ChBNNC4;{`6dMvr$^#_t>$F!bA%ZK)c$RPjT-!duzK)Bhmr4w;9ZKNv%`#0X%V(D8)8g-ZBaFi~@dJ3lK%&vr;02oH@ZNo>u0{!5 zRSi3N69H@9R(-6E$jnF{0kN7Fig1M>)-7U#jz%C?-iZ z76#1a)N1tDDVvcy?@ZX+gdUBO!XAI$9SV@i==R9Qrl%1Iv0ZYk{ThtQof?n&Prb~w z9^>TLj?ESrx}P=`P)jrf01y;VRSqvKJf{-D+Nd60n8hiAg^^4iH(b`*iF0dI#Px(t zPwtogd_SrsZ1_er_KQxvV;EFk4=%{_8R3$Ans6xf0{69wcW3?gn!v^TFA!FyCSj1- zjE+_okCHcB&>JnY(B?3$7#yYzjl-~^aTzK&BOe=Ao4hBgdQ$3-9J^J!Z+-bAt1eIP z(Us8FA<_^mKQ-Id$Jf|sIcrheE##IJ~_HgyUIU2g+(&?7e&zR!b_}zGWyw8=^)G0?SIdk<; z5)S7^8DT8FU4!vHc0L@u8lHJ4k3sf(fu$*rqS19$+8+ zHjV*t;-Of=R)cj!4&=4d1p*CbRNLo|y44w!HSN_T(*_ zL}1_AOIEcDf>XaqD)zXK}8jNXw6H{s~NzGXm$iOecP~Wg0C82_HqVlOO7?{FBExZwQwcu-e z{=|{=Cu5T{Cpz!X9n5(g$jTxm3&8PORBxMFVtq5=VwIfG7L! zI;W@FdVc4~*zwchwk+h|kf}xGi?#iqD|V{j}`wF>5{6 zV6F-NHR34#HS)4;rQZ|yjc3d=%I>c-r`9gg(jK3pn|A{pWdTb-X0c%8+`2RURlfju zoXa(@!B{F7dpNu~Rm(+}p)Es+g13$JzDa~qK}zW#Wh=vN7mjYkdG5P)!O%|u{0XSE zC|VktIhJFj@2kyvTRJw@HPs^n zcknStc+J9{84Dd&58|Hp7>3s_X3oP4-%<=g9N?{V9H?(U(+Jt+pr&mAy+JmPj zRToY=+MnJ5Tin>v3-cx98NN6C-E$&`_a_W;)FoExpFr@ zafdB{_3ok)4LR0$HNS3Ht8v%?KffYFM78d6oHH7Xu{2lpJK(LVZI*PB@6zwo=U_HV z#w4RCP_K#itwfInfI|+4*Lx2u%{8;kdd2a&eU4_cI*T%KjA@CusbJrnXO=StdVAEc zU*hM?hi&K3!~5o5bDLIW_YWkF8{YEBsJmd|(`SvGpU^mN>tX;N`g-APi`rz8mKnTh zSdx5GwcoG6!wM+?%?;!CKs=!Vf(9&}`Y&51l)_$_4BNfgD~2P5?R$#~-g3oitKg2+ znd!`@-CTeusEMI0txz)w3H-Ix(QSgN76aGP`4KU5_ zk&ERoCdMYd`m$P2{{>6RyaE3xH@S3@^6*?zm2bJG)s=EmTY<(m(nxuy9r(ZSy;W@+ zS8p5fIZMK_H-vG1Cya<&+?6h26x@0lZsBtX+C;tTb=thp+?c_reEX*G!uheklMuK5 zrv_fbyV;lUs&;kLkHd}LwbD$kN)GU4HD8Uc9)6{u@(z)?JF-gJdd%XzzGtlaiB}5f z5i)h0mV!-ryj&&w-Q#O2EBWy}-uBFN|6>zG#_qbFI6@+9KzUyBsO|7CQMSWA*(K9k zz|#FQQN)5l;;lyK@oapMAz_iNyP!pbMu=GB%A%hQ;woaA;jKl!T?f32xKATp;)~)R zM#P&$mZ}TN38BJyhh1H6$CR}%Mu-Lu2GHt^FF8+_MCws{pDQ%WfHf4n{ai&v$8XK9 zAx`R*o)MgSn96$p)~#rt2B8wJQCfLOgIK8rs|?=^ql8Pt%EAp`RXPgEw8HDq^D2L(DC>HTVTz84Spqt=W zFr$~|86&Pnj=!;&+XCDQO-gVGZ&OsJL%zq!StipSY;-Txw0&Osq#Jqt8h5euoNeXW zz^Tp2*ns^Pt|;FcMjQ(ci0CKopGWrZn|JG1hP;|}l;No39jgXjcrpP2jb#CUMfo4V zhO08iR&a00VFh7EF%#%YoZdvb5mI8XT_Ouo`u>{>ld!fdJ0J4cKtUo8C}P=m2ClGV z8+&432t;rtq_#c+@>lk817}!9yCWF>0!`Q01Gh-C%4Ay^AeWR9be$|7k$^(WV2e{G z&{?t#44euclslT0D3g={WAX2y8f!qp45o?MgW(!b>r0n;B&jK+(m=B7(KvCD-7^vV zKdW!HYrQ*|V=?J5d!_y?<_5|R33o^vr|;=4Tsvt-xEe+d zms=~w@NC?G%P{(Sb3a&pRPFnmxP3PXD1p4mLgG6iHAV`(Jt{Vj~2#v<}Yt!CJhKT;%hP-R$A&*&qg#A=a zEet>SZlqFY>uYT5aqw-tD>{C($P;3|VItS|cmvW2ymg0+IgX1U#iFJ%^SS|^S;tzFC9 z8fJp2iVwWiHXMHosr>58h;BmPFZfM;ze@z=-$LAG*-6tDKlN(k0sh*xpu7}ut4SEs zYnguSwh{#jGOeI0WmQa2#^Y0-o(M~t{xGsaPRrFYwRu35%YRSA)+u?Ap9e)s8(2Lr#BULY_Q8KWDi!Y{X7W6)ZwWCWyS9;6 z)ZMLzd?mYZBoTF}pe(Zv`At?^O3^iDzalb58q_rkMXoV0A7qS-k6Vo5Fd{~3c<91| zysPUWm$*1hI3jpT$P@UMLgCR9Zv_01_ld!aT$4qr3~rk#izCzQdO zc507el{RRCq=P>m5&SVId(Y9Py!_C@wiwwDiw~)RM}6?F%J>BPO&p0s=_oLo*m?M> zEBF-lA^aozDK72+E*jtM_c1~RT;t;?t64=gaA8Hz<*0-Fz?HySARR_K^=C^z;YO*D zlmu~EOXMj>sJIQSW~q?A44lcknQdG+$$scS*0hJbRcJ12fD|hjeNGmTT22_=(trml){2ggZj9|6#NcdDhL9%=*<;x%?Yy(03?_ zv_1X)Azc64{cLA^vz^-E2_@B>%kSpfUSxjr!l4!Z4|{JO5B1*vjkjr0(t@&wWDv?4 zBI{tRGX|ld#n`DZI!Gl^WH*Si&BDwGCkDrePP@iFW;kea7BMrnD+Y&BzxSt8*Y{la zecku{{e2(z{kZ@5{r;)PqbxI@c`vWmb96WNQgc*D!0F*Og{%6Ud3d z<#ff_qTLmnQAg`n&o7mT&)zY3{X!===wX}`H|1KUK~T$h|J>=uzU7Kj`s03d*Tq@8 z*Ys2%?uD0GsL{Lgd8A3x6qgXO>fBoL>C2xD^L@uFF8%Ct_|^DnIE6X$jNexsx_ zXcU3}WTJ%udR8Y|(ZddaCJ@5*O}YKq@{9c!!u9_pMi-+{TBKdElVux&WZcqrC>p@> zMH$K%TQ71LuOvnuQxsVt%W{r!PX~epNZAX(Fi_@_OnF)V1jDk(ALC=KmJ_e9%s)9T zenOzYqgX!@cRBzq3~QlV{4E8C?Be-HLpNq#`#j%2^beabi$|{Xt>DN7d=N`d=oFt- z<_MCE;*yc8ZxR+I@MP7c5l2+*-jF3=DfoS4JgO3n3dQ>% zl3Dg4NFQ~1gc{k7Pu>Mf#_z@AK{1iHZ6QaO*o~6H+cMJ|5F>7e>ZVNX_ZG$^2!7l7 zJ}-*+cH<<|O#yGmyt{x{bu(8##nh3s5Fy>9R7|9uRIT5TkW%EGAaS0FeK~Qti~|lC z4T-a_rF7G+?L>>oa<;G8@^<2EGaFa7nQfZj9kEZ)QK6G{rarAh*|*f=#LwEuUnqxZ zzry%m&e?cyfG3ETAnSaV5Dq*TVHfFw>H-^cY`V6 z4)Sn`$KjvXrN_geZCR^xK5}*|-I5EZV=%i+$aDHo2?HJ+VPmu1z>TXz=2N~7#mE#w zRn48NcS}}3K`&M6tgCvUe$(k2^Ju%?#ahKTWi^osYpwTMXLt5nRY$j*``+>l4vgm88L|cI1L>&j`uc|k~0TA`IBxz%L(BAK#^}4bF{ALsd zk2d+a*JBiBv~V33X^P77d+-SvbvMd!fo~H%*1}-o7qOBKh9i#aRF%bsbnm zTS->X_m(=tky4G+CL`aS#(_qTuoVlN8#jRolp1jySHwLXV3Vmk}67>;Ic;#4(( z`jS;U=^dp75<~$9KI+MaHt$o!N!U;RH$JwzZ!f8gJhJBhWW!2AT{-wH1lenjoBKC} z9Fl>FStXMoLIE<@-%Pc)9&igeD04*2?m2mH@Gbp)nRs|5k`=7)Ba{5f9`b%Y3Vx`+ zJ2U?k@dFec0jZj{q~|CjN&0)8@f~*Kj!<-3)Qz5iI?sxWa;+J_#EE-l461M>M1Z1O+Xh-HUd@Tt=T6Lv1Q>^V(Oy_AIg@vkTzlrfywI z2BU#86R=oPDW_2n@IOg|hJ7?ro$kWG8UO;b9*ir}X@pP#jmYpx*ID2+{|Sl>ga1Qi zt;097^*7Q{a{v({>7xp8L9#(`CS?2@s>HG4>3*X(4DDqH;34}*A!8dE*xKlTnE4hi zmTq~R^e7sTuSV(F>sS_xn3ttbTAeNNOyUJm>rlrZDJQoGRBsXUWXX&H{hEv zw7C{Wr2D)oiR|CWzP!R1S#IHH>n{!vBcjdF1Xv5{Bd-JC8#xMFf2kDDeAa)$u5SK8 z2H1|%|H_SgWBm~pJ6Jn~R`F?mi28m_zCpZJyX8ev3$IqVyFGs&k|0!QFEXzXXW0pn zYq!iD$_Ik@JJ*yGZT(ecNAftG&9!jGTxv&dUS$9(3V#NXgtAvhBGe@js^rK3JCb3# zO{@UE)})Sys|*t8C=fc&jNnC*yk|L4%jP!5So)7`QWSdC7 zMk!}2E*1SvvpG(zKZiOjfF+O8@qd!!qibRz%W3FkOFZW-gTd zcVXakh@6aCrrjUpOA^}77W+xtC6sIl_94n8Fo;Aw^1(^>4Q%%aD1;l{{qR#=l>YDS zlw8FIwXhEL;BOD z6MS#(G{QL^?}yonf0{cTY756ZsF>}^|ES>-i1!}L69GKh?*X>P^lngWs0@2#oq-xz z*pnfz4U%qNdnDOc%Q^>hr$;jmXpqLd4oVJO{R`gRQCoRfgPKcrQ@5+rG$12GZ~%_& z@sjfJoXULMgf;K9!+>~bj0f5sqlI?tdYB2At7Jj2|FA9e#>?mUVEGWo>b`(XkN&G- z$R8(nT0$&`7N^Oo_5t~)4tcIj(~x;s@@TN>7$LT#-Yj&!bLlf>v!Eh^f5*fmYTX>6 z#`azWdX1P{F}4^EfHS5#HD<5c0Z@ZFoyy=F0*FYy)m(KpDV}$amljW(PFV|92W@O^ z;vpGcc=fc&>>*(-9O&wrI+TL%%=J_TQ}oKGb@rrIo^$c)91;8$j4#xc$&4NHdgjeM zC{Y)=spQwA*hh`s+a)S59NPyrsTTY$83e4;CA10(E3vG7T|^fX8E1queA*$ zEzRvEG_s6i zTuici9S`)2@Rb=bj8ze-i`Nh%g2}BT)UXUfH?D2)?kTN<)l7dqfjIl%7~? zv3N4`Civ6K9Oj9U`wo+VvfrqCC3DjH!+5YcC>8S_EeBLBTF2_*-XNpYMG#8lU34N! z#+F#1zM0#XTGJm|9c^~E4q|<&n`ZIU3{)kXx~Zo=24I8*GUP&5g+9t>sLV6W?omij z#2tuL#8k-VYP&t*DgL;(j zl=x*ahaaE&K%MWk5}&`DYU*TiwX++HUTkClWwD?m&qvV^Bb%r9z9H*Jtq6yF4j5{L zG%BDwaidsKI8A#^POWln)SHpE8VAYGx)|F$J=GqsGzgMrtv~6$DsB%BwTr@*<*8h! zB=s)_7!B|RT6zZ5R7MG@X2go%@vd$!z8kH;M5${T<@*NrN_Xz-Yjq2l>M?g_c~C6$PWkUilmn7 zakqfq%uU_SniqUNw0^m_yQN5I&%MC9(6e$2|Hor~R9;l+mAO+>W)6{g<&1bzyteWD zYe7C(N+L1fyp(6YbV^dyDXEj7;vIWU2`rK!7?1rxJ;Zl3_mfVs_6>O&gDg?9J;4($34S(TNBt3M}px7z%%k0N3c?A zCY@q(V?NMEbc*aH>!vR|E_6grE-FQ!Thizb+(1;8EJM-07temLY~XpoMwD?btMLfw znqVz|twz=YV9XEnExR%ftyj$1v9bkV4iOE^$Wp^K+TZ19DQO{F@boiWQI;qUNs<>_ zQ(7lPs;Pth!guASCX+4*z_1~TsRP1o<)#qD)kH1auX40R#0|;~Q|+m2@)5FUQR+l( z?`^a*2KN=CX}egm$WmaDe;C9Z!DJb|o|9w+;rzkN6OK-5s{dZbS9Vx7GkeXoTfv<< z^{bTGv9Y|H5}$qscvP%-_u44*P@g*`@fAy=1Gb`4Zv&bE!l9@$){Xcml09y}!+wMD z6_T^SFdwYocW6cva(^VAYvz?4?OgK4&9kd^GW4&H_@dCKXYPth#EIF9 zDcoO`$up^$wgPMM0zot6G2;>n;;rX7&dLyFO!wz*WNq}CI6F*ozNOx#cm48XY`PId?uw>0J?nR8D!Qcar)0zetJ&&Nuy~^ zgn&}FAH15$X{VCf$lW1Xj8+ohDsl`dWA?PtiVHatPIDJ>(Egasd3voYJE=7cHwf5c znc$`!ruTO*GPnNqHjmsJYsrrBS)=(9`Q# zU27WYZ2+%Uz|8&rDT99gVoojAMgT&JUcq#?6r;aX71X{5RNT4!0jq#i=TID+MQLX zmz(>jq(eRI&eDrl&%<=ac>X4rq`q_N(y1wu@_Ws2NH-x6%@L(&+G|jH^S_EF_T!u# zoH+(62JXWT*k>@u)B(>&wLRC!(Q=5;Z_uLVGkU*jZsIA^4gzwW5w(S3PU;Y><-%)Z ztwp_zk^;iI9x79AEuVcOmlVP*(XP#BmXJv*Ba-_5wrsx@Bv7L|g8C*jpjs{|<>I|u zTWEI`J0n@w1#>xbZ;vfp6P;>vzjf5u}YbbDwNA*$>v4THx)yF>^A0%Y>NIb@TeRE{lar zZ;fOurlaH=16lzG`paNClN2kB|!-PV@)?O!o& zpms3k%Hc>9HxN+GYd>?b$=+pO^R&Lb`fdN5u zG*_4Y_;KsP<4xfDQZ&0{GVG5w11$lFartM{RXqDJd}vSF3{&uU^DO=yLo|z(aDTS@ z#z{746We<}6pLVyMUvRTt0PDt3CpcE(SZ))zv^jB1lkS*G~cB<5K;Q6y~q3b29fyt zdVv=tNOe0xfA5}JGZR$7ei?gE2|^v=%@z?&_*hCZJl5udL6n?Kb>vBz`qgL1TP?n-1r%Xtb4kr8y^^uEEGy~^q5t-BS;s;MG7QdREOsSmqND4C}rBHkdeW7eVNR!*@lpe_o$3! zru84B55bQmvYwH51mBcMQYP6;s5=9xHYet4Sfe$%$&dGz-mF&5 z2Z6l-h7I|QkN(Ua8D(un#G!KVPFf0;48eZn~CU?Eo>!aEOO+^B=;)FG*{^&F3fkE-WLT2>1T>EP1yT*u`WX+%>3d+?dnxGNgT*} zxiZ&h^$;ik85ZmpBf7)$mkn*7G7^<2Dez{S+IOu_;sToBrEDA=6EoIEs1sNrd8UiK zT7Na2kp}7TC?2{V_Q17 zeoXq^Vuq6Sa`+)Ub}d!Sv?vT_qLTn{0#C zbAwA5{NU6fqra~B!FQ$EfVRCQ71HrC*ntqY<*2PA?u(W+&?^muRyShC6K$vW_Y_Ql z#BGAHU8Ln0?$nD4`LxMDKZ(q;b+1(VH)(;X5pu1cul&XhZef`5uJo*IgZA5K^;nA{ z#GC+{`JlXmzSqNS!dLYGAQ2l!_k(c^nJ2S>tT#iurtM}O?=*mG`6t@4B0~dCrn~9~ zE&KAaBF8aMzh)!e)NRKrE?kf^8}8g9wBkAnQFcR`kf2crU-`vXIKrb{{##h9v6Q(wwAGdqWzO3^unoReOM-5id?{| zj6nfVjd?@Y{%?YDJ?2rYr8nsztOhTJ&2J#ipn%kynHGg;b<f1#ezDv$P#K0t_RU+did5?s0lZ6(kkV0mQHs$#chyJ&5Q>WOj|Az^v z|9*B480Nya6B57M=D+lRA(i*LLiYKR%s|NM6QW(B*<-y(S`F@iY|~(*js4C6tB}1u zhyQ>0@Ba$?_xrkk&bu#_7fAuIV*JU@Ec-}_wDbAfisuU;G;R|)2Svc6H1G&SCdx6y zO-5Y{p-HyplZ3E#{6_4tvGagEBs;Jvj_pN{Y?uT*Pt**vYe{a=FdJAj8 zZ+oA+KzNKY$GbAK7aYIM7Ku}KeX}#pA;nFJdQ9V}q@^v1K%t;_N#=v*0ks2drICg} z0AQR7MVnY+Nez^T=-mbROyUAc1Z_#Xqak?r5OR4Y&rq0w0s85+4~de{-Gzyo0QZaz z@dsRs+s(;@q;Oo}m7H0A#6-%~_GF=$Ih@vbH7EODqe!Nu{&j=c)d$}ng6D%38nu7V4&P;nvu`?S0p zGWKFf>oy3+j6#Kso29vR)3r*l!!P7S01aLpjoE)O&Br7P<9#v3$5;jPq<&ncDRzQ!jk~pJ zU^eXTsEN#E%&ePfknc6kKd#CojhbRu7dUJE;3jLlnN?&k`i`+)2K<6P7$scF0POklixc|VFHT0j zCSI!cegBpK3jV@fMubHA8{(}oF8CVq$YLuJRCUOWJzjg_ zXp2^U0?|rk0Whx!(wlZ^c#Ou79eVN11sVJ+4eN%kkd6hdWK@ySSY9f=Og%&gdkA|0 z!6+;%#XG7*=P!f=T+6G5$LFR~z7!FxDuQVN}C} z{RNRcA1auvUcEY+|5a-CuvWoJrY={-ey@zQ10>d9g#u9Rl2}L^;~?r`;XXT)s<{*V ztjRVF(nLTUD4z+4Z8#1$;(EQcn3wC^Zzp0aDu40HV< z`tc9Z>>Rdul@9qK3@u~Z4dF|mTu~S6 zKaX?l--mM?0B(~01w+fpi)he{{2SFq+7#Obt^}j!j}#sQ?UBjL9t7S3K}ecS}zZKY-GLS@H5Nn|z&?P<; z0Bf7e)S47L7Fru@n?+F3TK6<2ZWj=969;ZoTFyOLmA(UDJjIQn=1vqe#qqY8GU7sJfz~3m74gR_~Rd6eKi@ArgwX3 zrnh^krrEvXdVQLJ;hOCO+JniqTiPKLSV)^1KYKJf5BLbgzyf{Vs+cPK9_}<3bn7G~ zhw+Tkd8rX=J8%N`2LwY()M)Si>sLhfzI#2Oj;kIp=(!>f`3?aLedmzr$adlcY<2r0 z^OT4NBnUqFY^F&0tLX*&@5&Y3P@;>#1T+s97&`?fH)}h}dgEMgT5(b;!Pqf1f$_7) z=lLn|na5U6Uxe0Z#buT5S=sDn>R48D_Oa|o2O;mnR|&2vt_b;<;S0*+%!vmlQBwiv zbEMuk6yTzwG?;+St#_M;hnH9rYFMU8R(j%d!t>=|3gcYxPm{7qft34S+btIwkTquN zC;UU7L7LNLJY21-&=k}Wpj!y2N}-?p`%enwD>9T9u)zYGcY>>K1~?A#N5&pDldteT zW_gRCvQAAvTwNoa#$AR*;*HI}*bH-kc*CxE81(^$(`nXHiYFva$__PXjlw0A#R2a_7E1B`q@^mOZ1QjWhjv#+GVxFR)r1VpVuW* zPmqxIvZQLYiukql5oi;K1@Hc8!MXit687bedCkY09T^5I&%J~mzJV&fDz%s8lK&9W zc9Io?hKe?R-8I>Ib|mr8iaMoG(&{FpDGtPpUY>l!+K599OQ(c(9Ai6UuCOmWFeVCZ z+BpENVlUY`arD(HT0eY?VE>(7X16}JMaxQKK44swUz13&-d!?UoedQg1gN1oV zH}!rErP!_NQnc34=D1t;iHG!Jw2veY{uh(4ZNTSnxbK&&v=ailVphJs}!My~h4NJK{)0?3*|juGJ`U z?g}6aXUV7Rzbqc-x>Bu%RNGAg>NN-YYb+C*~wOZ`#38+4cgMjqHTP*C(PT5b8|_jiyqXBTt3`(zp=i? zw58HiP)8P8n8h3glY4OVWvlj>u>|5fAAjJ#aO8KXRM&f_E2K-1^; z%V!6@t^4=Pu2#wo6T3Tik#-TgNA>b#s5=h>N@)GvJ+=!b0hNH0w~xIQnE+-Wy(_(Q zBvkxbcE|7|FdN0wNW^*Ik-p?QDN?G0jP2bmPBR>i;W%)nN}7fbftw*NxNOMi)XCs3 znZXEE}IVOl;lAJ57AR7aX6Tuc1vqn`Syymmis>OT(kiB0|~R93EHzxYLpdi=X~dV_Q7dQc`5jfYCw>I1z{_!?pj2N{|Lypg9Kx9>^K%(TMzWi_)!trk z?T%f`ol%PqH^+7a`D|AITpXwWPC2e!7o!A`-{fOd3gbNKcLCxrT|E^L#Xu}bY5-i8 z4=v0#bcy-)LaoC&0V9_|opxFCz!A``1gk=2XZs;2uvs{ z6c=LuS+L1|qd+D%l_HCfSsOh`6ju@RGP>joChmn7oZGm;&;VZfC*^)|!bA4DoxM}-ocCDIo+yw>| zEOe7TSCv_G%U$SVK{dEmIl2HwRL@@&WrE{70J+kkCG_xJ_H=&SN#T*D)qq}DqJx_L z!ePJ?W(~QMfUZ2REJVG}!THI(I%)8ay*fP(&9$$q43dUL_6r#sY@Pa>PJ)9}`G+a_ zN?@AH>c`>jC8)Xk2Wr;CwnT1vOV_u{`M> z--6QAx4yJD?ce=1FAaoPK!aH8d0u=FQcstiEnKcJW6krf@Wq9<=?7*DmMarkV3xPZ zjotQ-V4msLms#aJSND-3Ab0aKm=D_nS&Q3@J` zch?Sl#p15Ncr0oHk_Cna4vj5Ryvq;BB(P)t=!a?$KvF|j1t?U$r(b_p_1v7H>}Ldm zS~cu++7Qk6_E62(4MQ53`am7axcAm;zPSQi(>(m7X(q6FnCzYS_$uZa=~ttwok}UR zohrbZa0_s&B~UHJPh#9AZNcf-cPP@$QM_$~DY-K`qrLUKn&v@ZK%PFl!gRo#vPP=) zbOuAPUO>72ywyW@9=(seJCO-_k zC0K)N>6tYqS7S|DaXO#}M(Z|(uJ&gGx#`hs((z&=>AsuVl}Qkg_MBlavK z&TL$MiPL!v+-BOmY!G*lRTw6w>4s+nOC(@ELJA()@F}qfwS~u(jay4-kuoJ!k&sK* zsP*DSL5FQ6_*5@>MWqRq=h1XvHR!CE9JlrY!HkLY`=)73v)Nw8qVJ`>(XC#u4EDA@8Hy zLhmcUBmPE}BE6|{8fqXcf&7=Q9iojRM2SGicu8b$;_pd(T>%OR2j=t4} z+=k`zj<|l9X1H`tsb6cKu(NF1rR3KXy?hjW+c){E*$ssp1sib$u^$!!Myh36ULc*p zYrd~Msjm3mQM~dt>Gr^LmI`k#A1R~=55_yi%b96s&Q860Ricq=Iy7`kZ+E79msFU#6QxA3_mg}6vCBDeJWvXtreJ{eM9Bf9>k*fizIhZy^4 z7Z6a?T?G#Fgezo_0LubX27J;y5%a{Azh4vEc$@jw!piRodpn*Al(S^(W|K~!2#>Fw zUfYtW425rI1{0xa@lg0GG$FhvxDg71THBPUl$h3m@38WB@F&)jFZLUuj5Ufh+){*E zYo2Sn6V<*)bDk2Og04imSVVp^aTXdj4&l>~C^Qxjm>|cKA0%v)us%-R=Ye=q;ZO1( zsE26H(acy!KVJ<Td zMI0dPB(G6A*c%LT0MN*?8ubCxP^A0HJ%Wp6RaEg@8)^w>_JStX7R zFb4$u4GYWDjCE5 ziTqEU7e788{3aLpH>R9*F72IRyg^jLN`2zid7)*Zeo*4awgW-~@Mc{?ii|%WiSgoDlQfz-fo7C zrJrYN3|zx*b1P^FMH6QZgTrF|m)+}5*ChDWjmQ4_u&S?Le@8oND*u7j(`zvWGd)mR zGjlQ~sbLE^dKPckNVpXy-z?F-^^A$=zxjDx*0i*pFGa8|`~At!z8Qt_Yn_9-XxhVF zwf|Trb4cQZ8jpi@-^x8z#pt{^D12{)JSRr`7C#yddNu`9ka}`!ZOP~drJwt z73{Ft-Lir*>pqA5{aYaGfmwE0(UD3A)JBaQQDo)!=;xh0kr0i4Dn8J+(n;shN87=8 zaz85_2OVM&8RSDkq2f^J<9A}~-x699@N?8H1@`|RIWwo{3tu?Z6OGQtVmdZx{X^nQ z$7d`0u|Tf_;F2&aU2EFlGr?znkxfEyf~4cU2HS6YzL-gmSB>{qd1w{JUf4|c)Ecf_ z3YE63gJ04>lA)1XkeKA_V6EU5;rDQ4%LGz;aJ_Kbn)T@IWrvRg*Z3Pu4t-ORpi^k1 zP_&jj{PuUdY*yt3*5#NpCP^;#1{AnSnhOFby2(%a{aNF@i{GP8*TmP=T009K>>9@D zhPKe7WlWq+rIDSDul6~{YCRiLSrX7?6pTO6xUqF9xG$?%i@cWubj_d#+Ip{jlsWCirI1oeU$kJclv_%A@cI1b&QG2UU^Cqj=dB! zJv71J?B(_6KkfWLTMvjcqMdj=yx0VTB75zrrWi+qhtFsFGp`dnkPgFgs+$$f`vmmwzI+c}B_`yqpFH&k@ z=d`RlBhGcrk#fi|>&W!x2uC(b<&1S#Sa`2hXM1XR)Kzoe+$PqVO{AvtaLGe3TV>Vc z*4v?g>{r!og)=_BK}r*THT*i2HW%rr`Yy`)SfY!DH*NXA3#~x2DYvT(eS9JERdK=L+R)wc<%K;_>n5*25n9q%N1sV=em#6B zsx8zxrfd5GZ5?yCK-TN(t-<~fZg^N(mdkvg%7dg{USPsPG0(~Q3b=O%OEU$*3*|8V89EUW+FF=;NSLS^>p=Pnc#B`ORKZ+g0=0#P_aLWVmLj$wO+&;gK}`s zF6G@su^qt&G>A#|2^sOd()Ev~X4M6E5#O;GCEBI1FmEdl+QW=cT-g0a1GK}iPgekq z9j4_-1kZB#_&Z#){3rC&Y5G>`+i7~NJCauANW_*b>(MTiWV%^3!Fq;XoTst$FPh9> z%q>LPvcez33hq}eu~Oqgh}de;=7H_#T*Dz<#QWv}Mr0SOdDb&Q%B5Z_HjxDQiUEYV9RI7v$h?!+h@24s2`5OHL@oy?cudodX=`n0S7s+W5yBu|q z<=4Lh$13@$_Mqdl0k_Pr)!Kct}} zgG&3Za&-lNhBFxG9p)o8|Y8YcN z_Qgk#M-81`i*o9jvB+80nfa6hEQ>KN3O##| zy=vIw@k54|{|*l)Z&eS@!Pz$S+(9j*Hj|@Je0xFP&zw2@_~b1G)bg=-n-L=KI5wMD z&7S%*QaUK3WyXnS@&^uHY2xZ_M!WT)`N%%13@pr^6Z|-0TWy_w|^ml@v#wIY(l+x9_TCxQ?u&S8Dq9qVM9hs(fhS(i{bB z0(H5jZ!_AiK%PiL#^y1_LT6KRrsd@oU(e6B<>Q9im7?0l%+dyvAKvD+rsPbke_r{u zv@F0Ztk2M8yW~>9$m;|R_|EvzYt4H;gwEjO2HVr5mgpQ7|-yI7q;S?qH2y2(!LQgho)kZ@FlTdE^RTDAzA4UTW;*2TSnkCYTW zg;m78u~dm4!*tr?hsWx)7Y0r*8SfV11Z|fL9@&Y^Z8$G66r&o9oFAPI3p%dBiNOXp z6~>CC|Dg59__I3%=aT6j%9*f^O%a1vBkhhad8aK0r!5m`?_w3bGSBo>58j>~e!b>o zBewR-$3SZ~CA*gU3P#O#F3PC;htJ$X^Ya2q3NYqS6T^F1ZrhxTvaTkEr+uOnHN1nl zFXp8*aJtS)xOK_t6SB1i?Dc8cW@<8-3v0a9eWJ9!J@KCHCvTT6R^9(yYkZ5ogZD-a zH_toicuC@_KriE2;!J$U7A@8p9XL7EJJmC+Zn(l;G3(Kn$4^?MY|ED)Rm+uEI{S4c z`87)y)bxqcYqRCW$B+-RXLSmKT@}ZsmkAm@I0G90!p9MZiBK)$MB}QDKAs0ug-!f@ zNMc9xOBv!}>>G-$zv&{m0___8$8}3d94~A!FYBtz)9m=Arlv7jEUoV-zP2zKSy5lx zD5q~V0v_`4P^7s`&8pn(n@lT8MZLUu3WZXym2kYIk{?KjOPtLxR_yW8IR`a3QcF#y z-C%7*d!{P;5MZMuKSQF90oRN2Hmr4>ZFJ|C=ET{@borO;hJCXiV$xdbRtV4;LK}!t z%N_ITll=I|;A2P_fpjhQ2m-FPHu5h2ChFtJhqBbsrN-G|1spG^t1Rp4`oT)uPrf9I z*D2X{Bj!v{pGKow>?zYead^_TD>3*d#j`tHx14VsRY6V=#Rxk(GD1YtIT z!bY_+J>+RE$A0CWuJd0zpt+#ezsS%X5+mX7*TXSh6%p&F0cPtUHrPa>yMO;eMh4+!p`?5J;}gW@J}*kM=Eo$#HtZ?XEV8*M^!mxg z<)Y1K(1_1wWE`t^4HR#g-q~$Tt)@<_Wopn5S`(j9o=*c~V_zo;45qhR`C4r#s-Q@Jz#=-)0!jN}YJGyqrcc?@I*NzQA@5Lf%V$-#KndnHHFy-{OyG)0TH~*rt zEjZie>BiV=J1POzCLw(`AxffkGu!bK=P;mROM}z-|5ABSGQh{!;QxI6A1p+3SF+x+9#rdG?^AwLG4zQeN%V-krUs zF@5_7PPBrsupV4Sev!7xoQ2)`0Tr{g)<{qfFr|Zo?kDsoGeKBJ2?&L&4c{fB*FS{Q z24T_jQgJX>t;K;~l48TNtX(PZ^Lgq`a@jXG2#E zLX}z+5cBfT7|V+wl{_PFDAFVo@EQ>oQybs9o4mULYi~V^Z?couk2hgBXqhUNSG!#; zx8v%^15!Ds{o}GtJ3Hti+ck07t~hyyYrazq9lMiZJ1Az=qR}RX)s)Rh-PMpFtb|n* z8VCP*Xl&=4?MjIA+iZBSR;CScE64m)G@SU@GIk!Htsor`^rPJXQRcVf!h7*?a+w~6 zyUh&lgk?UFNwC{38tP{id~*`3tZ^`4ieV+ZIW&bvlMMVb{5*B)D~x3>YM0b6?SnrK zePZo)Q;JfQ63jm|HdR!K!eWC{;QnczVUGbK;!|h6S1UmxqW^KY&Hb$-tylHdP+cpM z8eUzZ^oX1~%D`^j96DG}-{t`N}TN zu7)WYwSjRToi7k50U(F?&r!0Bp5+}=vCXryj9BZr*`ezEo{xy;2tEU*G&ba@9Ey+d zB4#2{&7~^&$k66mu0C67tWZgQwIQM%+*09OBGDPblV`GK$JA^jPrKiemTm#3N6GhF)tqR$%YKp1{^hz2JiPEs!B?HE|HsB=c0*Fx8 zKDvEZ$H9WoTe@_g#n!F1^j<=6e*8#Aa|mM=R`o$+K*71?04HFK)9o;!5xuoheygv} zH3_+g7nv2EXTgFp6mK3lrTF0T=u~o8f^n%Jqfg5;UvLx~vce{*V@vHn=*3R^|l~+zqygN56(_89vrFw~P_tZ3ET&z->2_{xu87;Y& zGWjkfvDf->=*I`y2z@RXRN=hx6~6MJ%sA7X+M($=UGI4q?0jW5zSeHqKxeN6Qp$F& zbnV*Ep2FBW=J{4nmE!a6C|e)=ZShZ?xc(#9`^eQjAIn@sMh#zNeV&DZKMN3ayTMuc zyx(SIQ3)?f;W*DTA7))}%?&1K9G*j_RnJ_dEf!!bZ~)e#ZNa9Y)0o;MhMRXHZ7Wj- zOn{5s%TZ-&lS2s))jiy?J(LplFqZ<-(P9nn5iGh$z3qWO6zhe;P-lS0xuB^6;ZX=L zsCp>o;f3W=80yn59BXe^njbUXeF-^KL@RIjjNXjLqOclW1R2T<5cT852oS1A8^d#5 z3TnfTan53|xPj8v?LDmRcIdr^-_XwsxQ@8`hL4mv_t;Y$7?wzdYsy*|)Ev#$aP>Cl zSThx>;!lsLptCg+G6XxYt|&8d_({$nv#heDB3zkcgY9#dglUpWXyGy(ee58$N>h`d z;km5Lxy$q;#5;_1p>;G9QUsFNdQ>}Y#(>t!oJ96`NmYqzYF26>mrXdEusf+z8VUIV za4S#?H8sict|Owf0_MAFAL7hrnm9huzR6|84y~x}>ne$qBByJ7yce3>0H%r+BqElY z8ZJ^gke)6}r43r>am_J!lk-R{ZI*ehV$E^{=o>V~ESs!HTxjL^b*H7qhJ#R*%elzB zR=tK9QJ}RmKUb_-kC@XgFtglC-8`*509MIyz+V5l?r7KX>yAtH4PPjq-6v74+m1%> zCeV}^GPVXx7v(E=+P#deTNUJ(2`-r{!b8%lsRHf}kyM{9ISGZ(;j^kRUH04^0?d$I z=MQKOw)w_ObLVfh&B(UB>AX^e(fbqmt9Dy2fGOI9k$0Y58R4nIqKYscaO8}3=Iys_ z!uIht>3L{imiCjeIyKM+zm0G$tGDseXcNVdXF_9|8l+&h-i~a93LQ?pGFGh^0^y$T zO&`y{0ki2xq(0CvgjimD<|UAFQONJCHeZKbYSHrF4Q=9-`DWL4gd2DiqtPvMZf+cI z?EBN1Z`+n;M>nj9Z;a>9XL=nl5aktbK!~313ScXr?aH}{+T1J;%HA8ZX8g_roj-Mk zNcwMOYgV{!a|`@=QgtV`rVkXi1JV84GtKwC7nwn*DQ0qF{%|{X)@wxxUEwE+L|VB1 z(4TPwW7cEy+YN4FVTJ9+wo^VC2m_3?Pwj`H3i}%o=zZfV14nApK#fZTb&LROI=c7A z>8GW^K|hy${&Wihl@+u;`k^I%Y#oo-L<@Ap}uPoVl1`U9};{X3a}Qx;$WJzF@49O%p# zeM0ui@MFd35WUz7fG~=W6Kk*H2UZl9K!TOR#({7w(DE-CALwy61hr%NIW(cLo|qE4 zdL-U)M44{$|B(0Q(QK}7|LE?ZgBGo#MNw51Lu%K!QS;PNl@L^vjwxbl2`Y+RRZ0!5 zO0?!ALK0IO5?f4rchsb2K`3?yB*tB1QJg#7{hsr_XPxz)v(E3&-#^-AS;_OwhCYI@!4^-GZG*eUlBOn&GLa9$QL#49{xEJ4lj zCA~*`pW>x@^Gk)luEPJ>GN@t=nftwftg^htR6Fh=USeWz;!%l#x+5tUP;C&qL#XZ* z__eH=qmNA3=?GsvsQu*30TKIv?NW*rk&+0VfnMIE5SYKP3cVQwEsa)dq#3N-cTek-8(}xyp>Vo((jKSpTM9 zawu)aUB=?h$<+cCIYQtuIkJ&_8rUW7zJYLTqjIuuOCdNNPg2DRCmFsUF|>t;t&a9I z&T-EOBkt(qK%dGYG^rfwHh9Ls$AspKGqoRWJeOak1_P^CsNoVAV@G8_s6dI}OkN_5 zbvxgmT=LQ1W1D6B$i%L_HyeDf z@g3yrE`%3MKN=~TJLT0U?dMn!B&hJqE*VT)8s}Y5vH;*hXXmNtnV7u_u7z(qzn(HV zm}jA;hZUp2Igk0*3ZQF+{Pt6W(Lj>t-v-R50$6b!aXAMM)KZAMdj3-oo}3&xP`Z z!`O2|uUjFtC2FBTNNo{?-9g+JCBKuMNqlFZE&s^GlLweC^DA4imVoX;8~y2gYfCw; zVfVW00pC`jx{$e`gZ0FMzKgtRkUjjfO4RMOLHx@eFwKyQ2A~{vt?aAw_1n zbM3z-5pG+!Bh0i!KInB2CJ?GDJgNa^Hb)^xZQ%&7`Kt@hh4Ga?O~(YT3shm)&`*yW zLD)jwg2<}Xs$`71FzKer?xG{`&MXc^oNy}=UBABaGtO`zo_QMNI>acg3Z0Oa`O*IJ z1IL5x2kSn4|EFhj`VOE2y}vQJ;Wz6x{{6}RQ_F7$v}{IM>^y}$P9#5h``q+1pYM=o zFK5_c56j;3-eF7xqbc8_f0>)^iT*`&s>jq=bf%})wqpn5!+nG48qJATJ|~~)(`40v zo_*SEcQJq!0$Vw^#=IsnKn&CzV0Nd|KuJ_CS!cqq-*~0-{n|+48M~&!DcY-yt>*qb z_&;jif}($%SH%@lz89BWmvVJa{!m!+I`(=)A^gDXCh{!!V@4b7Z(q}OOG}ip)P`r_ zTS9;Ps`#yz#!*W_QXf%*dS&Pgcuqa06a(zy+w8 zcv0wVD&!amU4WWNBSL4>n(Vsavc>qV(Lo`tmVY%4i2FT4p0FcFhnL=WFB_GUf^#4# z(_A%P%TQU&CyCy_m9SS5Z^!Y&E=qlS*|aV5ZhTySr;^o2bIiqiS0>1kb#Z>${cm@z z>1{%VLi7UXt&*-VC+&!jR~> z9Zqax0dwfw#Y|QZeD{K0NEkjkhBU{Gif1e(G2f1P4 zJOKOW_l>zoQiMGv0(*Ky&R$cT7nX+e z<0{L?=%+v)5c`!)vOSJ^#2CB1_r(Is4yNBj#n=51Ao3%UN_7kB@J ziM@sdWV5X08E(X3RZZ7lr07wM-<~3-~)-!s$um)kSp6Z>BTD`zoE(52<3Zh&HgFjSwk;W~PT(9WVf5nE6{2L~GR_RFx*1WT{XCCMNhK?-SdJX1=LYk zouW9{oOz4MPj$%<3_fj%JUjal;tH*X{rzOd3_g5veQCc)2Cw#wHHH5qR_)%4w^Lyw zk_eg^2WAsv2VXf^&!k$MWR%;uArsMG6uZ0oK5LD99T@rDBpD+318S|~U>ZFCG%?sL zH~{4G-Tu%97!|H#_D|m~HYIOmhr)($*3Y%r|Ml6pkU;#rqzFrW@pdt02Lg-^AjFka zB3Nfc_=n0bv`5hwmebVE4;)}QSWwjh&AMSp2g?6?SJ4nH+4D8Q)bWq~Ltju28p;o_ zJfS9qE&qfs)rhW8nC<>2z$~v$doG%J}Xz z@zdH_RINQC=lF(QklBRcQusd!GlyWEyS;p0`z0dVY{Gg%Pk^?`l8kgjK|)`olfZIb z_P|L)B3>;0<$xdqWQKwN_^a{l7wN4k{FdGIk-(`ffOUZXYIl7b%~D@&%Ii3&H}L12 z5;>d=U+N@eZN9csh3-)uIs#Qg5sjode&j$TJpF1p-dQrp4VIt@!+ z>gk`4Z=~2kosW7n{-)M>##DI|xGwz1QxvdUF~?UAu4@V-J}-Q6X#1rvd`G`-8<>c8 z3HTVnUQ8n9xN+F;F_RNo7(B+n_(v#aIDBY}!KxAeu;2ow5~FDBOiP-eX3ux7bcyh{ zs&7#}oea78dyMnnRv5z140d2)dBbA*VGJ@)IQX3^ zTDs+IlO{K~D-E8BJWi7F;kd>niIX(|7$_$}F}(`_K^^mnQT5o0PWi?BKwF8^6kZS`3{?-y))i6_=|Vtv{FsGmspO3R4)V zng`g!ePanXPT$r{S@Y2^oSA>dcW4HZlAgW7f; z4{7@}PHv@qm{i?pbL+hICr;YOaW=%;+jg{3GVg6C7Xi&8!x%2TITJ`!A3Unc)iKur zS6Qy&_EyxZ-q2;}PY|nwLy_j2u22UcEYXcJzVo@T}Q7Vw?UD6j4hVJwmg` znc6Krp}(anRz1@<$DX}qA>=#CMmuC$!5gW)6p&1kh0sp z-A={Wk0z608g4e8S^pRCK&7`+mNeGxPDr5EDB=*4)8VH*rEzQKoIGHsQt)Y$^Uk0K zKoK?e_7gq`vaSP|5c5EZmx^%GwP(0HV`r<+OYp+s*mp(Gxs}?SWZF>c~q)3%4^%!{^h`dP8Rx zYVjYHzMxm~u4R>9ozlTP#TcK_&R{opPN+|fiEe3sCl=5uyXc&;!QCaGXMkBB23i4@ zxOXX@3UPC=_W!^6KX_+UW(Qjso(8r_>I&pRUJvjyb1)>zlR?$*0wk%d|3ZNIQoAU? z{EXcF|KOzLvV;8)82k#Ooarz;a{Vr~j#d7Irz)!dwLh_wCTlIdNY&@;vQ%QZ&HF0VeP>nam~ts;owz4x$K3nr7YB956t7xck+= zS=;iJHk4ydRKiVLnAi=vt)3G$ptOel--k_n^h50fs^nir9JD!9-CK?h-t$E1@P!9vf%`jLgvqfeib-0&LBs zTT7~i(RgC#XcYAG=4S^p(XoNNdoXyVccC=t*{YT$xsGXrf@B7G=)w^N0UleWA^3pk z)2cK!gW;8SVNvkq`RynJ>`@1Hw~RH_M`qK}&c7ww*XwyG)}#*Wu9y7F zg8d8k7a&*!cCYDi({#n`pJ7GVt)|MR$pu*jR?cTWcis~CFVrmT#oCDyi=?hhCr*9a zqik4QEvUZMKH;evTFB)s7}3Y4PVKjv2{TSnd+79R-gj5sfrSFyM}fqAf^|ziC4Bu9 zZ$1K(@Nli6B-h5^O#6w4CTE<#?CGx-4J`bJbm`8tsqz;YJ}*KUx+h5XJLJ5d#~;d4 z>OG$OgCI3VfTSxuU_6-Gq*bFk;z4QXcvEKaV{7qi05uaBy30(&gz1DCc(!9;mvneJ z-we4O_uut~9%JVQHhv-feNA3D;ppQae^N_+;9$#Boj*t2qO-&0jDu2~B3HAvgaevP zR?P{Vm%XPq9Y}^h%x7_}cf0QB*-$9A$)Zew`shtr#)M{oMWI-OnJ<&*tWkT1p2$Dy ze6V(DBT2F6wCB~5x>sYWkJybiJn}*mb?h-a2nFi(?RG=2#qB)w!#}kH@C75WxY9QBWQOT!bDfh=0c;rZf@dT#W8{ zvl@7IlnLiB7rJ^U$&U-WtnTl;OjnA~HF&8yB9ZbA(Dly+c$w zKUESb={I|F*Ustr=gWH7v%Jszo2aXuUPCFN^>@g(_yPrD z%bq1IWg%RPD9NQo!lm+Pn#UI2AnIA?e+~aVqmLTX=Pa#Ntz{#vUajRYYNzKdRVVk? z(>J%eYw)leIo_`mVb^j@@1!0Dqd&pnwC->{qH*{1ch7@dw+Qh$^?6bY#w5nllV0a{Gt!IZa2!ckk}yM*(PDykh2ZhA#avo>xj9#36U zQ^*H9A9OkLRRyR8`hqCd7AxJT(U|D-_L=}< z*d6z8SMTT#34>q4r~6Cgkt2hIq!@?}hY6Q@eVw-pSH0t!M;k3a`!9sGhA-DgcQ09p zOaGW&0X~XrBV|gJ7K)Po!MtK!%0TT#B;SmhT(zQ=;!Ld<^XR(~2bTJ~&K0jBpynju zk;ScLH<1P;J-$b$|6m&#SMEOtvrR|JkTuNFVcwRbtZEEbKes|>FkNu%OKwnKN37J7 zigr=h4d(C&{1$U)IlHJOFevg%Tkp{K!*)-uu3gfZi%Qv)dzY~_Y-&S!r^q;8cZXB~ z$#l=_F+SgZ=CHz+FxktMrpl-7n(87N*5H>a8SgFssxy8e4$GI;YV&Lp6^`)(Q*SzfIrp3(Et@Dh% zkl#j@R`!Xu*J`#&N<9skm$ZGpg7j_4uNsG3w%av0;AGeIta1f*q%7qRV#MVo1tF!~Z@q znRgg(weF_s$o~bRcGrI=X=C=YPO}bqYw2616~Cc8$Lwa=u%x^-^evr=ODNQyz50)H zNMkNS8aAAck!77_9rixqeW&tarHzM!2cfLEtdr}qr^m{{Qr!hGa9KONRe;fcaW92| z`L~!;`U8G`-4X9}W<_WJ)KcLYT|tG)+?8sJ?AkuyW_!H;$jEW0ZB?!dl3 z7h}Tm1|^&@frhnhNO>rEChMnfCTq`-Dj0C#w?dAL7Ui9dcDOCUQtO_HNkXy06M6W` z2a>1qR~MDhdhfCRshJH^Jvejp$@jgNL>=6;{V6Y>y&q_XJx#wo@j3$wDwK9OmULFz zWYOG`5V&Y`NJI~`2MJi&wf&0T z)h89%Pa)+|>Xr}mv>$YeI)5z{2Z=1;A9EldYc%^j;&b7i5RtEO|6F0cAG`@ix#peg zckw{offD>6{A>Uf(9)0vtI_}XHIGgGV*KlS<`@ua@sttdm2x}#M*LS3>Q#!JN}f%n zU1Val^WOHF&Ey@bduxMo@5_nR;?v+=Hvj{<=gJ>JB&jUp4`Zrg;T;%3i{Yv2B{Ob@ z4p(OnN}`smkeUdQPuV(*`C6I-ZVs7l6D6k%hP@XutSy~O&B&G_Ig_AM@JZ?1n`U_6 zp6To6&z|uz{vh_=rGl(egZ*RLHvnd%V$*52xFY!Hy>Vd_XI~ua>}aqHU7%10>yW-}jeH-I&^%B+KV6#4T0EevCe7`EBi##iQ#fhE|-`mKzsWLb1cxe>b3>@iFT*B}^Ye=wG& z^$Yt*@>$?8n4^-FP_%3F^LzZCFsfwxy%qDhQZ_0v1u4M`AB+)L5#Ml}-!|8WcrP1+kXRe)%A>fs3i{ zsJsxJ%}a|2V2$jn8gMp`wQtrOyt{OZb8xfZPoEl(0D(k}c3*nyx?fyn{ymAJZ4;wM zj49JMb}6tKq-Ie!|2EpAvbu;lSV30CT#$K~qLsuM2~rZ-zC)#p#D@z2A!^|_>;<_8 zZyY}N&wLJC*cS>^EQ(zRt~o!kYKgJxGj+~1rS7eBM#~l)jbB;gkXD zqS#lu^BK4TDje>O8ZY{tepu>oNc8Dlb)SPm!V8W^4-9j`YYYrS^L$$hI=hZ8%c3ml zmr7#Vx7Aq=w&(2=6*MepVcoIfrfR~ll;p#+2ZAaeKMEmMUWfh3`P7~RDh1-$-g{~T zX6NIN9tZ-xM88dLyTg}rHPub?r#_oH_l~TMj6d!~wfpwQzPM?`8jG5&mPV7y^+Ba% zURXCZGafKLs-Q6&KB1d6ikLCQ8@=rKXFRBNe>hA zj2@p)JkzTqyK)@W8|&MWA%uxx?*w+vTfGNEe) zXP$~Jo$q}}>r~{(xyDpX$AcPdsODboE*K;VeIDJmd$v`v93 zUn4h95Rn@g9U9paKwsp^i{S1(H1X_qvUJ7Z{@Dt>*m3*lvIrxOy|#wPt+vV1b6eX! z=foXO(ZQhzUL^xq*@PWVjF^Ai_0IDYTy^D#PBNBG2c6{}I}uWuD-;=+lwRKvmA~3! zWHUN!#BJLP3_lo$9XR!Y3Hxx-*^7b?XLS@xxxA0Y1dJ??Y-?wSfX9-bm8{tFHWeQtU)7y?!1 z`v;QznYWVxHKOz@P-m9%^0+ynsbBfWC$9FH#()@^Ir)xg@*kdjvulL=Y;o;AEALqlLk0%E?g(Z z)L~kfYeoA!WkTJgaAGSc5i51n#8BtDhf}t8Pwi^Aj1vB||I2@A2Hf2Q`Ov*m!SGh- zlk3qdRtqJqjCmQPUhB-S2T8T1+yYL%svmXrLZXmSM#1C&O3k&L>3TRor#C@l1_Ti!&&6#^d?)Hv%E^L= z9iXpk^;D(h1TW8WTinK^p5s$MSAl-Cn3>p>5}05B7FaIu!GH|Ur$d~fNiVBhqBPPc z_g4)x{tdLKbaBdEI!34$rBv%E344vRt>H3qh-=Zk75t^6^;ZCsoxOu(@u=dj!&x4H zD|uT=i{5x5!OE6NF0^fz;hB8{v<2RFJs^!hPy%&w$^%7nh*LnGO{e~gMpQb&{2xt= zfa%KgKHE{-h>dcKlZ!6Nv>H6vrM~7}L6olz{!gujo@>s%>t_HD$6q{0rPVf!3>;(h zlv=Z2K(ug0k|y;=KSYTAT_Jp|qV4cA0TC>M*1vH_!x=w$3>ej>UC>M!((9*7t*y14 zgI$s{R`~w>E8bbpKo7cKA9=+deKo7b#$E&cJc0CCXSQmjw5Uhbc#6$2-x%4{l@aCc3RI(1CFu1t~eWkQHNt-J60;q`^xg{XV{J8UVV-8 zSA2=!bX3)_)7F0ec}ZH&dfw;&)P?h!f=SK~Vgn#;QBLYB-gKk32#_i10EEx2{-(WK zql2j$5iyv41)1nj!^BTC6WEOjCHt@SQxtyQ3k;9B!40N{Gib|$n@2}f^pfXATDSXn@3)>uuxeIPR-_>kKPNF z3yN50Vg56y$OJJ9O*Q|CZLYB+#r+SB%0Nz}nVphjVUcq&m|E5B56UvLEp#X(v={$0 zhB31*bi7yu5_LMWyFB=sf`A3ag4n8^hW)6E2<@RTB3l@U_%m^DBWXiTm>~8ud2e;g z`jPefu~`vC3SH-FT!n@<>#4E$E0E)EL57DqRjAVY+hE1Hqf5M>5 z`AUL|3snnBtIna1G>tqfC$I6s`2T&L=4!krUo}6i?S~u3kd~o~VcF7h7W@mA_M73x zx+3NrKL2EUYv^QN0PO+tR!Z~Z;v(>53Wr-i^bU~RWEpj@R0kXm5Uaw3u|VN@)%gvlsGYzLwM*bG)?us_E_ftG1W+ zM=ve>VB~yqt2f(BqGh>}Ub54R%yD2w=(1$EYR_xtUqo#R-|9bR0oUs4CC>tGHYja1 z?bouVom*0-Y5`<3;}LO0S@YHrLd0|;<%2bw){+h(g*rpZEQ77wr>he4ZL*$_LqZAv zgUNtrL}bMO|K7_u#fymV0%-bw((eK~8C~IgV|9?j=MRB$DkTT5)ioI$Hy33-H`)Vk zsrx_Ccv$}`AK0@-tR)a?U@?uDZ7fS+R-OQ2$^lDg-vejuAEM~rI>0(Jkzh<6ZRKAF zWAi-Jre+f8&f@U7f49>b3!H7vY-rW{+EHWWmBm)RGXcR=IPdw#6Y{ru>~iK^MT9m9 z)T-?v_QF8|gkKwDmXLDlbrt0Syx;YEa`U zh*MdF`=zdtF8_|Ou_&*-riAC3Dl54ZlryY5XvaGcwWhTtpRuQSYkDQjzh`S zc~7_8WT6&+tMHnZnLNYQJrPp2K*U<`?jj`Kj82=9D97{tJ-4|1_0+&ynH$Y^hgHCs znL;%UP3J_2Y%F2b78*wmZD-=oDInh3MNSX_8y)gI7rJ(j|00+Pd@vVr`W8+&eQO}w zvv0+z5`fr>pAuZ&KC|AiIVsQRXecgn9}0A=wWAJUBCO3&v0rAd4_57&_$1JqeTVhv zVdMrq2ce3{2>T)2qJ^oRuPNM_F?A2iTg6~W!)V^lMK}lKSkOVXB7Fm5&HE)wKrJ;a z^n^Gj=?eQbB_yWq2P_KmVX%{0}Vx&J68t80X827gyE=jkxS(>B{qoW`ik})6wAoLD`Ifc4D-00N+EI; zUV?pR1sFDv{-H6ggcR0b4#e*DP*58%ib1ooI~<3m%fIPh>*^Z~o8oVAV;$x-u#Ecr zY`~iI_W?NP(6mCt@f_;@>%au3`C5M3^#HT+BBP-o?{-@tl0KzZRo__JWuWu4Ra#eUt=2l5YoUx0mtEr>C}m0Nw>vky4JwtgFjHO7VYj_Zv|L0rqxrMVm4G$ zK-ar%%FrfQID3l_8VXolmRF+(c728crM4l3usM%W`rC=Sru0@KK0cl~6*Tcp)5pH- z(~if{3V}IzQ&;$3LmH5o1Z8>T!M}f(x_J}srAF~1wlwq&ibBADAh!Emm&U%2sI@M? zoc|KlR5dDQo#2AaZTl-M8!7tG~u(tN_79g4j9-6VCSJK zl$xZVRvoG7%Y&4|ZhkBWsqRysDGr|c4!0aO$KaA=te?pdpQp}^AXdb5N~-}#^e!wN z^?6#~4;*;tpv9Mv2RV&JW1+k1Oc!RV)joH*+Do&i{Ubj`wTyK4n*Kf)J@81*hEQO+ z7S{#)qcmUbC}hC3&kNDno&E`2u77~MeR2Ua?)alJ)J^R3bu15#OS|0|cq;5+bN0+D zc!rOGw{uTf_KY>GiGDAvOjMap3Q}A1$0rr0IF{P!to3{p5sL3qlhEcGt#a=YcZ+P6y+eir%}LZ~|isMUf4r}90#BX;1HX={3B z4<=$zN-(IS@32BwD3F*m5s{=oDA$l}01JXKAN}ad?Xwif=nL)i;|R}1El!DCN#Jj8 zr#<&`^Vu^*mL_yIcrBRrHp}#!bT4Kzz1q(f!-ADes>hY%l~Km`1cloTsl;9mG2O5HgVNCI-7tR&LqcuykdkLe%mIZM3P3Y06sO;-2No$ zCW8BRCYc7eBIVjp&9I8`7lL+{YI~8ZP&~@ji}LNdkE*KD!o}y789`DOD=~MUwpZST z^z^N2T77I{XR45U)2fCBdx%5mx}DS9Q_G+Nu`U%%{) z5S7wDHTP&~7R~vDdkPh+>Ne}~2CVhYBhGQykwb@56V>I@t=K8B-ze(`Z0};VQ#9h4 z7d?pQJM5083%>;p+v^@E$?*RrxM)eNz;pKH&?!`CYVO}I-n4b9go2ov9(IhDe{u>Xcbcxcuq zvZJ{QSNmMVTn+LjdgG9BwQwND66I!L@EgsZloHKcOMUD4yfceA^ggQ4tjW#66Uy}g z{3PQMN_Y|Llbw9ECba;zbPRkQ>Z|s+)){(^eRyy12XE}DQ+R7D-rI4sk)Ai1s~=hk zs%n20h;j86TMHdPr$qnRln{7VOP;Tb7j#iDD zFn5DF=>e0h!(X&}){n5YYex4HAJUH^F8GZ<%SKW99v=P1b5o%@dWu88wuXxl{q!~}6 zFi^Fys47;4Q3^X6)tfQVi*cOwxD-NSxpohMkW1vS6T^zKw@JJMY3B9htg$D;#9p(cK;^!pxTO*3aP*W*k=Z?}}1 z8toii0tLOqz12za-O|goDy7@+txcjcN)~IwRxo;v&E9LiMNiq+37!)%1}Pd~k&$?C z@`Q{R{02_lqqWUu%?f{Z{$^pXGAH(IZRK#5iN*5W7V|%cIon}=zxPT=OLWXTODPsP zi^Hg6E{Vi#3*Y73AZ0ef9Sc+tcDom|ZKzwY6X`(WwD(%t4s_bXkfPy}MIY`MWS{z? zL@~LLWe!`u3(ggs3CMy}*W_ZF~#oTA0>a?sm$yQ4c8)%x3o; zjV$u!=2>bj9x**>U3YguPikeS;LK6cDC37d=Mbk(x9h`hJ#3qzAm+8K;S4Q%X|!kZ zmAea`M#4#Y)}d>hr#4heR=RTJ!=a$Cmy^BnfzH>Rtr{j`op{uYiD-vS^G30bcLg#9 zAJ;>k^QD}JLynn%vh=UN-iK%wrkrz&0OLJRV3@S7Z|Qm0=*7$7(lB0&;dy%vwnCuC zQ*ck^Yg@Cb@Rm|?<)wCzQ|H(8Q^b4cuOSF{9K_&!q%P#-`Lz=cV$9D>nK~c*hIpNB z0$Gvhy!bHW{xIjr=Drxst>N-lI6Q?>iRUKYj);nNK2J_b>d%kcjlFh1=sA!@TTgw9 z-fLPibyLb+#u5$%cXo&v84OgeOzXpLRFuBM-sdVuk|WRsaRhHNU7a!%YGOF@BFPKm0mT;1EyiiPonnUUzP9wvtkcU~mF{&IxbV5)&cbz|_Jflp4^8}-?MtBIUY>X4Y2wO{!B>)=HuvEpT5+4qE7 zsJ1@f0?duxs;bw1%)x(qK$6Is(jh#rY9~zWG{+=mr;8ZeAPa2B6(hgW6n8>FOEzD$ z*zo{eN6(;|xi9VJzOu$U5y9r|6{y4Iuw`J-)13NrXfar_q$Ck}Mdo6FP53|0P)QVV zb(6EbLMaQX1zBeQT+dGkh0PJ-1-FoUvs zjrNRx@p8KSkR|zLPytxD3$s|*JuuLJ{&8sok}j;v^e@<-3{4tT6r}EAiP>-0jnn7) z**x1{#nLzCmdSZW$hm#Sj7|4BQ9igdC73VTK!uO75JPWhjch8O= zyh9o=21GNSk<*J@oIDbVDpO6Bhuu=2-K5%_Y*kGcf-kRjnWQ{!Q6RMU+lQLTQ`H`} z7`n`M!e>qo6)JC@uJ7BGy7!z!>ibmAUYe|blo$3mw{??VF7H-b)39D{^6$P1nRJwf z8{7e(Ma;1IqX`sh4@Jh0bq`UNRZ)Vh5cI;pGz0i*sRVrqIV^i2iiElduVCH0c0Hi7 z1Q|wZMM1d-hssB@5f>w>Z+f0t1UnerqUxGfuZK@b6mRCp-Ls#_ zbrU+yz%a#T0$b@}vqu|VU7+eWeg(%Z6@cA?>bnm@7N8%QbQL@_QC@0!IAnC4W;)aSVu&jml5sN+=J>}I!1fkHOI7$ zsd9;s1CL2`Z10l^G^!8g{TN?Mt|DWtc#jdz8hc!wU$83W)ZUnx11*Fc^0 zkj7AAaCh`HpjLMI=^;lhDS*6S5cUe9DD7N(E7N>{DiOK(o!34!@vASQ% zf3cJOX&CD-lcU;dS4}qZOGl(QkaZBp|6{q>PV^;@cZ7A#^P~KOf4$xHA@wLC7%6yO zX>Qmbk&K$AfM-g-$kZ(oWlF&ok1BMVQhi*PjKK$GqBvZ%3I}=~8>Apa3Z}nWiz>x( zo1rFYvYYFy_^o_yZkB7MWj?j8M_yVjq zz79vksSnyR0;o>QhB*1$vQoRSyJ?@pbjQh{qw$aGYYwE1-3;Kx)51U4QN`TWFk?Xf zUj$SsD_dhOPmbRfGIUSrIp<`IIcgUjEdI|JX7p0uT(&N&0K7>)XB{EU)}RiLyBQWJ z!75yt1rz21L4(QLO_xQ_Yn~TrP5x0=@y_}dJPVCkx5yKRY{Kj5orvMG%I1>@hET9{ zj$?9g>MOGGil-~B1pIMts!)04_ED3mwNAMXWd<5>r(PSh8zE5af)Xr}r;Dguqubrs zvb?(IY$>5zrvEYL4aCuNDgM$Ek1=@zL@<+HvL{|F7ukDXql}8;AzFc10=l&Ws>svz(QP#O%>bSg!f?HB zwf-sk4*ecb9@tV(tPjvRloM;&9joDm0r6lHJa44VVQi(<`^Vp#i4E+>X-K=_a;gpJeGU%kAqW06M9IaeCfZE_m&RSt$ zZb4g?rZ_;$It`J{Vvg|}Vt5hChcqO~$*;O(kbdmehK$$5ImC<%YJ{Ye-5-tx!B1-< z>%@&%Z^^?8Wl-KFjb#tUheW17HO^X}9Z_VC?~i7f^Db`G;L|7{%(5cznkLEmZJ0-88+mc0xXG0+z@o7K z?8UDrT9@k{s9zMg1be7E8FBJH9MpWB!|P6 zGyzPovM&ZA78=B+_Io7W>E!~$uuVv(x#Jn?GS=i zGMY9$8xdKQHRkd_+FcS=D%BICXZ8s)Fv0Atn@(`MmUTP(wjGr+@`1Cvi#m3! z=ZlGkbc7xKLL*l{A`eqS)=97I2E86b$mKG1@{5M!xgE!+MMj7rdX*k9lY)TX)v8-v0FVkQ;vMGL)+Lr*0vcP5NtiDGg9?gDov=D zUG?q;y6kW!bvJ7fU7qw9wk|gqDPQzBAduw>v(}F0MCbJG%12)P94ZGCYuJ!fxjz12 zss3N9PG}vKk>4l295-lprO+EZR-+I8`^}dt22LlyyqJ2ze2CtL@W>11;Sj-i)Hwq* zZ8R`3huiO(H%7VFTcwJoKJvSVR!h6bp zFE=;|+McMfqQmmK<61puy1jot0pr9K?ZJ5?4(z>ng(FD_4GWk$-D;gp8%6QyawZ1a zzE0YG5k+&}!N9$$l732~nf?ndx(>@vt)x7kpTY4pP#&a!nw~yl07I*fFsbL@4LgYP zhI^p;NRzmgM;BF;EH+&v42$G@=Ik(6)AIF$uP6l51zQn>+;Y@@T=e7BdfB0=ifG%_ zT5ou*+}hxuGn6FkY%-SC>?3q^qtw#PD9&m5*{j4Re)B~99L5=$R!rge(tR%`TU9nHj^iDxX>^eA$Nx(oDwO^_e0ysdJ;QaFkF8ulq zAEwNGamK(q3%uZ2J7;Q=x?c`m;K!oN3Nb&dd-P-&KMEDrd13nQe8;JZX#fF75AERt zSr{Q(FFU()>tfSB+kh#vy2DVHB~fJgqg&EK6Pkq_>@9`HN<45k(3=aPr{M$eWJ6g*iH>dHJEgS;9i&D{FB z#_r~VZCZ?kz;S6s8_FTf#d$tn2|Q{cz0ox$O9*X7#DS4<2&?H}baUgKrY=aul@n!w z>st{Y-Haz)U%T@n?z`5N)%29{UN(9FlsZsj1PztN#WC7a5G!RttRrp!G^P;QY^p|< zn+wz{$dQ@H_9hMY5gEv&aKA?SX3^%Y?xD!ak)xBctIc+m6&Oby2D z&T?^oaG~`z@2{vUN%;homZ8fd=R-G+ti2q5YWHvr)X48PdTKKtu9ePAMr2O+jQo8h zvXtH&?=8216EtcHtC|De&Wk{hLM=G!JG`{V^>x;3>L+$nQRvG!L0{j)wd~=r>7#?> z(GSwMZ@j2{A93sc1fixuRo;1#K+m9$#DtFConyH0JP;v)%qb^Y|8?jdH!IIfnjKG^mgWT=v|&V*F_mz+J?A&+nupe3(?elpeb7Y2^0WfTKbEFv1;)sPUdJzkDp>yg?dzOq_EazOwmD z%Yr*C!C|?g*2yvPw8e{f1|c+(+T7eZGNH}T{1(fmOHlA+Ew6LZgQW0MWS#xsor#S` zys3qLL>20@@at|?b8%ha(mV0|>HOOe^R2 zxFNu8+@lMfNW-ppJX_h#LBbejgwbMjS-HZGtp`*jc0%*s|8w0cb>5Dq3Xtwr`ooN= z%d}_oU0iwgaB+(I1J?>5R2MELI+s2IZeXgRq4c}g2;cH!^Yn&p{DLJ`L_;C*V5yxB zmO4;SnQS*l-v|wUZV>0G^=M%bbQ@wOkdgP2-*$$#rb6q_LyVodlE==!8g>)lvn85W z~LA|F(SYS$BlYF)*;4z6NTOD zo||b@K|CK1bbL$wFpfzzZO60^7DyL~nunx}{ zmd2tf+tujKUS$huY-ca?zQ%WAtFF~(69tal-B?`LkSar2zUN1%xO>1BUUAV#qt5{O zD(VVcWBzQ>7Vh7+crk(;F%W`Vqm@Lbt&i$YY9~z)4Ylf@Onfp7e1C!d!1Vp$TMR#fwkmX8f{F>3$Gx&38(ZohCvzcOXeD>s-(GjTC}-Lk!Z6&NuHn) z^MA1Ro>5I_ZQHlKU_lUJ1OXM1Py(Yg0qIRaAfbqKMMDV$W*~rsrW6qn6eU6FNeqP0 zB#vjW$%3+=W+gy{w`gx{%3&I zzsa}V*7{UL|7MC^Epk=~pD0V0++#nA^HC{cIEua&fL6)^$eFw6iV{A#7?A_6+?E8C z85)xU{ge_mBv;u&7H>kd_dTZka0!j}HDYc;=PQn3ZJ@#Aty$by&0%m?*v`Z-pN%w5 zrtxHq`Mmk5=+EU^LXkZgt{UW&YRO1la$EG`>?^Ed#; z<5t|9o4k3ZdZct?1!7|tv5m2#ckq{&8pP(^}31#JwtQ=PQ|m}%&ys1@)TIwE3E6)-#kgAdytv+(Y}mH5v7oRy=A`bFsSkm7QIf_q@Q zlaYFKBb4>Q{wqf#R!G4y_|NUQrop-$kh|q)-(u^?0&wiF3V>oAfThFLhsm}6M%ika zfxTgKfvUqfRGTLtFiX4&oGG)G4puwpZpBCUxkh_+L=S2Z1a?Yg9w=;9Nt#dESLQEv zh!uej&x_jCnzovAz!}mq{k`^tJWe@? zHeikF>7>xQKUAex+{_<27gM%<{@~=$uo$G6gO@Th6d6&+PcDpLE5$e)@CZj}2(2eFYe#v-ybaP%gqeAJiQT^gl@u5@8 zbe&pZkug-W^l3x8Ft+v$V^Te5-5OHI-gYiH!&mAnM>pG5GJ2>N;1*Cn0G;TP8Vr3J zefPx1+86Ilpcg*nCD=(Rj1imLjlSxx4Gjp1u!(_(h!ow;`k;(2ckkj%mZTQ*BW9y2 zwh6y&tPPK4#cf5X=RrK6aggdEy?63PEfI^a?jOedQ6XtAi2o76k(a=@vQEw^Mxe4HaM_KJSaP>X~=SQm^-&mVn7ltkA@pMo8T&@ZRE$B7YHPEY#T5~)v z3u&+!M;i7<(PMDLvQ{XRh+r!dVDT(>)CQabpM`7se#JaEyfGLp;rF7G z<2F;Si1fc~fg3pqld4mZ=@GE;D>@(7bndNmm^B%{>)4rk85bltTXW~x&a)*ntSOT> zCn;zsVtX_GePU_iAqCyn&GlygPa7x^J!R~WxRC6gDxA2=9fOd<2hW2Q?|7A2;^O^o zv!)NBqaB8|iKvQpO*{uTs-1S`P%oMe?Dk>Ud+Fm#yiMVW#p0g&4z+$@<=C6 z%LQg6lWtP{VKW;uAvLH;d-{f#HZ!CMUlO8TUDgo}Z;df&_I+$*UM)!YCNt~_i8RT_ z68mH@;>iT_h0Wa9+z^ z0ZFFE4dOTAX28j0WZh5VJItiHs^jw)h=brH zB=kmi9*lX3*DS=BTz-9?jQG!RfY>rlS? zC}XffwD$Aj{XeYV@T_OVIO)srW_u>{dMZZGf>({9e`j9G1b;Gg89a6%DuyJ7jwgEC ze7OcF?2Z~@ojUmC_jobuFM9u+$NY$2%m+p90Jq)ep|i3He+}?N0>_11bz;HC!#duw zz4Vh9WIWRP%UIQ3lJyKv08~E#Z^llS^YV6qa*aJbZ|6o?xJ+s9`#BY)#gt)4kuYk| zKrLxv)@#tgvbWMqo!gI4v27%8yAw8H{{mUfm@@6uJaCdwo;PKh^OawxK@UBqG9t!~ zmy2kB1)5M=tk!Ad@}F@{XNK}zZ6~L0wO>_;ah`3iApCoDvYb{z(-B>Ouan)Sm06qP z=LEJuN7fF0ryo6yU&+Yrex4hsI{}-_3xuwa!Ln}el*c_p>L?SZQakTN<3;S{pr(Kivp*Ie~ zuep#8ovO#!#=S4!wo(1nko-Da4{n#8s5!sEEI*V+be^cgNPQD|8(s9DF)Z;-QQf$= z`K6+>!O=-FLw2JfB&mL;;+wEC$U^bbR?-M&|62L<1?Rkb0tJ6xM<$)mn`_!1Y5OoH zwrJH`!~Sb^Ls+4ZLRhS`waLlG@WSqsFM3|T@Rz(uEM^qq`E*eQhxW^>In?RitMj9; zp5lD9GKo*sN9ATtTCIZ^xc)MO{Nl;!nPA!z{L8ZRljcj;#k)73*hcxCHu$mSSOv z#*PRDPH=K4e4xAxh4MSiKzBI?Y(9i^%Q%!1+4>A|=crZ|UZ;hMi02H+M? zT5E6vLJg<5?^)y!y4BDD+B$Vrr{#ESCMqK6IHQxU&M+SGty3mj(ovn|trbcSe(I9O z#SX$D>_PIOQ+|1}kesq~gBMiP1#m}!V^A)vzo*0BW!=f=CVg?T3SNwX{JS|*Q8Aze z3iUqYfMB1l151Ld2ELO;S3w!-Q<}>l=_v1(3l<1A+#$s^P;xG>TN5#nJ$x0M1dCCf zXV4CI67wbSXuJ7ykBzL3T;7Ru5fad3HpN?jN2=mJ0z#1j#>DAb$3s@8m;BF)UTvGM=#5^S?9p+Svf z^J6xecQ0hkZY4!_stH4CUO_{o7=B(W4I&%aPRqMRkX{kjgcJh2=3%h}@C{@mo&({Q zDm&sEq_-n2?Se)4%8i|Fd44b7Iv7`1>*h#Juc+;mJvgZVHo_@7Zx3X^m3y_0RJ&+N z%o2+?XStrYUs`0C5qq=Re?tQ(bx%|$%0}6&rIWS<85yCY_F*aOmqk$J-*-FsBhyjKu zib@3>J9}%Demu*@Y@C4_ZgqKDA{b4r0ETcXp7vPkH#T8mB$9a&4 zF|wrJveYs6lJT(A@t7_c!G*@)61Sj7F6ZX}i=kz10-Q|hdQW~!a^qUU-jXC8gwz~# z!RZ}}%3#2%Ns?NVWCCfl)1L6s88jmRSjd5hf});o9b;BkSB^al#aQNUPfV+1Abp4a zcAlVD_l7uM5-vmUH)^`M|5bNEFw9!fgdai}>xPhJ`F-gh7Yz!_xaWf~GF4 zQ}{Cu)zm10aEtToW}@(%N)nw$g|0~eey^lY(cldDa}d)T&J&b_Me0OQS*Jvnq1u3N z&`;vs)rr8em3@pr)KK$T0U8}4Z*-?qHP*rf%nv={8xZ0%Njv!q7qq_&uaS&_$w@r= zH_0_>?wH%A5c;Ft=FUGl$!YYi5t7d5p2M9jrl2lH-C}FhJ(BT|kN~zN_NTSHs}qjx zyMQiWg4d|iAb8RMl7<1UWh!bt$iCOiQTdnQ7)eyzV^LkX_{^kOL!*v1b6cW5|4RIb zMxD8D`zDP!XwpQdj|Rg6*s&ecm&0ewXbp!)2L{*XvwJ%kb@%`jYP6o{4lG(2BHvL1 zbI}<~fmJ%=3jT0$SwECT2)9PLoOn5haO~si7mtALga-ZFYUT2B%>6ceP?3E082#+k z(ZUp1tuHD6L5G3rK+wf3-{3!iKT9K5wI1~_CY0TgE?y8c?Nev_i+f1n0M8cR;)Gh1 zQtEnM7U&mt&3*}!`Z1 zBp@U1%SJHY2p8(V2CrZ52>$_&(4kP^gvQ)aU_75ivc)=dyjF5-IJVAXFB@;r%vjEp zkk9_8A-mdgT+8f#uAzG_rAA7kZ^*)R~gs#--jqED+YijkX_t zw^j$t+qb>@gZ{1ZYQf@4yG`kR%x*YSx<;TBcxr%Khega|XfQJl7?i-TSFu>&002 zfSVXYw;!h@xY0e}o(ME;_{h@g{gmZeWrbQDojVYqHOT7y9k*S3P& zn8jJ?8EHPlV)i^b z9et_pR^2|g^OFQudBI86+bfv_OA^S7>zkYjDh__AQ(5IJoHf8&8*H1A2XJ>0gdMz= zYU*=+I<`X-wmn*Vwxo~hPZ`8&xJfAFgLz=SoF6t`wV+E`AFEo3QW)oEr76fk11XS+5uBX7-Q~C4o%9iWOYwhXa`DIs1B*Ksay?0V%|h_XNZ^1RL(CZZFl*IN zC9h4EI*vCUj!sOUr`?E2832if_^59dXcGEVokg9v8`LeXJiXj>Xs&Gt%y|_bnIkmP z6z3EGByC6)ssGb*w+Kvd$7CmCJ7HUP^g+Ng5G5;G9o%%?gUL?})C@jQe|j<^x!_e^ z@)Bpss#gi|3uO=Z*0Yc5@H+i-X?5&Z-Lnrd*TCpbvDlm}$E=a#YbiZoK9{m-u>tV_ z^)|UVFX$-PIi+u}T;2PF;rfFLvqY4^N_NxLU5FZtVFG<` z>3V2uk(ta|Ylh zAoJKg%M6ft%s>JR*cOx0KykQhVYYJ z-;H!09jre*5d9|il+M}l+fknJL0Dj*yUniJ1BrPv8gl^d^JeTizWyNl#~*?UQvTe? z!vKu44||->Exjxv>7RcF_|V_2MU#YE4zOQA(kKVmc5L8!zY4OIg0ziq5zk@D9|k3U zsZ|!-NW8VYTg~TjC*pSnDT0mz-*-te_P+{zVvolT69o|9gfsgM0LMzrlFqGZxeEh> z6W*VQ$K=OF8ZYLC9cM^V%3`;S7taVAY#4K#Bn6H!>-X4S9T;rfmykHDGXt!V?ci@h zhWSmBJ;|flHwo*B!`S(~)i>H}&qQet(0c_|S+M$VQE7V8NShi@2;gtQv4dpsU#7=n zOm6f9(kbW8lfK^<+sK^XqlA+q^ZLg1+YPtxU=m|Dk5=)jR2b4;({;d3S|tT!q2DDk zg+-*iz?4Yu9dX%e`^M&kF)6Rly*gwgC)v$w?bM@D+8t{fr+g9$xkpg@Jqe3E*0hU1b7>JNfJ~nhRs59Qjsv zgJK$y$kri5&HVKTJ38^1&PZCc_dcSUk&Odv=}@XLurLDSvG^UE?iARMLpp-Eg1-;x zIvDl}X{#0p&`Qt1dp3>zSdZrVsv7{xZ;mR6a#Aj;19lwyC3EL4gb(Xbl-R*C*cuqH zU`;~`mC`6?GgUu@_HQHG_t-B9%J}<&M#v_o4ovT!;ilI$5v9$kDCwV=@npIJ_b_h) zI9WeU1BVFidd5%t^{C&$IY{oKc!K{0Dm>ttU;NfNfR^}aym{eRf>G$2vQf)99c>HP zm3u><4k<9f!=`pG!cB{Eh@~l{09U%_-ExH@F#F}YZT7N8NY*AUsHUY}~U1F7jt24U9#5s_5iLG6ozOWe~uXhUJJbZ zGjMK0J!pJj{Y>UFXfI8u)^c@wX8hjHAi9-TqX%_y{>z;{P@bJhY|k7<=VprjbD!C% zn#dRrFCJZoCG`Eo)jd|o37C~k6{7fPudKxeQEoZUdhEwrpy^W2`6fz4ZR~dW8$=ua zr$?n)u*Zo40g`H<#3^{~kWX=isay2`aLshCV9;^SV~+!<;o6$S03=J218WCdZCi;d z;D*7>q+(QPGDU)ORRd!}98;cp=5C({g%TjX5P+iKg2Wyl#ND3XtinKyH!F8$iG*=~ za37(iHAWptS#oFxg{X6vCqE=>^$q6!J}?9GtVA|=?0ke}ezVLvbWt}@?5$igsy{c@ zI-EVlI+06RP#gFM#a#NCg-;3onvKWn_J zYx0bnW>yoccs)Tc#{8>5=l4^yVa$>mP41KG=IX??f!-hPsUtEl5wdgDm1J~Vd_^;@vj}aZYt=2 z_J{0t>t&XyDB~w}@9g(O8x0G!tNl6|-#Zaa>t$3>WM;JkR=N6GXIgO221C0{-sejj zCeUPZ+nAN$ClD#-gfpIWFJ7Ri@7Hp43Khk&O`RMEm@ZVuMozsHUk%$9*Rk9`Br+iA zH28pWr}Yy_$iWYRA`dIh8-OlrGAw z=69JvXD~3Rv=L~_KasLqyTU&YAD)XkpGAi19=7^f$Q@?WU-WXbmO$Rg;EXXC^9DQL z)X!gggP*`we#DCZB9DH^;h$hX;1v3f+yJ>Ieq34pP@=P6@SlVDzzmdu!~oX}eTyYD zfxM7ITgdlYBr^-?m7qLtHO;=akUU2r6`xw`A77^Eb8)4jY4X_pZuBP+VJN`; zbLm19XYZkPWX7!`?;HrJcHq1talX`iKBR0@aP#S^$Ert^z?S-^^QQD>zCAzne30zy z7e9h@``mPnYZg=Tz4ZU!%j# zcLiw<_Xm5Q9KJU`^XLD-H9CE&0A#v1WHVy5vAhY4tD+lrz$Q(*uQ*ImTmUA(kGE0*1id-^NS`rzoOTb zt1UMrcu*3|f?`Um%LWiH%ZMH+UzK6SMPu%3o=-D+m*lhKgt)$QOBTmj>vG}+2ND;u zCFO|y0MMO^1>-;rYPyZn@t@M3-P$TIw{ykE63CNL zuVuz_Rv4X>krG6@n&Ifv-L7JqX_1Lzfq+1@k>DWS5-pA;irBA-*+?DG{|41eh!z~%-=-J~ZlI4)EBU~gO3 zG7lx6V)Y7{2f*>8^`r06HMc|!DqZ~Ru7EY#c60yc`}V$NohB2-z{=XlgeF_MKv^Fe zEa^1YxWN%m^AYFjo4hjP!?YWO@dhPc(uZXrra29Tg4{>5%Hu@fNWN+@pXNziIP{pP zP8`tT<0vE@zTD65Bpqh{gTm?FIAteV1h%zi{P+NOc_s|OHb1oqREslw-w7MqPGs1H z$}>5PtzQ>qu0$zcfn53k`I>sd!IdRuFPBlvA7nhh^wA0{&{tEAApk$QoP~UeX+3t) z@L-0dNn!@5`>>J{4!4$HBIMw@p&gi*9AqKY$zBB#kq*?6Gv;7$f5iE1?botU<$}#i z(B=DIEG8d8gU>^zW4@Grg{z`e{hoHXAd^F{UU<78v!F(=~pnfIHLDByKd2ZI+x zHN3VP>$JW1>&evHq7Ifce^X{1aVUS?z51Ag1Oin&99oU=H4iDgEX~xK`|3&oJvf_? zXmg2o*7ms>zoIN-U~aD$JSi#tyzuFFmSkne!B=wvR$;OZz`tBvhvb14lp!nCUei}A zuyAg$m+lcp(L=H_6+CqJ6>lm^7^oKzQN)KJdNQ>@ytkLmxJF5rM6n-{lLvl+%*tvd zBH0W??i7EbOkSZJq&Y|te);ii(A81v*C}u4@OWe_=H)exy}8bwLYNhE(~6i?=6~D) z^jC-qc573zk#)~S_@FvAaW9#8}8jPPTsbszd#nPl{WL8l&@O7=a(i5-qhTi9oKkV@WrQ|n<_KZK1f%Yii)39s^n(w z62OXhMNg8+uYY%)kmu>E!hx*Y-3Hk87XHe_9tfg_;9|M36)sU{2VFK=$9<_APfS*K z`=wKuHrBq5DJGn0{3_3j;%WBw2}^X>{F?u}R0cmIYvG^qyw$;SI-0)7yLYgmd9}lE zn;T+fiszOggapPbxT^f-XcCvX7rd&1Js1W4w0kBnmOqIRwx&b>6aBuoX$BLpD>w6_UqmzUwz5(fCnSI|Wf{NK0A zpvh@8MT}N*Dvg#(R6sC&h&aT_;j4o<%#ls_%1AOjjTZ9HVV>IHl5(^eD4{3PnD^7} z7Jv2)G{yfJicmKC`lmBeBlps^6-CdGq^9XXTlRn4UqE2S25&Lj(!Yd41jO zTq3`W0+OLfG%PF;vRQz_27xS!KQr!wA7CH5K7nx>4J(%N^uUmNnslFJ>EClYGO&4$ z9Wi`%+<4IA_)qrOi z&qg(HGUK)YMDtid&wW3q`1e43xsp;ab02yn*;o0`UlsbVsll;N{o%jqmU?SHEiiu# zCVBh*8&0^o4`YM@nS%-NTgh*Z3)NdbJ*!EG^4$|Qd(ywc?}2sRZ9lXCl3Xf;e7#_g zrcnD~-w)H}G+)7f3-E->*ay5gyq33tMsMz`|CalZs^$j9C#16QUMCms2c~5y`aN{M z(KE`6Hv$T2CdQuQ?A#7?(!rCr)=L_z!XyUFcwpCO8tV*L>w?9I7A^SZQZg5>5KxFRgO zImucZU;S(&jg~H3A;4+ZX(_&E7h-L;H1NJ-S@uf*tvO$f?p*>l{kFs}YC4G@({-#? za=Os{i{bZn0o-DjKuaNTR*lSt4u*OCK6=zm$4g`zz4D~v&s9~2Z&RmVaVIWdCFmVV z9gtO1rFMLfT*n(y-WB4TuO{u{aD-J(`sqx61rJcr9w-cIYzPRFR; z%X>W8;*sm133FOk{lgjw_CuCsSKz%*iKVmU^Q3y^7e`fA#-3Hm_eus5Xvm0mvB0C zwK-N)F#-%g%!0~ZJ|Z{den0h)!$RljS3FtkN#)+w9bjTbgNR4(FYfEdDKJ6oj2kUd zu(4uc?&dis$MHkV6~TMPh=c=RC+a|)3%ODvieMz%;v~$;hnjyg|8aBMEtfZmI(MC}0ifEeaWW z;>q||R+Y%7qv{W%FvDXHqf(k2)-m-IF~HfRHkvqNjF1MQ(@Sp&H@}qRL zB1F5}?9G`LHMcXe1DBIV!iQf>6F2$*CTbQ?qDF~VfM@D;W^a4Kn&O3jl|ORCS4gtO zB-wR37R+TXUGXrin6apRnSQHuWuLZprR3dd!ipFh5@J-Ff>I8L1XcoWbT1+cB#HlQ z3H`M21W0ajNuzK<+CmZrnb!zY;S5P|-2Gij1qFQT&fAxU;|jopf!R|iy=vgQ4>*$h zfJ7^wEL^a5RypF;Loc7YSC1XN0&^3*iYNWmTx2dC#3I3%KBYE;*fPg+Sbap*geMG= zg=I5j;i*)~89*J{>F$sEtm(juIn!)SIa^kGo?I6D;BxZiQy1WH80;DSL2O~NfHiE& zhL;6VKwN{1{E@D0XlQ64Z!GMU?&SKQpm>jwlj&(w!>(nlTK>9p_|>kJAA0LK!QHvF z*PYR}jXQDM@Z}vs3^v!OC?nU*y6nC*@#$jDLe%@(rIXnkA{jrEP}n0q2@DE>!l2;i z7`AWS%7l^)H z5OA|cWg}CY2J7bodo)9(XQ3uXNI>GY*(HiM?ena@_21BfSr8{%eH8kFpG~W^V!Ak- zo)ihMANreUFfgbqsC$B0wAaUAVC`8V4CZvmlt5nse6dd32|{Si6tt*$vM$^3;bi0U z=A<^`caxz9K};(DOX-ss+yl?{MR{}ipmy4F`EB0KRf}!ixf>HMy^0$(IXuXl_vNDD zkheykg#;?zgv*QV}ZO;+g2c{+=#_fpnx$z$-5AO z6amDNTBN%W8_QpACxcNDlO|72;+__5bHeS)r5C*^Esd+$W$sHPPrqO_aX0_z%*>RC z{XfgRq(~1Bw>+g7X2gDn9)XL$fJNrF7EN3vCxUVAmb!z+{TYp^_hpwy#|*)cHJI0! zEF{h{-b4I(;R#Px;@;Njw_TC1jTbim4t9t3hNnH|3_Y*f)6Qwnv-$34;^Y*eA{iz4 zDsifKYU`VO)5gtyo3>6z`mU(5$)-D9$)#S8pDWsS0#KVR&^^uCptkgvQlc)3(G~%f zRN3m_1ilOxA!bgDpE0&pZ=@}p^P?r6tr^s-*6%Wg&W1WB}M3`>R_YNYnkxg`*KrQ=VPB^+TK%X`=b z34WY8Di|;~nKyb*J>R$+MIFlr6jr=dqpflF^9VO_(ouJ8Go$16gyp@YogMSyv+g=S z^09L8AeDf={!OdKSQRJ5a~1*B)XZMR?A08}R5^nxQK8cVX4dp|^EKcCJ! zA-kSO1u@jw{yJa+3!4DH|H7^J2>k0sox9Nw^m>A%&%3KPK!12Vj*i!((l~lvl6t+N z1*`AnH0I8d{wl&HKuq;OQDPgUs*dZ{;LQDSYUor^vG{?p4XVOMJ#2dXRQ5-6516o# z&rY23%~|P%dfy`N3{-Yo~Fy-ToQnHi1-B?kgTbE`HVg4$-M^nSaaoixr+HnjX^ zu@#m|@+n60=Q9_SjoZJ?H`SPJRV?8jBh7k~-wHRsbWftov(xB-RPKaF&+$}$x#Sje zp8bb^ek6vn-2YlMt7kH#s?G0ioW#nrpC12&{U>+*9NL2AyP7ZQFm@WOnb}&ln)724 zwVicD<*%ELgyn&P+euyC5L?gu@22UBmCI81U2X-W;EdlvosXN+XMmp-=ib)rwG`DI zG(O*dNMy@>T2*Ajop)}%@zciMc3wfZ5bW=RxiavHMDTqpr%aa)Hac?CC!+^~Aip_I zj+dFIOLJzA2T^8uAA|H+tbwPo`m-_gO%>uG$EL@ z(i7gdF%wxVKsiq;5SiVBeuzF-2cslYESNBLz8A(`(jgP9c^QxTUZ?c7*dDVtrX(RP zXfSB81_jDA4B_XjFik^9AlbrJ*WQNmbk6dBxn<<{BCfrHsJiUncm1oF0_hoKm%{1< z++_b74KuJ$J-yt_(Q>H3?|((9ZGRoP@%Vt}0cM)s?C^C_v?V>aLdU!QNf&Ev zy&}CLm>z|BvL_cM2zJi53eB{*_qk<>Mj}ayKRP=h$t`|2qXnM0x?*k214zv-Wr;T? z>ebl*SP6FFguqT~_Y#40yQxuJV+{kv!rBO~!L|QW5|nz}mO@6cu3Ho#T|%?^^d*$I znYLRFuW|_!If%TWf5l-|sACWai{Yolgcy&$ULx0b#)th^lmT4Z*Lmb3)T!kFbj`pK z&T}f9o)H)H+BHKFcx6a>kPSFa%W1!rwoEO-m|2&s3Q8vy;N82;Ib`*7hVt<1~MVo}&)>)0KOp`qxr zwKZb~#V?SXkPYxPZ;XW{Hp+6=1*U!&7M zN`G?2$(4iT!^onn#q{Ne{=DO=?2z6dH@F~kA!+l=FeVCafSSTT)UXZ&uNX@*_7QU6 z1L*A#VKCIAXAuV8*$3OCs-=v4e#8wjgsUgsP2_}I_978}J>rO#R{50!JyQ=BCP4VW zInA@|?TbUk_XH8_b<(qlYu;}X+oZbafwZ&hf6#SzhsQ4nK@&%0v=fhBka&q&7I-G% zMH6c=Do->?=HcD34`l=!p&I$3((5i{&^k)XIajW{JE}ZHSyfs$nMF;C+^@A{N51j z-WvqKEU4ulp9(H9erlbZWYet-i#O;keK1T@DoL5qI^=Lny{pFWE}&KhIzGpd9hxL} zm%(*7JyILrC|f2+`IHt;TTMF0^kJk<;YyDIBChAJNOnbHLAp2#B4VF?PR*=+k{BDQ z^X($OZ6mb%?~7Skf!uaAk**qUtdSbX{#G;h(-G_JuBrO8ry4fz9)F%eAm3W46-DvC zLm13R`Wv&qx6A77+UC|Rq<4hsY?}=s4&F6BkozE7q3XPhs@Ny70$1spNCzcdTl;+SGN*=w!_FRN>|D+!WM2*j^9AJt2&D(EacL+>T5^m0H0FZOee7v@A zDnNTkZ2`=*5rmKhpQv6MyN{E|&)pjM_%!zWqQAIN`VS2pBl={oYHks$YoYn0Nnm6YbjxfAbpXY!+Y$>u;?B8CrIq0z9Ty^ z=kl`EW`v!MHSBMz?9mg+4aKTDL4nAez{(L9%=@_5z**fr$qfi%+WDfaF%ew0C;Q#g zSi99G0n@@S3ue6xd5tay^8Mt_CFkmBi_o89cO`nJZNRy8ERH2psAA5@4)?W;N$t`eKc?brnQ zqcL6)^Q4&|#A%4J(?y1T=ze}16-ih?4p=z(4LCbVOxR60;&B~SEVtw)W>7n<66cblL7BS97f@E~k=qYL zeRDwW26OAAB&;*8)fd&cQOb?X&O8ycg31}&;}!joE-j$kqlCY7q_i{AzQA8Nh|y5t zJL%_k9X2?G8H*c^LbcP(H6u}XXCFiY`!?7yTYa^bB{2V(>7E_e)K)oH)ZuciGl7y6 zd8F)={v5tkPC%*pbcZp2fqg?Y0vX8346Gz5EgU}{74(G^-WouGuf4j^Fp5Ut&tu;Vw1~t$V|5ukMaPlcV#wNN21|R7b zQUYdZ@G3lZHdH3uRZS+;?R8DVSt|Aj_{uuVml>73X8O>oFS4VmKdoNMYQCtmaU_1f zPYQJz9G`)2lSUOS!!{X@Uk4LZzPir&sGZ*Ey~73mGQ$v*QTA)#oUxC!K+Dwt`;5@v zfF+cFZRbIBPjC%zWQX!rqK))t8604p(e*cV3CV9rl?lmieA;f(gj#d`@^lXy?foQ{ zjo$iotyzWZsStW6XlMjv>%m#pg6t6ehkMwIk{(h50YltVB4YvTCJ7LNQnDwKB*H6S z5M2EnIv*(Z4I4TBR)SZY712Ak80t+ETx16X-=yp6+@kAhojhl;^o;s}U3G*}hP|FK zA_TZ{%>&%=nT$=H)R9n0Uh}>D4~iR^P|SQTgQlP-k3XtPYJ1 zY3RqOm+Y>n@NxnD zK9QPjBpa!-n(VIcezh`MljbZj9)5a#>=L?TNei-p6jxfMsx?q!y~9s z4YrMlPTQ;cvSE4DmGyg$UmZ4@^KBuuA_%c(Zg1o^Zd^@xUT?rkh@i$fK##Oo7UM{8 z#x!@pjl@Z-M@yVCZOzOYu>ZtZwLekGET)k%vQBq@+ffJSWlSN>Df79V)v^Gt9spSq zp8MVAg&%7ZM@qC<9xH2BvzTo_-cKMa%MQU%?kz!%PB^3DIfsbn`G43GC$cDBRk|#@ zY$w5fNUawmYq_lp8Q^4Tp$w$(0p!yr^#|pSp?lj$3bcq5Ta1A7_3}-}{l1@;4SPY& zZVMQcGLq+cvBTzVgEUK~przx`A6Y-fJzv9uYUJl*>po^$ZaG$#&#c|QDYre|y>z=) zr#cZ9G+ON%hAu*mna(Opv?pY^f^zS=qArSE2n%Y&a?Z`)ozF9BB_Z7AAIzOkAA`R6Mpm+sbb{oTRM<6`%>?wNb~ zJOakr)wO>wTDf52fP%!wpt$Pe86#&APnX&P*2#!Pd57>D<_AfupQ};w;Nb9mAaaCm zEI=CgOjChd#9VFiaQv7_oXG15vZ0Q=&<^-clB21#SlY}UHIwJbbFABr-Bbj&sl_3i zs*!$V!t;p#!`YjML%sh0)9G{l-koU>$GkXvBEW< z;o5vZyZsO~R?PaSPD?Dtp%A}|l?4cQ8dQMKuh5wzf$l!P6uD}IQ2S#}6g+KX5$R}1 zR9Mbeg^_2}A>&1dv8W|^rawPUbbYkoyKPjRx)Q1&j?sA`B7<^N3TcNZ1B z%c?E%=qn>~EHEWrVcuf}B9@A7)qiXP%Cp!aqxz4kPSpzs%X>odM|kF!aqpFu{(ozo*rXp;ysj0k9BKj`F+&8?BS@nB3)V^3>`j?Q!TG> zQ8mdyHiCabN+ezlpWjvrtAjW4j0t(GerqmLr`mOfn|KaHxehpwuvtgQeFEW^2PMN@ zV}T7rlhg#QMsX~o2W-4o0m@2myD2|zQD|!aG$+L|bU_gXPwTu`Cv`qkO+{hjWR)~e zUuCww@WYDb1yb< zE?L;R@(vOs%SF_Uk_dpbM#&V#Mhg_;TnZ6vQ0>ke+6e9ya_z?FYwq|+&z(BtMNPHu{|0biQIJMDnuwM3a74Hj%w3WyA%digZ&34b}v=}2Q)u8s4BQ-?WwrI-EA z#t1*~&5l(##-oWn%KxtJ&EDru1kOVUd=#8V)gqlC`UNttbwPpn910Y8Fa?Am_Y`t(RBI&?a>f0f9{&&}Q>6H0xz6z}N98)Y z#M&RCT{VHs;5~3+IKL5&)TMAckz7(d3M96&9dv!H8*-m^n$gqD!qoh?lYTwz`s!jGTf2&^62O6W_--Cmf?=K z8$xKe5ztPLs43oycnrPr<*a$=z=Ve|UCe@h15>%b-KkDEyCO-hLzC3<(f~pe!VCg$|7~`bHzdgYi{JRc9Je%;5q5HX7rpa>1X|lRj zy=f?`vaC9`LzCe(bXc?h+?a&s&{_>oC%L!aw-A-E!VcL^(pJY&u>wR(+e0saqc3hc zuTn_2dYjy|Y?pA6v}ybXJZKL*1L3nFX5pls;-O#hgA!sp(3fVn1P`kUlccJ?YdzGP z!XBbg;-z`q{kowg+0_TRpi`p@MJ=+*k3c5RTD=-X@mRpY_bodF_woBXB=Ayk2i}sF_g{!7` zh!?;{r(cGSjuwWimX8jSP(&)p=}qTO!;$i`Tr!kOq7q}=-SM`tMAQxNU2HG#4_t9O zK2Tp(Wv0&k7EuH#I6i_l`fndNXutq>UTh=yP6NSJzFl;L2|s!!a)HxYmpDhop*NMy+Y z`*fN1oXVO>bO~tXL$~pc$&IBhGPYj+OIi$_9ZOn#ylAyPGhFjxALP^&PJhhD@ZWxQ zuDE?xW;J8=5A+rEegjzn^L+#pWX2!|wn|+69eoKcVW7&5^(8(tcd+3`>Ayn0(AY0f zTUYkKK>YmV#HZ!B)vH=qDv*VAUe(d5xq`J-)W&@er)m@Q5rRc0P1YoICZ<95hKMJQ!S#x2XMvmrp1ki0=T z!jlzr(%;S3#`7(FFuQLbO{!$Ih_okbFug8d9|7|vKvD}fiVIL6JRv#S1T{~iU%$vd zP&4A8T{5t$*_jKYp}Rm-G(oj|B-`<>>(t7azD<0#08Ycw%}~Ap>RxwHg{0Nej!b5( zVvB>FLrz(opoL<=UO?JVXYb`FxhW$H~VgDc;((bbFl_D zR01N%obK|MSR)^;>Y_c-`&wk|EFTlJ>3MzbEEPZgTvM*g)7F4n_uB(M6^&`dwwg>_1e`iZB(zTLmGwIZ zKdWM5TLOsmRh3N_cp}#Nm~dt>1hrJrJcVqm-&>WzO=(xEw}E3^YypW?_PdC!f9S_V z^5B+b{mrU^9xVXlY^lB@MEg>IXMFEQ4VrWJ`3?J}X8QEff>+!A_SXJ>6(^}4q1djq zgCX#4_oTtug0JX$uccDZe^=g^xvnF=cKGOq)|`R*a&Z04@r0mJhk@U|%Ey&M_L_A_r*4TKc$RgxOeDxYd~UX#QC8;zy)^ zm?+g&Gpb1HX8Ueb$)E2rjTRSaa;8RaznALmb>yAm-8duu4AhK0;fysnLKj-26LW*lgtY=yj5I)ngWg} z(nN1CNRaYZ(47j z+&&8gTZBMl9(!dRWE*etY|FBZ^-2nmrEHmTz|zlx{$gRXb7jKWDF27eoS7klYoZ^-~Lk=}MLR8o^=-FZqt%Fu?RV>;W(A1XTrBr9&uYo3i zpwOR?^8a~Bn!J<%v3Totf-os$^RX;Vt@EV*E0Ro><#Ks`GC0whlilu~DQg>|&m$@xeZTE&7`%3w-(J%*G-J%*SQ<(7NAwp zZr#JPSPWhxhDz4C=Xk|UhH#R0!x12rfAIUCz0ca$)%QydI-dOs{U&n@v)_)I4ZKQjBWB=q7<@4}^5;)W0JA zoki2W5|P0Dfq9l6+s@Ur+AP6g#{!*9q-G2)dAkY@X z)&Ypv5^Uj4{-{-Nr`dq_&SL*5&VC`M0M5!z9A*5DX6un}Z4#`~$rxvj_@>=d5;@cfN|YFFxTZ%Ih9zM;8jKV+m^wyt zwG-914Pbw^74WX~-rc51N}29kcaH_k@HR)0d6WyEPjco}Km8Uc^=H71XY%q)#xCH+l_k)vS(gabOs)%F|q5cN&*(Xf2EqlY|#`_4!!w?*QZ&L-?Du`24IMcQZ# z;9Q7kqqiaNRt3a`^`GxRC!bW?cS!cP%-#gNAC@39aWi^}k0*V;A0@0)tx(t@34o5c zDf=tRF#}TxjD-|*J~+&I&I02%pI+LcWsChVu@2VF$6Ra#633Tp%qC<$b+1Bzk=H$Z z+haX-_<6{SfY1#H;R7U&BN^V zs@gJiih0c$1X87hf()?&^rk(Yf zU))!~sqVF<%OQq~3opUHkxHyadBv&11lOP~{Ofkn?WDQ9!UJ@=tSe4=$~w$(=GA}em!_W>2C9Fu zDsTWfD9S)-xfV#wBP|l&`7wLY#S8r$#h4>=p`(L1wYgiPgA^nFe9FcLvwikV=V=*@ zuVMDfq95XWzmx`gqxT9J2G;2T)>!cG-WUCp96>8N2j)hAFxq}(1#%lcp=@%j3MQ(8cF4tEyRM!!#w^9?IB&Qynk-aD%71#GC!`?k4R zE0a=X-INPW@egEYR$H#94e6*274iW&>7#B-U)x`pO>Fm~4?P>CU-OM?J)0+@#e0O@ z15T#AsiP^M4Y?^FJMpU7Bg21P4RYHgXgNkUK~{A5k~w|(P-UA4(itcQL?SfdRRLhl zt^8d?**z6d(6BPn1lX-|4~4ST6mb8!-^kInhW=4a+qJ&?T6EL}D2)%1B{Q0OIr241fi8@l zC7phO7;kMUysZ85O~S=p52w4&2U&->WnRnr?3uVRn@1l zbK%Elt5=-?12V#mXSFxdWKupN8aZR{JKYvT*x``dkwMGu75|dJA!|9A^XJb8JnJwQ zI3F-3Ui|i?OC29d%=L5IA#F3alN3RUd6iS0=I87m69a)zJw`zKos$vI*YI2C1B{xa zxoSp%4=)U^1BDe}gL*33fbs}2oZoWStK)^g@lhUU^@O*?bwFT_E8xli*ud}m$582K z^(zlY)*NrU**OuH6)_t-=em=G zY2^S696DNB`H&08`Lav7SAz|h#h|+73%?V5Xla*qt84R%oN&1ciUm$xv5@V$*V7B$ zHlAAUUDa9W07|ZbqDVkpfDqxUmV2A2jq3B0XDw9aTz4^t5pz#ke_5;l{|g1rb06XV zRx0SRCBgdFm8~;m=uYJslLfPM_;|~|HF9(7HyW%ZBMX@(s!Q+fdowTTZDby2aLx-*Xb=di% zzx&i_FhRyt!rDGg>a|}QsDFm&g093+JPu_s9M*xHDK|!#1?-GcVxv8l28RWfeAhSS zerhAPM#kXaebjBsr(7#{<3fd->T^3-gsgY0-rFCL-U-w+ZVye$RB*kaf+L6gGd9Xs z{h)zVu=+QRRX&ZEZ7p(Qaf#*Ae`q+iq?`7vHRu)0z+SX^4bWhNAwNCKah!+KCh&BB?m&S;8nxTQhXnz=#t7zV8f zx^`(HP-z6vB)UoQkC$$R2oGN2hnc$xw=dS+f)F~!O7*^Mxg~9pk3jxvYv}>P(5*7J z-AA_tA$Quk9A#48&MJjjUfg=P=c#Z4(e)~b9* z46;7g(54m%t1n1a5QE}?Qv?B;mLoTlj1W5S9w9|onRj=&-)BK9zg%8@HoMQ6CI&;5 zRGuR=Wv>+v*t%&EKG7_pVz_|Q1Z$dC=_-|^4e4^?oFw#QMceyPNNSL1+=8u5w`i{$ zKhNF>%KM)fGaoBA{@R|g6&cYNQ4wl_Q`Uk-yd}K!_`csXjL`=TPJ`qTtQ4p>+($R| zJ1TbCAVn%$$}HVF9siD?(0jb^G0S>ZaWzZhcL8kTB|z~e206KBc5IZE4XSpa|M+<_pkHS_w)FHNmAUsJ%k^tg z7UvLz4uh&vk)GZOb!v+2ggUx4VK2yc{(5pP>2=RA5u8{x@et0#MYD`lFmy2^#-W?y z<;p-7kUs_*-pm58yA~@ajgD#=3nY%_YnlsuvAMJKRVj=C%^L$AH)zvqElW(&s0fY^ zRbF`#r8SWD6&RJ!!S~=?YL&PB?0~(GU%D<*Qnxq_H3c9!_-q0QU-P1;??tH#@+6I} z!~uw3Q}(8_Stc&mp+1Dj&IB;8X` zn>S=9{$l3*fc)XHrNDor0kC-df-Wz=R6r>b{-^UJ9+(i!%WJPJdDA4mdK);mj3P?%5Uj_MrF-kfn0)dl~p0XKY5Ps)bwMQ#+#u4t1ZUQ6iu$9huZeDL+^it~MNYm+iL zwgFU(db>n2RuhWJ9K2!YblFWM3wIW%QvKYid^9n?6)a*ZZn-Pmq;cOA{1H zuV=TOsB&Hc)mbRQey)%UdZ{X_xFt6^n&`3Bd5pWEa=#|fZ@P531yuVf7^D_v7n=20 z_uyyPx4(kWVFj?`XT(7u_e1N{RXzm8wy z137ttOymOVqmx(mv+Jd>kkG6yi%=`(#)>i^Db@O?J6G3TKKJjL^m5_wk0=Al(4xrJ z{&!K?3(gpxMpt$v3nL?rzg5+Nd2bi9cX0}T$Drp|T3eLO6vpZcfe#s1o%O%rz{L(P zs~TI-rB?DDN#ZtEq7Svm+nHQ0DMOZXFQ4a{XuTolXlA!L13Jf~NcR1N(_2Zluzd&t zm=D74ryorZ0k%K{z`YUL#o`kby?6H9gJ(W=1sJ9>?hCnZ0-@m`%V4#zFt#;)Jm+~R z`$>>`W?Z>_gSw4omhM>haX*Nso9E99r!c7JRBln_EO#E`OGt>E%*pt&RZqIDHZxbS76Fz9U;tNWMJ&BM`WK+0qe2psMMuGXP!wO-M_9G0!$kz6@& zg@#9e=Z}{EmB?5Bn@R?^A9JE8xCGQeIc3dvE0RVGM4eSgY^VUhHM>9x5Um_PXF;Kq zLC76xwHjHl>*~*v?^tl^U#IVds|pIJl4=i|n5-Q&&6I6gN-lo#)-5H%?|Kv6OQk_D zTXaOS52!3#q?Kubw<{r$gKa5&&V21XY8WmAbTjPZ`6W=NS-IC40%Qe#lJ;^y+Lv%* zRuy>;Ua7~BuVf32HQ~grM3}iyj!JK0F@}GmtiaMFe4(#}Kf|VqJ%`zKv6x^@n+K=B)*kt_1mVtRc-F zGycLr=Ni;Fey*~pOJvhhkiYuH7a8s$13AUd^mf607U38akdfQ`Q8&nYvMZ*KIn|n~ zKd|>}>}R!!Xg%}IaL3in+E`K?<;-4XZyq?4Qdxh~GSj{63sR)BiUbI-ips8|DV2TN zUozYYOIlUWr%`KnWh=;w9aR+H>*HeREBN4i+&^N0yuxliw?tu+gUISsx9Tes56v>K zMf>wMUX%0z3GQ8QZn5;5qLv45?s)ia150Z-#TOVjb?1B1(UAFM($L7x)A*198&#U8 z@7ABe15pK-O2IjNZZtRR4)$k3Ap!qtF8UyUb*J4<``}R}s4`%SH4njXmYhAC#+pWe zX>~vuno3vI$^GM_VW#O@>^8sfL0h~FmKRD7VR+ngsjT}FArEit=EMQ1c0phg8Cf;R z(OVtUW!4Pg!si#H&<1eek}T?)U;VJJy`Dno@H;!c>2YfZEgml7glJL8i33=VVKZcB zx1g72zAF0=OjG67G3v!mXDdcFp?F}8`nQE}r+k^}DCd7yjM$Y(#9^EGH5~_k*Brc%SM(fJcM|nH zw+j|Z?%PYgQWG3~%Im#B1t2P2fOg`hd<;)Nu>TH9g+FLGnYz1|D7UP*f-j<&9c*0F zoe%zVT6ju^94^-YW~{l=yH9K;9$ADsVwzq)?Ze_jI20>r59<||_WptRoBmaR()Q4p>*v{R zctx4`$$(o{v;n7R`GykOS@T`dxm>~>4HwOKxNqe;dqj}pcBYT(KY}J@#+`jFxZKC| zNdZbuTk><1VJYqf>O^sRR`kQ4ZWS!5+cI=u8m!;yR}#2%aIx4-NWI4hf4!rB6F(Pf z(W+<@67Ii)E%qsol#rbG^BtRSwT5(=l|||YE-0;OLyu^mkl4rs?xEXqpCY-&cVvxw zT39$>BbhyRan=%10NKbMGoL+!(7rrZx!_{cpwy%?{`VAi%ovQ|A9SI)6${EXz&mQ? zcaKz~7+tj>4uJTad*`+0E;XIgUIU3tS?7gPdK}LX0O(7oD%CzSksgQ#n>qj!2Bv@7 zJA2RQy>0=D+;NkfulBWXs64)_PBl!LQ9MGkXK&BT7eqwo!*Ot^`?))mx6i(uJ5u3}6w-V|k!B zcdamW6WQ2G^iCeL;#lno%+}X1)|56)M^5t=--9zvSl@)A-fjR7$u-vr8P>_JMW}{j zV47)0w?wC zH#MgZ(XHTZ>GZ>0U_PyQv)Jd0*OBMg76RG%ThebTAVX0Bbh-aMo3JIxjR`BkX&)I;I?}s1EY!;R5-J-N9ORgs}|doVW~c89?G!Gd$WC%Vc+9|xO?sk7bO#csL=)36E)6BEpQto2VI79D4O))v$+z4s>r#K|yyqlH{=Ntp zqVVWlzU|Z74`Z;D;;KF^PGulEB<`bDv{F++K$Bq?(CaZ-7H^arHN8#o*)0#>D(Brj z1Bnvgdda;eg67u`a4iX|SZrP#n7ip#Og8)nSVMBbI|QA=z^IK(CJ~T%BsNPFgWw&l z9qaDZ12g`T==7ARzkI?+HFW9A_<*FsgR%`~JsF?|w_X7zGZ}%>`(eYW0DJ#>1$GOw zpuJrvgxRrk_12iyW*%Cmf1d~lF1QOiP7}u&AxpURtd?}}>_Ds?wRzm4y={bEdm_+9 zQ2wWG`?8(dTcQt|mhSPP+t&;5SxbtsR&BOGpjhIG%&8Y=V>v|zea~19e%v_8FZ}fm z6Zgzpqc`6O@^D77l?8d$XOmCyFV(Hw0pjzzd2iu%&PYSFO(wHc#l=z(L6yQ8KQ*+q ze083y1_LjmE z7YC3Z#cxWy7~d+6;a&JXpT3uOq5q@4u#>Wkuwl`Xaq*MUvlfeYr&mtR{{@|(S+vHF z#z6k+1)$V9-tafLxOi$xF}Ez~t4XxcA&UVs;r0PD#Sq>#NrKtKsf?JLsdthzoFwGDF|E|2k>G04kFr(YI6q{U&1|Zs9LD@*y?}K^+ZVjtD-#DS z?){w`DXbr`<#rHb7+}!+@U1ij=3vZ|#EzUit>LCQVSbfy);#m?&DDMFN9Ogw@%_1L z;k+uO$8IO^*&!GsWF7=hK(Wc^I|B`Cj9szJHOd}TQKbwOKB7r1Bi;DLqrE-FkDbp= z;irYSn|%t|=I~q40(T!4Uui7FpDNXAkz+k*1+v`DpP8ZmJEqf-r#!>H`0?nW9g|&F z<2o>sNAE5O>k@+Z0yFvA?7LW&QM66ynIX>@pmsV5M#R|n=3K^qy#UmWZ?j?$do+wk z%)ovnu>{TUaucKdr8|#5>njIz{@w6zcq#jd{iY-K&nQKP-DyBN@C?mL-)rCYAG3JI z^ikn3^z;M%{J?c<$iix#>CZ!d??|&S?m@rXzQBkGdsUNjzB7f6PK&F7UX%IVy_%{tp~t=I z44^gTP-dPBK=+l&pe}Z8CgZ;-g=G&M)SL_K`Ar=EwuK!^J43V%-kP3fuu!vNVVHsX z_2kstGtMSl!Oohs%~TEGs{81!XZ0-o-k5{DL)bP`v#SkmEDCcfJ&KEHVUJwe8dn`|Z2;jL{x$3vgON2C^@NXWEstZH#+vRe zB#v{QO=mQjwA?y1|7TS~Mry^fC`a|z9d)O^vhDynpRG2g!B@vg(1 zhZEs)@YYs55vAasgd#pC!663KG~c(x7zObe0@n?P>V0oHc2sk5KrixbKpgNbsAq|| zPFbAqHV9LKPyZzFYRy&+E_{uu@Ha9M94u2D6O!2kdp*sC8>-}s*? zd>?KxHV}1dz)Ul$_|@E1kaUrWG3_bKo}us7e*{@o7~Kb6Fpd&BJi}8DSkQAffaO{f z46%d6qg@Ytlb6nSn}=#(8@a)dx2@Tlr!oTz`o4|#dbuRBW-EB53N_Cyx= zjm5sybizJAF?pbIe_2_hNvero!MgUBk3-Tc8y~%EX7qa^yS3DP6KfSwTBC(3x%g>3 z`_4-#GPDy538*jp0!<)Y6gGgr)1NClxn{aZrv&>zE3v6&QiyL5n46Fd{lp~;KOnS! zi_|lHeyZlYG_8+%9nV8MQG9`2SS&p!sA zp4!85pn>nGmZ$U5AH#OImZhCzV&YB>=Q+_QMP-OD+@_X& z@_uo4xS2L#SR%;MAbZWU#WBDj*zA^KllWM{HLG;-#_aZ@aYagDG_;a*A&W@1H+3Kk z-`v&^!(q8C>I=>*7d0G5h*`L+_`Pob*#C7QJLg?{@YC-^2}Cs=;?@a5UAiD580*?- zptodDOK=)0IceuLn2H^F*KRrAfhZ%8tl&Npta>^piN9Wc+-j+!2Z*0Xm4N~aQ31uF z-7tg7%)468hZ`ID0v#zQqYJP3)=F<&UN{V~^d?T_u#_>az?vDcAr@V5&9yzamphGT zLzFE<;5|00dGH;ej$*~iT0K?HR(YbUu{w0!aI)kGqh|gugtSl8l+r-J!|Gm0z{4@M zgI0^@w9tobBz%VAPEShus4wF_o}&b>WO%!sEC1ccwajMnAzkl9?L+NB(qEHOdIK@X z1?AJoSnG}otYMa(%NHD|v+3Yl4f!T@M@+87Z-1C=Zr75_fO;U3r51vgX(0Wc_2kC7 z*`o|?yLAPqi}5Q5@W${R`D}EvMpRHuOae zrgBtop+*zFUX*QDr*~?r*AN42P<;y{#S+`Z03+Ru8$Gvq>A1Ub&n$l=C=HN=B!|$2 z#?HAg&2l<=ko)c>3G;;?FKF0DFBOa6VjUz7O$G}Fos_H#*j zUu{0t%RL_GBWl3^^go|_7EyE<$X|4BMa+1w1cAVv1jjun%eiVTp>jUCWkZEB9zSy$E+14PNar4+Vgl)A& z*vGmXc2qJ8lxFpTnEtZ8&KJQF%GHvB1(X0r=`dl*Y|sXE@xP*&yy-Q4K+L3j-`={E z?l*f_SFXUqm!RY%?~F%rHKwb2o1UBdwq>@Hce1*1p?%&gwXy?@i)5k;H^qNDekZdV zztRVm*iF%Gy=yhCLwC}px4yM#k*0Wl{T zvd{$KWLZKQ@u!iX7@Ea34p56!9f4&m#ggu*J-ql^bv5-mB7A#c}~! z2}Q8rl>lI;@0X+^?7xz!KX$0J7yX_d{p^!eSUR`oXAXn5jfP66M>otGhCK^2qIz>X z!?vMDm>tmggFb4&s`Z@)W0}T(zG#U3Q`>gXO5e0i;D)6^iy7hom%+R75q-dMUxQT&Cw;EJ@r&mcu#6`F%478)+FWd|>}4?W zVz!gBzUp{v+4Id!na)<+<{9FDqR3TF9+w!Yypbihg_mlT1NYiwfc?nk@7_QBE{HAG zuA|a%?@Hd$zc|X;WIY_f6f6Tfc!|O_i^BhJFo`ZZ-bYMm81?$|0r2JBi&Hn2S?rMgU`c-79SDBix(+b~0 z&G~}&g^(_2+)hwftqwZ4Ow75harTABR|9UAQHy?}l=!jH*lO^4g94UeJ_F=QU_)rL@F$eBoA>IVX`C%lyBhOr9l<<)i~rWgU5h)O>eACD zf1fNs4v9)H^M-v}(#TMUS#6xg=3SpLJ4_9Jv=(VZjeS&L6-_@*D>V0e98lE{OC%|F zR7~CJs5zFBiN{vIe`q*zd~?74fk*}B;F`?t^*pn4A!p{ByZ&rE?7;GJy_8rw{`DcW zbJI!Swub~x1{974IgMqn6``$1E|ou}-GFt$v~rYyjDsPBsJYxyy&#~}M!HsB1&T_^ zcBD#4XQxMqg0kXx{++gOPO~VTG*mu3tu(iI!L8gk+rVn-wtD>pEGSW7)vj58vgd{G z(`&1UM9&(~k2AumR$&<@vXkPuHEAK|>!qLH&hIQ8zU_KS3TG$|{unY4fE^+SB)@(> ztepPWfQuUl)pm<=A_i!NJZFV>)Jc^t)jf|P?$&W~k-v#?Dpj;4tPK>Pi*}lpAPNBXN7= zHOpZxsonk*(G2{DHL$t4|D}|xWcP*j^tmr=@=|~JuU*ddnb#ykhizuKw(+Y^i|gpf z>9y^aZq-FN) ztv7~0IAQb4&@ojc;l~G;ZAtUW83%P!wsc27&{fouJf1af8f@JNaRtY_J|-)0R&q71 zUP2|urAVZ&iRC#9sN$^jWx`&kQ!Rim=H}6WsmV_SE+75CFbhyU)_}U?+CV^*Ey1Bz zp--&d5}rC}^Q_o`(9`SNr(18YWNOg|oE@WgwJwU&E&Yy3HwEyQ12Zo5&NZhfxIn3`8*^M9P;Ydx zc2^;gcT@)S!!SAlt2GN+XPn|}Nt@LgH~G1`lr2>I6m|!7 zQla7D?kDV~AffF=JMf_2{#9TE9JF!5CiG1oMuqIAja!oRgmsDy~0ckEon)FupAB~z3v+?1TLpzV`D!@@x6G@j<_V!T#G zVmmR(s(M6PR`z8{Xhg=`BR(txSFUanb)WVPwY!lKdT9w{A$>uo-`ZQy8~zm-TdH}$ z(W~HQX|G~IL#cs%OaCCrkYA5YpEw$o|DZo&+PoNv7=!lwC*+kk-_m{bGYY;)kg8Vn z&+gTmMspRF(kTXk{*p=hbLvv^g_KZTKFmNa#?-GgJPZHuKOv&A)?$(S_;?)XKeuZyAC^(}`0+`eDFu<1L5pNBAXx>yHFX5*(VB)ALFR=X{D>1sIxh3yhuj@U-zb zV^9O66FOo&;fZp~57RCVupV|1&!HmT!nLffqE4pC?&aUnvN)Y$h{ubB4}};&d(d;j<7ke=VL! za=swq07*H%Z7_*6a9(^Wzt$&)k7nRAVVA)O)u`81vTi2o{_9n)WPJKZA1H zg1`7KFh=>D!rva>oNq=s;j!cndTwKP$fbPp3PfVfz~A?_k#LktlvrfXFF3(FfZ6#nZXdMJ7B42C>7J;tvBcLS)6l+_agSGbOwZ zmWFkY3#riGY}wCwGD!Wcs-I> z6KnY^yjGLaT5X#h+ewB`&Bu+xW`s6&U#w7m*NG+O7`ZJvbO}c8*84XKZtT|o{OO#* zf(};CH%k3LWY4UWrjns=bj;1}FWa9zkowZuEB8riJ&`}W;Vze^vLMO^GiB?4H}=xu z&uAmz_B~4vtdI^%R}&1hsOhv3JT~e*r|^)ZjA40Y(cUe!JlY7Ldb%TDb4DJ%F3XRm z(YhmrI=k;v{uFX{eu`i?**_hmN=O>|G8Yc&K3}+?8`E9*)S>7&YD0OGG1wn2^zU$_ zR!Wzq?U=_Z=_Pe5ZXMc2)P*yO#1LfSAf9VL% z>NIuJq!!}1cvrqy6ry>*N>%O2e{rtmeN@F4>HHaOZ@rXH;8Vo((v|4n#F$hCs57Qu zi9vk+mSV0Ff?Bn2!}@N)qhbWDGRYJVt2c71bH&F)lv7QT$<#SKjLfn56Xaw2hdNj) zlC{uEVij1R&lt~ms`@rE(16Q zszdWID&C%3`AxTI;Z!-1p>Uz2jIr@mJ8B`=(+>7|V$fD-c_(mX1^2OyEfOTPyc?*l zWSNG(x&8OI<@E6h*>xihRpEgAj*t5ve384gb$=&??ACr;?k(LNRxSW@0c}u*d$A(* zhaxSFf|tI(&fIEN5skmr%{&$CCl<-wSX2 z)7?;_QEhk-W0EYoP-$a|R~z==YPus$Mpkm3 z!BOzS8ROQg;<{iQnqeH;w@VINk;hkTXGTwIdj@QR$<$l2Bg7 zy%rZUA&zqobZrWt3X1#|)&(%%|Di09!YbUD;9u_i|BF-fliN+pWATfbix%rPEwJD+ z!8y5K)_dD%n0FZ{lr#8cyWfVz`u!$$${<1Nk(8yNZ7swlCH2t#+iDm<6cQc zZ!R!}tRepoSMMIrWdFyHS5hH$lS4UHZY9TZDx@&BBDFDO4jr^;PIrzWlt?+NZHmOq zVK#H#WWwD++*=Nl%_-a!nmI+rjqrW1?)&@ue1HFV+;_XSUE8kf{eHckujk>o?(py+ zF%(t4V_Agpj~&U!&f=BtP%m%tgyO8CFax{xg6lrh!l}axkE_LzgfeLpaAE%QJZOLL z-o2_TW&4%tw_|o`+`Rm9jjJ}lt@>|+vfX3bWPYq=oE%m4snLPT@{6QRK$o62v;Upq zwHis-jO84m0eVd1W`<5y{L6b6Yrem_^vS9o5b>5d)q9e>am zM9T3K!$XmO_^?{x>f2;*E!r25AJmpTVm_>W&ylLv0p;V{JGw$z_%6E9cY-_ZJ!JhA zT{Icda@k*gR3ljOih1JO!HvzyA0d7Vd$A|pj)QlF_@yty$A43dHfAbZ4eo@RK>V8Z zEbBLW+%~%RLxBL!f}MT9`$79F!4BWW2i%?Ys-JiffoCqa!#}HWy`{nD{P4>Bevn9i zOQ#{cMNMI|NqV1>J7nJ#pWD3Ig*TZ|B)XBU64`4@L?W}@3odil}npI z{Ow+xO!-<>b4;n;e1NOLCeCH_dPT3m%Uc&AD)UiOw>6+Y?})CJk(wmfoN=7iX7w}a z1u&tNv7wS=)_;_JYpjMk;diq`?m&ZBc=$`M?{hs} z<%|E(^zUK6y|rre8tC~A_t~e_jT~cH?CX{>w1Ex%YZ_oEYmX}?-01$!i@0H$ts9Z) z0*t#CnP483+oD$>j{_YZwlUtbn{B$M9m#U_!DIK$8Zv8Zh{wcPwf*;ry!W?OWe<-! zv-b9weMkf5*cU8bjqGXOJ(P8$_3t&_I>2K)1UAtI(=TQcSG)&8!#5>4<=xakd{HMD z3ZACDWZu>|Zg46jU3>Skh>qTRm|>8GLuB9_$y>m|@nMHo3Rwc&6+vs{#J$YU15H3o4FZn`!wi$f_b<1O zkBq+{q-_Dw<17N@bkencv!*4#IfXcP?05<+nQBF9}OjWRkoJONEN z_W+9aFVm~{Ko->JY5DyCL!Op(QDJ_FSpC=A0VD+%fhgMr-AI?n-HnF=~ic z0~k+q+txau5}eQeYyawSKojds==36F?&1t)%b@`Bv z-mu%iL#M)I$)2~jtjJUqnV%(r3|*&}={hww>rgI?A>=OLNZJoIU0hY1nyR<_U(|-9 zK`An=nA(E-a+?^823fD)uPA;WlnZRWm-5Wt^h=Zasxg2vxrxsLasKJye7`z>4|&dD zK&QT-u5}}Pd9ka17A~qn5L&^o0D9{jCiz*4;XAn1$dLuM8kA=`aNGSgHNz$lzfFgM zKnG=9s8w#QyG)V;ci&Lq)b)^>_BIZ%?Ba?D;9(LBn|^@2qRoFXCAEUpz)%EuIdmub z>ocq0A+Hd%B}$TZX;ua{AnIYF^vi#{MIJ*|z0&?e<}CuOqbD9cCUwU}Z+kBJq4cGt zX!#1LPA{|mlzL>3Gh=cM(#c2r=0^nr4@&6|OVOsMj^~_SfBC$z)ydXL%027Pk~sjN zzQW)A`Wd5nxX=6B9vr(?q0v0V*{E1t;)mV0T(=WWAxGV8SOLhH%W^NiszPMVBBOZq z$I>*9k^c0>{!XsV-%_Cl-kK=lJ3jsX2dO%)acjpnKk~=Rtk}JJ;O(D?o{GI_Kejtf z<(3EhoRc*2?}mgTr0lCxB1^iOrQ|r*zl{(^xIM^kO)>gwqAIUkh^eKoANfN+A=#Fp zldpe}K3a;-6t%)zwq;3t)JrGYp4(OCEl~~L`Lf(C)#vBOBz5I)(WZ$^ar(}a>1f9> zu(#kcU`~6n>0{20%a5n0G>SFFG{4#XEqqt0EuE?0BU_4|Ql%6J#p&GZjgwh7M@R8; zW4y?f*l9xV0r1A)+l`)pj_s=5HJp`1NRlKUFh~M#EVi&5D)XIaE1~&q`JyTAIO$IV zM!KdJ$yw~ZUKfPiv5Q=Z%vDCROHIv4ABBIeI);Y9)r6n<>ZiTnwbq4?*uDdYllOwd$->vt^iBaBpM~Sj;Gn*X z!V~oZ?^WLlPA^HBB7Ds<;cHg?d`<8OI#qbOX2Qci2@hWvK4SY098TT~4ku&4;hNrM z9chN^=Jw#Ai`n4mJVS8gjPOs@4RE;h2XJylMH5r`^Tpr~)Aj@S8VV;O)Rj{|1b6&Y zSQsA25Ivoq^TK?+>ImNayzDLalj+i>rx5h}nAB<-a*P>MxPs`9(QKv6-PUlKe3Urv zU-9B6BF*zcgBcZlu;HN*FPOHV){K%P>Vw?tlSd=Jt$G8hAP$U+aLN|jK@jYAoU+yF z8}UCYpWN=C5(Mt~8%ieeJ?)-O)ti~Lf4bf&hgAga8F={y6_W<`+Fb2A$8eL3nh(QY z>V+XWv%qU3*OMB3VX+Yp=~!YIAg!FGO-npZjbi)iCp5=sZl&#u;vqJrslesVB@C3D z{gON=n)+LMS6$%i3^&)E^LT!M-aIAi>L?bIv-W4u>9>=yHt2d)tKKbHyO(1tquN0u zXSu`(tNN%rRAe>mu^8Ev=sAp515pJ1=F(>n>GXUTX`*{uu6Y4QrU7 zZCT+<9kH-8BBC`exo+0%L(eXZjL7Ewa~FLUc|*02QRujglXZ-68SslnuH%@bmlQ0* zBqr4*<(bDKf0&lDR_T^U+P@KyTi1pdA9%Aq=#__V**~k&aGD2kjVePMqZq9nFVMny z0oYpUV0lM_F(D54TDcwzTI8J^VDX{^^*iThX;B6(q^lLVrMR|!%2L7Vt-9I^vv_!8 zG~GSA=W^Z<)#ri2bd47nm{sf5j)0D?COT})H?7=-r3k)W9vF`a`lS=5Yp9B812Z-I zXb`DYKYFGH<`OTWg|p9Qwq`Q)ct{O&HjUw1uR{8IszI$!VyN7xL1c(9He)>#y*O}a zTLkU-snHSduh)-ha)M6hLlkBYFC^k`5 zny|5zt$zbco9eZxiM22o7y{Of&~Jk?Z&vn}L=e})&KW}O7Y7-JHtmapvJ4YU)ksFiA#02rpm)#ltaaL%zW*Dft+L^k_B3?Qw>G#u^{5qu0>vX3G>S);4Z zST@q!ReLV=Z<3*C?~-&j-Wstu=$r(5V>k%FG?qG{gysRwms*|PdwW}I&qo+RMkgz& z+tA8Xp#%@A4=T$VTQ%~WR+3*j;PoLRym{!;9AV$;^zB<>XmV%2Pse(fQ=gGMS`@Wy zqi(^k_HwiN7aePp>}ly*WTQ5ue!wfjr+&P0%h+t)m$FUN9wldjReQ7%s%E4-$(L=a zya(V#_`&!e%p|r8A1yIJ)@hcUhST>%%fr6~5}IHmzEJgFWEhhv%k73MmPmrmrH5&x zF+g`A=2?_1CJs~T&l5lJ$99stvz>^iv1<=8J>ELP{W>TF+W^9M7*?vnTlus0scYW> zr(L=F)Fg3RqThy*wTmVYLYNi?D;Od4z!d_a>$bBc`9-3bn{6FSc#WwHLLjI)|$KQHF_8h*?OO?99CtGWvASCE{)iA%NC$ zV@8DiCnW6LPAlL7W(nzGsqv&zkIG0o+3im1Rg#9kKG5(S$Z$C+Kz)@srC_2o=QGM! z&Hghmg3wy~Je_Dgo%s6#mOFOC&_ReEvUikfI1$q=y=u8$?2D-x_q%)SOtbU%*<0_! zn26eQeiR=7{G>?B{$!u~X>nOy=i0BxF_A0)6E|KX`cc2$HoP=BuYk&52EPx;*!Tzu zD;_7*84<(bO;8PsNyA7fAy&6QL&e-{V()NcI}7S1aXucvI|9GDdF_w3j&?vLem9sJ zrdr)=4kSi`diiOmJTPk)xZY>hin0*(X>qFT7~07@yLfG;4|ZW<61xu2eu%9Vsuco> z6hQuH*AI79Foo1qT>y}y!GbytPwh~xUgF7jiBehrQjxIrLOXC-JHTSqL=>5~*2h3k z+kxbyiGTCxFLmj49}78WnwDmFxJzsTfbJpEx!8ZbTutwFobhJ6mWn%_<&aP-l52<7 zetAIs3}y=EJrh!9$(BYAI%M2BG}dk-Keq5Y?`6nlj|||CYYRjYzi&5rr1k2iyV&B& z_gG$Rw>t09)~GbfCwhR zuhw;?$2`4!@rgg~PJNbDaM~Iv7UNhfZPMF^YREq7`FQK9qHGW2Ve0TUn*XEA6}E8e zJ(C8~Hbzx*rbON$dT0Y-#@@Ct~lv$WoCb6GUZubY@(|a=L$Y&}3n0`oqsBvN>X*e_t+Y3uA zuhC)eO(@O!uQf zC=&?87G0Qa^`5;MifsXvlTUXGffD0$64i2Hi>nzQth~?LRpZ474ckv)`@1`y^@ARS z_8w}YGwtIM7X-fZNG4=i$A6b7sj^5}kHTi)=`Kk^5OIJ!MkhSN4{%B6bXW)*i&xEu zz@6td@bN;vCanx=gqlQ+`fTk@eZL4D1l!j~($^QxV(blH+3ZWl$Dr2&sx;5YP2pm&sP_>(VDy;;E;Emn8Wc7?{UtHg03Q$t$WtQiCaZ`WM z>Lv%ek>N#%lGEpFtVg8oLvDE!$bHOWcm!^lgx7R~(tw&v6A-;b&^|f#mYqj(l8P~b z=e^=@;Fn4ICH;{d#o(fafuoZC4EjJ*!o@NKuII*X89m?K&bbAq)XJekwwG4Q*R-Q% zs7WI9O4zV5wEgwevw$>Ie7}K}os3+u_x1mKp_#w&Qw6lsqm7!D(Ql?!x_7sb(Mq<+ zyt6)qc*O*Lti9!jTHQ|K#AeaiXSXt4Sj+J1PdpmEiQ4VvievE;jN~AZ8p-uss0y<; zMI3(RiN_5WV(4A%f0hwoF>g;|b1lN=>Z0Kf$6b<`wcIhD#S`<>O4dSLPI-5Y_fs$~ zVmT2<3=@GpKWb+8&tcJ(#cZx@$GXIY9npKtm2BeO8NgUqIwmkuza)3Rn^BA7ZHC0BF#$*hgzSu)P z)PDTVTee{R9XNF!26z%gZK|s=6QO62nlXag>$hj`a26Aa>g>Ty2k z7mbXI3F1a8nA-C?$?!}r8ptR8L2tae0cwz5o?h<2-C>0B_Z`}6 z6yP7+tl%*;z#UWQDWp-ofqisit@ZJ3kz&JAehH`>^+$jH;?=b2M8L7CKCfZx>MaaH zk)fJ|K!k+R888rTR!z1%h5^F?*kq6%U)g8h51Xb_qzcp`%MLXv|qa+Xij3@I;?lh=bmeYAgg1p#6Z33_!MOV642a9qLM*UU`%{?92-9 zGE;~)K@t6Q=6!dykY3O{CIRb?*9LquK{BZ22)T3GC$T!0XV%V(LKc+CIQeKf6?_@+ z0()%xBG_c{K;vB6`GI8XYP4eCKMOV_%$xe|cOhb*rBIWmq|EAfq_c`S{*EF3ij&_> zd#rTa3M!51?XNT4biCjr#&nkz!e-PA;Auf`?Tx^;5Vs2EHG~FrLYj4?ZSXCHR5;5U zSQtYKGX4Dm)2xnQo+iB`ja@W!c2%(T_41B2Wp9v!ZNaiOwQoABf|qP*vZ0K;RJO6J@_a)t+~i zny;(+PTK3w`B+B?{U$28J$=w+3YBF)AFgUrbSZc zi3S64pvIt;SvfJuh}7%IWTp039DEIt+OZ2+0&EExr03NuB!rt{<1q}E3jn~Mbn`N* zrxEcF8t`4BpcQ+Hsg1Ti$p^7E1wN_0l0sx>Zio5ma9pJ3WJ089^{F+HSw*(L!dh4e z%q?d%m#3=}emtm-7A^B{k*Tvie=}+_u?qq+qO1I;Z$E&D;3Tc?4GtJg{Wi+}0a(>5 z=PblfGr+NKMd|+i(y>3VeO%A)>V%u9fRhRp`|K^ivIoA+5fIYU5AI8P*aC<<9UL$j zw=w9MS2uKQd~a1_=y{0QgX)C3GOO8f^u;uv155;cs}6fd1+h0&yYVhqG4Bue@B#_p zSb+4=aDezuwcCs;U8Y*8PCnTHNlyLcmc9c6zNIvu+;>`5mwaC8v0a$-d_aaGC=Yxv zV_!kTx}@6IG=5Gy!S^d<5n+s)o7oW{_2UEg`4x}p6Ul?FdIAJ7Eb<-1rLKn7v<>V( zF#o}cVRKAx$07u{i|MHSOul4 z=3$cqT{N2L2QWkbM#<@}>}l%;BceH}EH_sfEXHPL>AMQV{j+S5rBa~C)iO&-^YKV4 zAS!&44>`wDh6xL1IBwC_$g~14-_^|jetIEKf4hmo5a;=KLL<#DC7X6($6C8@a8E&F zd!st0fB0R4)KK5>ieJL(9=j7saJ@{8>c-qsV3q-h>NYp(J2V)L&*!?PF%jE8OGVDS z*fUfVTCZ5o(cd=IJ3Jo#lYye}aX2mGK--7mju*EK&qeQoJw)k>sh4&Flb~$&W1o1` zse4cil-T9duCY(Ou5K+W?j@=t@wUPzQA4+W7EhKc0GzFUfVTIa6eiv4a2VP`I$#$d zqIZ!O!;ViwkR&`PSQZ!gr8|WB<)7>T^}C^BFzAId#!M^t!vDT?#i<{VbKRDJtZmAW+#SSeV>4cu{t*_^RU?YwzJdm( zmCs(*3A8vKQYnSXmqV4Si%(u&+WHzXxGU^jEo7Qg4V(-;55ldtM|-9e7)2iM@n8uo z>Ov|_J|+cBU+!%K>79`i2_I3q+XP(3g5?@c(gN^O;04!n;-5R@0Y)ThW}l&h4vc_c zLWykUDNne*EgMx*U`RU$du-ar3DIW)9YO>Rcl*~;Y?PB)jYSiI6XXHrM84T84Hup7 zT|t8CEo0$bHG4FXERIj^qOH^bxjqo04l?5cbn3R_LMty^Wg>*M6XvePhvS_*@9Fk8 zyh;>s7p)adFECK}q)qPrK}OI}>-S?EStE#4E<+9!pHeR)le(hz_w0X-GPV{9IA(S< z##%&U!MrfJl06Ii`Dvs~JGwwTM+VIGr0^yXX7D*2^h*a013RLk&9?z}y$~#6tT-Q# z5)+>%SGqKV#AGz!tGCZaj5>`&o=Sz)c0gUF!k(dt%Tn~?mmn2K-0sNvP~{73_`$#d z18<@M>zBrsghnVfQl|jvZpA%qIJL5O574sqc%Ndr=!yCi(fc(Q2#b9%pH%3@WbTdn zgSDPI$MaK7t&9m&RDj}&^JKNM5D&nSIsxy^6X+-wz`9fvyR7B1h z-+nn-YR`8OOi7tJXbg%(k{;AjWgeQAq5<;G>LA$_QiYo|ekjANyFB2S#-VOcZ!m&I zu%g(F{F>vD7X9~lug(lUUt|AVhEbg-WJ>TN?8`KzxRcC(*BF7ml4Ng+3WUhf-&aIJ zYbp?FD#?K5Mik2oOMUi0|KPOt^SEM6{0$*7*b}a&SMXFJ`e)+~;tGPho}DqP9xtd@ zxT3;zVENTr=*Sm<(i~n6?S!y!REt>*eU^Y@Iul->F=M(AjWG3cR1W?hnPr+gP!+-2 z8AVauIr9!&A<564r}qu+>+bOmAiy;P9NnaM{2GHUgG2E#R%BaaoeQ z`)S6W62Sh7ZY896p(vfkB!8G$#{gjmEyWsv>ECA)Ub|#61g}e5Tr0|fhwJo;2#_pK zo-w+PXx8&JS122bFylvE(5NAviiPP>#Ux|I22=SOD>zpC{#JRTNe;OAki*v`&wxA|V%?rD?U6LgFTpgdkE z^{XOJlIETy+?RuJV}!BXDGUP?M4(N~f1K+D=58Xc-(oXXHVIW}(In4PRtW>P6!u|- zKwuW?r-Le?BIAE#Bfyoz^0#!u`9sXGpdd0m1ePNj(4zU6FBLQnJQqSf4)=d{yl5Qn z0r$JcijA5Qq_y^VI?)j|V`xg8j*xS@p#`oK9S_9I@#OAYp&Y3KL;{rl@hvp^p))&R1+^BWIm{l zdgqvN+_qwPQ&1+)wiXsp!*O!O${;}mKOSVU@Od>?>Lh?op=!c$@H!g)Qmyx z`Di&pDkALkwLJr6Q^BLXK`o>c%(Pc}UBdb$uog!z0OLNGS?xwx!K~ryC1JbGzKI6x zC#<>Z&rhBkVLavM8jWnO@gHKb$8x7bM`Zz`&_I%e-|L7hwoWx2l=DkDXga8L5P|e| zo9y^G92Ry_{E>e8-@vv{N7ZU~C|zy-icE>$eucjN#lHQ9XQFpORcI-&H$6coB5l8z zr#?rpz(}7PDWgF2)3*H(b{6)U-6C-0C~@c9se@> zO0(L1g1ya{;9k>lNuigH0k*RLB1!$UF_V6~=$l#4QkRZ#3Wb2Myyx%)y9 zta6gC{A%$P!z5>}WPJngF+8NAdYBY0-w^l#TtWCHVpDe1X&K7c=PnBxh$_}nj63Nu zWwKwTMa%Brq8YmPzKSCYNGv?2`j1GdW3&L-0Br61_`%}Y11)I}Z}0%^H0>p30^;hi zkhWutG$xIu;3G)ze$41>LAbGy7|XlE{l1^vwNA0dWlw|6+kg2D?+$x*=++!t;#df+ zx7V&KNT&|eH?&EI&6-HM0#!oepXLDB1I^dnQs|hNLHJphRZqVonvQy7ygPWa2V~sZ z{TN^uMQp|bI%7LQF1PoG?*0;r$6jzvqc`nmhS22&V>=a_zpAvtOw zkziK){J(FhHdiY^$U>1(q^|zew#UD>^AfeQx&riW9Y;b60 z3v#c2>))7#v$Y;Z!q8i^&dRxd(^_3rY<=Pn_6lD8=Q?U;xN;sO9z5n_Itn0Yh<4Yvyz#b1S|tapF^e`QwxKaJJI=7l>8`y=7} z^cB1R$!1Bisd7+C`cScN=dXa4pC+LB2fD$$;)aHTW<&-IP>~$|A5D}laQS!)OwjEf zY9MT_&W5!IfgqQR=hhea6~oW1E}XqUESdfhoNA#~2zvSz*55+bQIgiUMnjHr+DGDo zQrb)6f`phxI5wtg(=u!#@J~dGMikETp_1UULi-M4=x+IX*q|>DkhV}2Co)}hqBX*6 z*VB}jVS|x!L~~-O%g$+KfA2p}32Em-?WU0b{EWSL{B8L)u7PWKL55lXFi@Voy*8;X z7V%h6$I&q8=SCVcZRt9BsX&IwW+DE4f! z896jac?6cV$o_|65@Xs|`Fa2hFk3eNwM@f#z-l)n9vpRHT@@C52%98xd2p^r!mxQj%<2!6I(f9V zvsF=v)n=t1`Rez{b=9Yk(f7pt9>ySrIYL5Q7zsvq za2-j_%2qsr+Pg!Mv?V=xR_3^asEWM@1lAMoU$A1^=tmGv0T4jHT_mjOIZ|j?X^fa= z0mxO8qL*nlU1ap44rsK%M!&vwV(!@GBtd&h2 z{q^mzd95U{GTQ?&QTwRIlTzXx^6)tp-%)tRWcE2TzJj9>f>n%czdqo3<2)y0pokBhAQS|K$K=04;^UufU6tR2&wMI{E!k|EB?5$*F*={*Zr!`t<`+jlMqC=K*!P;JRi}G$l^n##C_dD4o*$$!_!C{w0n z;ML&hQ8BfREXPDS43WxYoj|Qb0(J#NercIJN0~WO$gt}lLV|?{d9227WEjG6(^-Y5 zB3TF|5vT50v{m+&QMRqob-agKt3y#cN+vQEd*0|$<4Y*bqEWk$`4rvyL;9z1s`LeK&Hs%r_cqiWU}j`65L*p_-^$v`8qy# zjfVWn`6{Xji)QGXnCa_K>^S>Bq&>WkwAY`mCmwN1KIb-xM_zeK*ZqX_z=jqjIqMCP z0vy5&oWjxOB;f?#=>ocuG~*C<+$j(pO`35GJMDA{y+%@jFYb4WMgRMA0x2%}E^`|K zR7&xDDKw-MH20;_SaVyWbNzpiTe0Tng}gyN@F8?CFPgeRE`3T*FGc`L^Aqy#AIe`B zA%XVg86QUbcp=oH-;xYr#uR}4>a3vVo!PliTb&Dzxri{l@F#8;_|XO3&&Vx)X4~8x z658owuS*%7^sz{|0Le|pJgNSK1jA1fKo1t5=Yz<2-XQCkeDp>42s$Otz@Z z;OBQ2rZITdsh|u?-f(AagST|hwA08PCs}+4PELu7B@);$7J#XRt&vl|p(dawaDvcU zKd*?~SWdMBvV$^k-Brok6)(u=KP_5DfciThtUXP~Z)5rP=s-jx4jpBX#fV9T>Dh}&(5dzfI)QU}ny%^C??=`~_X~MVS8MyyW!)q;y+(wN~GL&97>y@CV}45iK-@=mI~<)_#Q?h=-;(pqv4Z&lN{h z3_~NNu1Od7{VA&a3+Iz*qiJCfxSg-o9~`U;Eq!(nJ^6GsvOSmS3IZEM zzNRRo@8w|q4-J-$k)E|PPaR(UNVoRT{2Gjo(QFn(h~mDuIHxH2TlRk5`ZYFrkJW}M zTb;!I9G|=qoJTn(?pD^RlMz)lWb)8*y=5^1b}UG4vccY@_I=fA-m$hEVuO8K9e6D3of@hL*&O4tX8f$Yn(%tOSTXvZ!gEEt0J6xPOR<6niY&LCgxNc!0P z!fJ2ZUo{sh+yjYqq3J8is3xz~SBcNU7fQQ=s>c{wsn5n3kh(3@%1a|*jdrYXLF3`k zmy`y=Y-VH0C5}x;6kk10dxYDPczb!pF5<0P2sKKo@kwCo%uYkKk(u*N@z=)({k#dT z%XD>p5O!)J-`-wFnK(HLzAoE&!Et-uoobM4j5muH3d@CP7N}*!;dd8KMP6D`It>Pl z=~Qbinu{~RX@CJ($kV~ny&!K61S==-gF%E!=ke3OJS}>HBvEQq8{bgp=%iD)Q;@tH z=~T#M;lc7fHY=f+QQc}Cse97N3uZ%YZr6H$Q)TLO>*3X6Gf!QxNlcmw43Duona!wf z-MW53?5B!CVTkrT)HU!+g4$B#T97Wkc^I|JqH0pGri~?Oi$(NKE)fvpkvVKXEX^}^ zEm^qVMLPDoX#isKyst+Rq9t+_-EBKs)_ZE;PbK5NCLpYk6qDcBe$Hj5?Z^BJe`kc> zoAD=plw1jsT|UkePo)P`2BQ@<`!DB>;0uIoN2^BULGOF?87S9}NY@Pt?5VhWa2D$E z6)^+NL8wGV5!cq=n)xh4SCf}yeOjPqUxsaF18PGfc8^gyw;(Ioi_BHtS}OfH2OsbQrNOr!k5AM%gP1IvKPvK@a{Ss?2ygA_ zV~;b!AD8E8gg=f6lmVncVv@ZvcmlTG*kI*)u2);5YiA2@s$j;#s(o{ zWMjgWNl>C61pjr#(Jj-2E^Ct+g-&T3Kk@ZQQUSeSXU*#Mnwp`UBcqij0pS0Yg4a9; z1M`+tm%iLISIwJUUhy26{NqxCJmcQ&zi?j@kB%a2^)!bGv!^m^ARBKE;`AN;?E{il zN(NrMOz}KVqrZ%^l9hnWAXnG*#O)om6mbK+2Hm=^x7z6{Iyse_ys zzUWdQw8|BAn$6Hwd?nC0#(HNe=Koi<^I^3M_?Xr`=KbDFi9t`KY-Al>Y2sEpu2{FTY^i$26i3i zuLA684EP$67J>quZ^W%+{Hu$1|!O^M);)9kA2-akrVi( zKb^XHncljsT0p*9Q62vXmF6!&`GfAqyO|n=e{U%FZY&3yha{;J1?&{ar8ToyuO(4vTsuj(?pmhWj zq<3RjHX(>*U4or$#6Az_DRD-@a**s=NndD)$FkBWX?MB1bE$ijqK>#pJwu^g4PP=T zkIg9YJvTZ!F`Z*x_|dDk7SYyE{JL}bnd5iCxlQ%or`sM{op0*+z3ISt`@EPpikwAP zrYWhslRF>T)>)#ZKRWv%*2qfP$@Z|!-yilViylG88n$^84fiH!8B5z}$UPkX-tY7p z(6(t8EM~QYyKNOn2)+6^W3VJjLWYPnK$M}B6F=jE#8AXORBcDer61OAw(7pu@=db!YJfwYx(D7RIII64@((Nkdf4_N|;>Zt`ZC5F)~)=Wg(9$x1bjwR2cOql#O29$BfV;zd+_BK3Zf(bY-M zmKiS!?kcq(;~`6VIeFua^H^fkVN4(kPsEmg;MEQ|@D+oCOIrf2P_CB>NOEp8S;`x3 zZqiVTvwRDqnqyxz<0pyGenS1N<$kr%g{oyg9k|~Cx3sI}`pEJy=ltYT4dRS=rFH|C z&8;DK8`qpAXnK_q+|8ldmHK9cO+`DcbHo>R%KIaj*O287!Zm>Mn=F4tIMZo-vy7ZI-JEY;(lMi+coOuxgX`WcRv0L&cMyWb% zI6hms`eLxmA8o^K64o=2$e8=ZPVbD7YszNX7A=*EY&q!{A@jW&S9Ht%ZFu##S7y-5*AFJ{CLGImynX3x({l0yQSr#&p(9W&!fA%R3 zWomp*Np<}_D6dMOE*{a*_aq`S7)o3)Gx|{;J|C+Zw1^v_R9x(+3SE~?_PETt>GobW zL2fM|`cle2J)vtu#q$l8qlov(&qg?dH9g_n0qF-Hy=ja4J6+8oRvoT6uI0g_X5Q3Y z)-%D8<>@EC`YA6Q{Q9hMVsho)?N}fB!6j9C2kZa{MRjK;KReylTg=ZDoc?R6q+BU; z^}^7F4U=mu`B>+4JAJo73esf$h@Z(>x!|=sF_ljyVPLP*_1$CZ%%u8I90FE@+n)Hx z4h)|2v+=9JW(wCvx>~yJ+`+FGqE`_eH{HrNiW0Ukr!~O21VyjjJvpWjF^ZksP;|~0 z&&^%8iai@kY%cmm$?dBDM|B~6L2t!{@j%x$>!Luf|7CgN58a7Di_zG>7DLPy%C4IK zrn+i>_-zRT)_LF*rxl{tW49bh9L6n^*9W6jWkUWM4~UhC{EJ(5ROaT{jjV0;P7s-- z#=^sgH3-#B6sOpl1Zi12t5aiI7A@q8tvD^`yU*+xYK-?U-06)DyO%w<{l6_=;=ah= z)Ut(bkmVneXA`aKHj>wT^6lEomV&;Z=godD-}LhL7fq#G=?#A91#i>;+}NhTnv)ez zccMmZ_AZ6j%&yhGHTJ@SB%uVu_wL-1r9 zy2T(;E`D3pGFOwD03b|%+;YFGYVtrI-UY{5(yOF6w9ysI z3|BVM{4gdSrsPuT5%KX(Kt_P|aa$v}xGWW; z<-DDf3FfYL;rV7lX*hB>=kbhnxNSJ0K`0IH*<_Rv5lgL#2%zoNidm~hbt)VUMDQqW=1Cb|ej zw>vaF@I+3jFFd+xsc}X)5BSe<3CtZ8_DNVIjLJ^?8UxcMUs zNOTz{b?SksGZ|wv9nTM+LsJZ1w zWs0#tYFbp+<<@=F@SH;0eLK)m7D@TU%cQ+7`lV=o1ZX&zuRzCK1uVi0fh!ou13Dw6 zVU=W^`Jc^`p-O7jp?tCKRbKRj$iiJiDSNCCnFhJa6KV^YK;4Wl&Oaj5pWXo8RrQ%} zNuPJh$oj=LrhY`cS~M07DwsME6#aUcx973EY^=0v1Sk*W zp~`k){wd`Ek5YJ<`uv9Bii9y*mmz_yf zPkaw$A88j4D{j}fAx_lzje6%lapmHlYJ@reAqb67O3FhUXm8i;gVzQL(>II_uF;R|toQaE%`|XRJH5Rf(bU-=o0pSaAeZMGQ*ft~8hclR7pzru zI!No1Oc1uyD68L~7uJ((!FEHq zOLWCuUY)+5;B%$2QH#DqN4z}dG>f)ZXBWMJaZ5%|M=UH-M~v=m%3D@<9+7x(K@gk@ zGS9EB;kT{|D9ABKT(O^tp5~%-5aqqbs5XLTi+5!eWYlQ) z&4gv`aVyu)tZ|RNXz6EDY5o|}A>QIF?N$o@O~0?{G!Qh4x{P=ivsxX26U+b_5(7_1#$+p%H9i(fF{wlA? zIe7TU#o7Ht)k0Nv`hU)uAnLj>kKHMB%Cv?4^=h#&L~B6PA2R57{{@{m?I3Q;ZW_89 zcBWK=!&S-J9`U>0{I*GD(^|)Ygs`)}6#m@-wQfv{eZp}{H5`vktu9i+stG|GkQ)f3 zJwm_FQ=^XoRDygUUexGQA$0JJ_Q_iS$y6({YnuOKsR`=Gvq0xFanw{B7!el|c_d^? z60qhhaGKj|dI)eBi}vv1|3{#sX;b8|PxCQoV!LN~;S<`XTDg#~g{Qkzh3N#PN;o@N zfKIGQtf{Z1uH*l6(A>VJwwAn((=ABuRu4JLNYS-(>5`q$WN3OodJDl`(GA+0pbWKo zE2UQ1tFSr10duylz^w?lRsQD_Uq>7)0^}SA z52On@k$*P4z^tgD%flfWc}XbT2`4rbMRl1wKziVqc!je|1yMz-UC|C+Jr^-?*=LrB zt3}(pL>{TmKh7>F?!L#foB)+>&rYMqz-YSr4e!c?)WU5;6IITxSkP%t%{6N^@AHaT(pAdQWmr2MThqd+cN#HTN01Wqjd2KfT zW=3p&;EDCL(mVTW^-t`hePi*^6S51o4;qV(Zj#K{R&e(K-L^5w6Xyx3NI+g%V{9W> zc3(EU*r*(L-{*ZC7EhJSq}#JY+|dQpwd#dXfuWjK~@jJ&y@|J!sG;lS7B9~;A;x47-f<1Yc5)ZM7} zg5N-tBgQ9fKnrwMdoka~&Mu6?2WKz*+BwV5xeC@Us>+o2oiVJ|cNXZjYRC{S{vH`l zO8p9Kaf_7F-)W6)HAEPlvwAGE`dd9tPu%9nqF53F(C~%ZAH~6GsrR!TXxZ0 ze@px}Yfl&0+t%-!MlwA#9ILdkl*~5B z&kt6JO+-{(Rp-Ue=USJ@n5CZAx^x793OjS1rj#^Y%C>;T6GZDJ_9>48{+C&hJ3*tz zd7H~#@efJ!zhd^#MlXQKup1=2y`3opwr_T77qg&!e$)hhTBZIZ;l7$*nc{(FDZ0L) zjSe&(8EZByO+y}`!YNW=NE(z1>oa9CG_1ui7{*?<4Y+1?AmkLV}!0u@}37UE? z%b31i`R)E|EvHa<6KQ)Tf{{c$tncaX;w_}6ry9gZ7EzQ%>^l$)nRM`yVIV)~wkyt$GDEw;5S>QB2cG5>0Z~p;*Yn`jUdgOcZ=w zPDB}egqF&E_Sz6^A42V;L|&RR4sm-yeN97n6qO~;h}Ypk_|zLJ44CJ(fD%tD4CpDU zK#g}bHRIB)GlB+9dp0Bqw4!hP@uyQ%cGX2Jp1Jj4RVvx0YOHog-5U7ZJL{V2tf-n! z%epTpMi>t#TlB_2ek-BcnR1f{+eon@?EQi(N5!e<>KXjm z@%3#+_}WUX)2fOas(oMLtn3eo(6N zw-!n)*a|_@$xRr{tWk+T7Ryh&FhxigtE7?Si~BTPre%2rsAw?{&Mi+!+I&4wNHF*c zHXG3XrzYa)v~JucrW5c!f%cz~$zLP-Eh<^G5Umyl`)Y%+G{#OG<-K^wP3*wKXNWNL zm_qy9QBGAw(Z;mme#u_0r~U7fr3Yy~f_( zvW*CeovvFgpy2ZI3mJj!kukW%N$p+1=ar%1fZAm62YKyZ8$KMWe{q{Xy`X6O=V5((9S>r{jd|B#u?6 zEG6;BJJ)G@MDk5z5YiAk=9{?XU4Q+F-xAVl))NTd{tr)I9u4*W|9@Mw5K<^(yQMNl zC|jWs#!|YK(O4oBVH$>;wJ_SOW6QlWiXt=9)HJp%LkRaKD#A<|%LtzqOk*pVagqF< zy7&A0^PbZ^%6YwCujlizUW|I4VXN@5n4gWO0|fbwjh5ccqJXyBapgz*Y;kmM)Z{+6 zSiNk@=pZj806K_$;P?tqSGTK@thd=@vaVm?)T2YD*hkJeG#ODd1i5AOH?54zaxo5M zD+T9WbSZMg)) zNPEvfzAyUIfqviP*uTzOtX_@fp7-ouWH>Q5VHEx(dOPf#J3o0r(W1X+{2*mtf9Hmx z?7)gC%k0n!bzP~S=g_jh^cL!-QNN@rNIK8gzYfB_gFZcc)AXn(Ip$?9TOmR#I;DZ3 zXgACVUVCR}H13Fa?h1D0uf6f(OsdXi*@a#A7w(Y%M&io%eRAC^4Hwo*KKR=sX2*4~ zUyX|z)|$PYc=w(>x*@BYKf4EKB#`*%;Vc9aj5_Xsz@Dzb)+9#1l67jv4_tu{xhezt z2!5N-V<_|L{=g9F#7_e|m+=E{C!H3BH$~A`%nLJlQPbTUBb{^ev19o9(v^cztSjx* zXw}UyRCcMQ&)POnE96D0>ds5VvxgNGi7x`K7+awcDeH8G&nnU>7%aXDUB3b2XRPms zO<35L+6ua{yI1$HlaAu^B#y>po_m+A5yuTQDUS0h3ws5l--C@U1f$Q@6pNfcaCdTI z_LH-!&6?KkMuPAywR*lnx#U!v7=J@Fkg`SB;fo`qjjBv^4mJ|dU9}mLsNGVRjUBxy zu4dO=uJq?*zA?c-o;fdSHn8xwk#?I}LZn99sbKjTyMcMuFG?3qPGc51FXRd_ZPDA6 zieAIC#rU}0{6P+kTPE5k3b*p2p6A;#QI+sOcmhL^aZJj*%+R1PEpO{Bt_we2)-3N> z>1VZzZ#i%1S3gIkOYNMCxFdyqnOmy8)`+`_x}{k`gQ2B1-_j>Ns3`Ru@OQLtF&~ZX z+8!hhUm2S>-xD$Zu~WS7enpXuc;;lAjy6cKo!V|OW=nJDYb0;+ji`1=-QUx+>r-mE z#^r2-)~UawoyupZg<<0A)n@xm$Ilo&B0b30q~A0;)%&0_rQ;1pH7wxsyMI*5yNco5 z%)ib&*c-G_x@5nOhm=1Emcl)n zS?*g`p#=Z(YMc755)J0Q>bt*Cx1_{$adc}fkrAb(hn$|D8JNy~iSBiMj8tTP{l1n& z;M6~$;fuOV)Q{f_(p>~i(>#dvL_m^sa#S7|*p@1cD&u#xjN?e2VxEtXJBEtPq=(kJuaCU@19xUQ$6y6EceZ}U&)JOoteeqs zy-HRB0t%R~N*UsEKBm{D{)QSeLeF=^^L}9W%PZNF@=9s zuc)4|wV;M>bM!o~8*46TcqzfGYb)N%6oux&zT?}EjLqg4tsmK2Vfl&f%iL?Nt=u2k zb9CjkHLrgeFldG=r6>v6ZBLVa6s5Z?$+wLQ7k1VUMcxExza_ohSJ!BB?Y5vM#)lSy z3XtuWQpWCXEh}34XyG%1U-^Nhu#|2jm)NI%jf&W{ zVGNM|K)5|Z7HDunY|*_ge0xHsKwQ!9S}QB0deXZ zk1E#%=+1@A>6{)~>LE{p8fTJCHptN;&aAl=LMBH&e+q2QLkNy4ovK(`d=MOT+uc*OS zy-yk&jP#_D6U#?}-8`LdI!w;eKM)r(mCXhw%<6+I(1Oy3a>%pw`F3ltc>iKiO?k7^ zv#9!$UKxi5h$dqChsmf&?De~o=ED!1Fyxjz`c=hxiJUD>$27Y6rbWw)9W6mI_SiX- znfpSIHB4q7`*xf;H%IjbL$-8!y{t4A&Mub0y4(Uf&={2O^GxuamSVny@9KE*^76z)X#DOhf? zo8bP5Fvj|yu$fXfb;KeAlD)ol*p?HHsgd1Q;1=gn`*GZ8OqHGg9>ydgPsw>GIJurXj{mcC7v-NJRoP6A99D5R2>t9{MHDn$6?hG!j zgp7A*^Y4#!^iCW%4A)sP|g;=DAh6M&y#T_0C1pzZsNA zx|9d4+}?73Oc&0SkEr1$4n!Q}XO?UIJ6Km!XklX7%Ib9J^|q5o#8*-_*@k2dUVtYo zOQPWTrSD0xeX54%-+yrTWKnBXmOhm)#M^r+9Ifq zWl4FaO{Gh-n&LR8GE~i@Fir;hR8YIN1ltIfUguJW6{6kr@}%QgBSC4L&PxWxn=;Db z=>JEh$C)AB7SZzal!{-J9#P=ykSwl>IKou3Z}GM$q89q0Mh=>nDjd3Y0+)G=UzSy1 zyP`DcWH*Mh-UYqDO4YG`c-gp7rx9UQFV0w)wMKb(0-!Tlg(ew&IMwhX#JXmp%0igO zdf?n+!-@9r6cyH4lr+Y$8hv3@%s1^q&{{1fr5iWS3|y!z)FD*AZ7qf`ICE|<1d}};D;UKc7C0lb!D`G zw|{*LTXL|cmF#@MhW_d zz+MPi29&>Yn~Uen&67GZPT9^=7$&=HQ$Bw~0cK38{;EDI3iiqPCrN7j{|S^nynEa( zY0F@>>No682pRHs_)AZi;}vD%vGwaC%d{Sw8a8EsJBb>R!?~5m2v4+3*@&Z0FCz-; zqx;4EXx4juPa=XA8+|%!3X`D}bp3nOXQ6}qR7Ir_Bcyrt3;-h{3d+uA8jTDz%XA z^AA6;8O@+{(KQH>C%Zj~pKlbn$r= zeQ=9f`Z`_HwX#^9zmc}(z$~;*fcVWfw9siXdEadHg5~PO>59-PdpcIsj5oHA4d07+ zXgF*=jqkB5+%QQ!GFxi@1#RqI8Mivd$0QEs|JO%_n32T|$6Y5+abGx^DUs;TmUeHu zlkvu0Ism47MFn@-R(6ZJxMS>d`s6|8bUyb`%P2!iGz@wC4u9>eI#S}Dp2PNU=Z0l` zhvI1eQk#vAwFnZ^xzT={5{6!|UtIF6qB*-XZGEb+8|AZQ!MbwFq3URCjM2i;k2A0@ zIRC+OrB=uid+(mKw&>2mtw@+0Pqn|{g=9FdYr{3}r7+{51d7yUU7Pm}BrFoF<&2IG zIB>Eg^qu_2@=J6|6Me~JT(0nj`G3|cFS$repWaZG%H4(}O9TAw2T9@67}u0*=lCKs~74TN;Wq8j@E&?1r)&($zhL zU3+Nq{LU=yd8(n*aW@?!r*y)-)BqicN?v|IFCv^fCTc#Tcqd@|tXkf~?Auw&_xlg1 z$?$ekYqz%)fllf|-eCV;OgrbHTOn1{jG`1ql|pM7D`pPkz!@}*03Pk6|4xzSK5?EztvWroI3Re}Bx=Raa`;Xaah+n2fp;qkF zCIG2Ueg^4N<5=OD4(6dMhsoCtmKnBiXqMs7FyAG|^MI?C6v?mWT60DYMA$Ob>|Ri& z51MBO4CeqQ+0A&%!ilLgBhlitP+lxNi7Umjt;Sr2rDn4{BnEZ2142X3*xXX8zh25t z3KAaX$E%xNkhtwDjp$VVZ0=c@_c^CRnSG};a3d?e&I=8Z-EWCy#x@ymOXQE=^r>rn zf$6{ngm>>8B!s34?hpJ3O8fqnSUfL5?Gio66@-9Rf6yRN~DMA0q{WNHL>%p%z&i1qmgh1n;@OQ&N zry&$sh$Z1L?J=p&*@=_-4ZVtBur;r*I7rRzE7rdR9cT>m*y=NVjn z`Otk8>di~QIFu}|l3fBen$x1-S0m8%7fyu4dPmDqb$tNP;5A%bnM}F-!D_=Zm`p;n zf5O2yb{R9oDvsU$Q~_Qtb3!3Pr6&g>*Bvh#)tO;VzUS(xL?xA^5(4^AXJq)!6EJ(V zJ(V4NU>L+Ocf4#-=cO}k6@A`aQ$&wZF%1AN$Y^5V9ne7{3<-C*dB_%j6@eTc6oxRL zt~Yu8SX`{|;S{G<_U< ziZfz8TNtwlm9jc_XaSD>Y9?+I=VpIT>PU5P`l*A$wYjpW&eirMM!}6$)K zUJ=dCzO)Jb0P#KhN)lTALbBjd5*SleqDGe2#@G-qWc_?LZ;XzCVw*FfGfQ!fvduT{ z0n&&Whd`Iqc1wMI^ke9eu82(mnw|p{Uj^spF0MlU+FW{g4fbr3dIsczcQ=84AWsVI zB+ut=ML%?%vuTLk7;}%!%X$9SO7&a+(snohN}j@|QrG#I*lx z#psx>P-#T<>N>n8bmSUMNPmICCcz9M=J-4?M}&5ujw%B;An1Y{*vF&CHb}pE{P1@S zkGsiYu`$!Tw>Wl91I^h6%W_Vl?dvEwz`Nr(uN-r%L<6F0rki=cGvgpcqA|-#%UBzV z>=q7y9z7R&KgChTh!Tn)cRT-paz^{(AW5`S0wK#bThv@HL}yHa>d^m$)zbZQIe}?-#geEKT^k;m4K8@6=>^usSgh%I`FN~%KhnPPEHFNtIKXm-;*$b` z4viI>p}s*ZRlqzXp^#GS${kgbKN$CX@Hk8*}=z0CV5%MU2Ak|Z?yG6Rj(_- z<^rpn@!d_R+c8td>lN{!kBU>~FpOW@WT#3A(-N={(3kkA1_~3Yh6=mc(?^jy%>^w# zuEslQ#@il74MQ7ac?Z7IV+k6e!oR?R@A^m&e=G^@1Jp8`1j#k7p_l<&a}VB9-VioEVTTx+|cZNsC+q@)9|ozf#)> zpTFGsz5~Ck=UMZ=s4g7Wk*8r)Bo72X89pIvMv38@VY?BJRH>Hh&w>jx({P?tY(t#OZQfA(`-mTq=r- zmGwHM`2(}8GXf;E-{`LnB~kui_x`+4`F&jk=0W`QY5=xU;Udai7`PO1>H&4-CVJaC zq8yRdRty)Bz{5#~-_~8WpXO;a*^mIlG^)~+UE(Y%G|x5F2XfkocxK8fn)SMl74je> z4vjnMKa~0p?yy&*%pg-R&R7t|u7MjiPZAPQLwK@&kWp=HD{C~F5|n^=M1hzR$IH-f zO}vnfD3a`9rN%@Yt~>m8bZU)o6>}C7pDP){L$UAM%+Kq2H&7$MU5kQ}@^pICOnMth z+tI~+TEgt#>P3WW9_Iz8?m{evM~^h8t;)zdsM~{h;f4U|4;NIq1CPO;-amU=@Hy){ zwL+b6>(Qdt>=RM!YBUWYU`P<-axBb)k`dsvjfhI|(rD&_IXyEs%IDq2$hN8jxfYC0 z)VB-Wc48>@Hqox5h2%*=`U8LS)zyaL1JTHRZ(U!5hZr?-dN%k$NgP~I)HhqjxW+MV zxCjeszZX8C-Jao(LE@BsNdtZFf*TvWqlQE;pt{+5&@0Iqv6}_6{4wEf{^o=g{@EK_ z1ld_I=^0lK8MQ7yU=S3R&`Ih6YfEL)>aZb4sv;@Dj9TYsCiy#_PuKX zxYiT62kF-P&B=lETvRyROW1`?9X*zLH!R&`!+B@;8fm^%1GyHRVX)1<7=>(Dqo7qQ z+dc2uZ?T9vxS4_>!Y4b$;VVH5rLmPEIvx+=;8Idw0*D5Hu75A3rCV3GD0*hN>JD!c z%7~Ya%`#`8+PW&Q)Go+q^5`5~O3d#FQVC_8Yd%SZ23TLHx}!{c&X#nZQRS}V1jFqV zH%yzR%s{oB^By|zqq`{gNsDV1tcmjqORTs%+&%fE1B?zrKY))J{ScwxWdOk>0K#~> zG@Di(5BIeYlyZKRV&e5Dtt@bkC`bO+F>8$yDexk-N73^MV*RRP{tsxz`T4LOiA~q| zv;3i85U6#g!fX5fysc&_C$-!zj4bbbZC8sJJVbd&JqNishTpJ_9-|n`j)K*=!Xah4 zjTjHt)5nGlN*9`7Dlra#)P{)G6-NAzZmmK;%a-?lqvTv#Xg{HufCWZQ=mTJ0XL z^8Bs}EQnnK`uTQR-3LKhx1(uq!<8ftWX~23HkX*)C0U%jvo@Q>FA6>s^+ z#%Sa{)aY=CV>gLCt|}v|H|upH^=#4|x16s`SXpIGzu} ziq^dwcVBo7p;71i-z~v`a)!)E1mu^biH_M1xCBT$p0aq04agbP^rxK}X~(Rvuw)$I zpFTRkbDu6YSYj6#(0p4QogN7QmO@3zQH%Ux2hNxp7RKc)O?FB}U>Ok`y->7k3R=d{N5-DYRGj5ZUP7W>RH2r?l=z99q;3Z#qQFci*#VM4}g)v=ciF-BJ z!gU?JS5Y-#o&P`qKziLdFsF+XY3KSSHG7(|m#Qq~Q8aLCTiO$#jrBvnc1QT(rt%iKiw9cu_3? z#m_%Q9*;FwXBOo{?$ioI;gk#CpiZTeYxPq8@1|{?J>SA8MGG@d*@6lHC%%4HQg5ps z3jxIo0cov`YXe%wxsCgu)ro7@qQApoznh%HmCPX<+nP`A#e3K#?&?1mAp?g{1U&${ zP|D3>+;udqvp%_NLiii1ayQ{mM)Zc8O*7DWtTcYre6+8PyD<{mR*L-fMQQaKY?fMm z)Oc!)u0Je^oH>j&S?sVTEI12xL`Btfo3P-dO?J(Ss+rHiCpK(P-HF5OLfrF@nXsb3LAZEkq2HBbbQ)z z&r!!pD(_e#Yu}4bzgV7k3)u;qIVcM)pZo!U>iu&Hw;~3CYak&pfz%mL1+_^>c>8-> zZKKX?smo(b?}24f_m-Bv+n6WL$Su@>E+9i~7RVVyW1_e;#HhfWx531` z+J02J1HfA2QG8gbx;p$KO>AiwL|C{4JOk)bsBqY`v%p)2@|SXSY6R$0!h_!-v)DnE z5~}6+niI|ZldIhF2QP|$>*oe(DQ@^hNvB$V(k%-Jazg*Ph=aYQKADB^8FMdE!=R`$ z7@g|q;-g|-M%l)7p@zu<1u%0kY$kYDhz;jkF~uC@p-0=0%$MZT^aFFwIa6TDH9 zVo9vJwN6Htu*#ez7;DFVO>tM{IP(_o7ry0YS?9LDk-JX1u~$?PiZle=hoF{86*ccN zK3%T!GCy$aD$@8k)0VNFc{ep+MMK8cyZG;k^3`>+Dfsb0y#%|G+7&m>TPG%IId*#= zwYftH1B@^S&|n}ZP8OhvGxVxM4g0SdQVnEAP(B(nkNl-rM>z0|QKx?~zi%kdV2FJ7 zqg*u|xv7p~_S0U=)SvkKp{~q1I6>tyLOP)-p>(uAJ4V*b@iUA%9EUM2TzFQe!@qC@ zdf^I^)#z+$B|GOntV(Nb>s>pq<8!JzII9HNft6_i>0|5!s!WN%dC~d41UrtF96LyK zx`Q^=8rXS--z&!%_G{94yXq%!M_;I;Uq#m)02qf+z?##DU4LI*RP;lPu|_cuBObr7 zkNy>Le*xZ<5mmAczX_z^TKm-!r_0gcPwr<7*V!nL?dV@)C!{Z|&SPcY1_na{yPaTu z|AIU7H@j1FeHX{=Lo#d?^By?Uu@f2=8Xvf;Ta@YlpzBm^+voafFG_jPa=;Qy4TX)X z{DjrU*jbBI{0-+2+f)%|i-7KK_%F$Ed)wq2A&eCnaprBftO}>nnUNj$Jbs8%VD75Uh+AbooFdtItr@%+=hA6Sis+1Fk2(8G)~T~=iVT+V_2sfGi<|We{USjM_>0~QF4UX77ffKZWR0m zoP~|umOf(_X777Q6h(AbfJ!x zMfUs_fKD3$I^~2PjPaZY=(OWjHlAW1ZH!=0{CEec^KxWve3tDrn=;3}#JqcT$W2GH zFqJU2YnJA#Nz3Z)e1)%Q4VGST7az9^8A-FbhcAmGTe<`z@*Ze_l-)ctpzwBFy()Yt z7qUo60b}Eb1L)tZ zmLioR8VDw4X*Az91YBc~>6?I8JeQ zuf>^OKR`!VjyE4?RdKf`IBut42JciAo*`L{}s)?17Q-%++yGO)4n`SXrQN9Qy%ZayRJqjAhElcrzAPOFNU6 zct5ct<>JX0pld)&xQ}Y4COg+(yG)#|?g|*+pg2|O z7Y_Klz=3fQHKMLa`LiW-K-?vCrzygAE7 zdn3q?v)@D0j7V5cF@3ax$KNB3fd`r1@JD)ek)94dxvMn7Is3)KWshr71PYuP>K~a= zLAwl{9ykZk&hT$0OOQU6GoLpgtrA7e-njb|KuH9;D=bbdusDeMVeXC*2oGlIIbh2L zr>|$~jDU@}{7)f;a4^HsMBiVSE|{?}FX{s#r)%ijKU=9m!>)x*RWE+nkD2Ii;~pkJ z_r@PHUiLo$dP35fpJ)cu1b9j90IBo>ILs7x=li zj+fUrFci|Q6i`qGf|5Y5Ur^V-O87mjX~-8@UT|?WAIbyW|IK#RFkQ{#c|V>7TVEdJc*F;DWt915btE&R$`sm60N_E#wYc zBYp*h*^3r8ksegPwhzZGjtRp@?xc;fYoOND;i4K@_pxr#Wqd)~-K^0fu!&zIxTh!+ zN<0&kAIYcje8oF7T8j99t>(+#qWiN$%{)pkSFbMNn#Jw*c;s4UQ$$@c=n$5-kWQZs zbp`OEI~l@UM*rs~ELvSJ_yORBGpMB;Yc)!G@BXun#9({{^n%a_kpmQn9LS_Xr$F9T zz*ZxT0lomsXFPYqj}+4j%S8J-E^Po>@V^)>Ks-sI9^sgwW6zUdJ5Qy7q-vevs4A~= zMG8G?%IcBhXKM?NW)#g!a0kpeKR2Z-uqknNL(iiRtYtXygtQZp8rZ3{8opG7=hz&<@^j@k)HZV?Q7j zp&I`o6-$c{JfJnT+5GmlMuo_$pG(;NZ024p$9zW_4X5X;yy0t)wwUpWy9dbIWBI;ED1gA)D|dsq|6OGBWWFVUJBvKT!zU%#TGGgd)92r+gdLTLV0GRHZ)K6CcaeV7uXm{o&%l$wq@K(WuCh zT^0vk0kJS7B8vc}VeBigqH`v^Bg!0WM zahOx5L-1fVq3z`fWrq?p-nbvYbadxHr=wtg-@gl}q9`;An`X0gC8FE8BqY(}5x)c* zBrcOBFbv`HVJ|^Cf9nK5ryi48-(@CGFw_YT7a&zJNE6Z&or=+fGL1+p_3j*P-k*fA zQ$n4LvtS6Chr0+>X(TGn6&uHRlR(H-> zp%r1dWhad}8MJ^knk=>^DaLA`%lc%5i8f1|{i34mX`pq6(}Z^F7Y%5)s+O-i-E5o4 zTF@N^Pf*5pUHnyNIomZHO>bxf9}W_lFd;Ja5d|(CSNaZoiidjob*ceeIj=!p;doiS zp>*jBgbV3luqRXf#En+uFmyiXP98KqVe<6G5H=S)oRj~DndbF^>Ro#BXzL|oYvN_ihBCoQiq9EH z8ASXIFMWm>;L?^oj8}v)fJ@7P(n0(URs+KCjFZ$bM4l_&?FSF(5%hP2aRawhKcG;B zaBLHqcN=aQj&CQ_9R%E?^|MKGd5j!Vre*Jw*LLAbU<}FIaS?f<9PSu_nPx|?S;#66 z)(-%maLv9|?(-jb&MnY|D$xCpvGFK#qfMf(RJ%koM+SHGk3Kf;DzaP4P4jEJb*=G+!cDMGAJH9U=~hune_ zql`G}2aKh->=z{#Kau4$FQGTEX&aPuMxYtG*A!4t#T5`VZjl#Hz5I(h_mD-39NVFZ zHXMOdw@I#=QMXT~&TKGeYXDILAX=)(A}LcRN=@CZ9W?5KE84uH%tMfe8ik;WSSXCY zc~QP~QxP9xZTP>-<-Zk40Ql5e)?PRzrZU1tima5_?+s>ejXob1hIR}>LO{<;;AYys zuU}$Veoy=1GO@Fcg{@1_cR|%V-{SdmMj-q|YYbJ#wggW(ZuE+<$tE^4Ox?@Pa=n@8 zMv%dre5^PPE>!P9rNX*c@!%nLQ*Y;MStkrLH~~>a*~3co1@NOGO7ETWPwSJnNraWU z(s)AM1pf-zYE`T_Q(IK-wye4u{V=Yi1eXEmNG2D?N25!i*usG z6LgFt#Qp@GapZ0kFYQ9Pv>8T3mBqKKc;RHhJiwVifUVa>@xwd!^XzN?^v&I2J@Dl? zP3~M8T+8;kU-JaJ^6Q(@tI)l+c=I0EO)7VeW5c^`%5zv51bo_07-?I-m+ShKHB*E= zALIpEF1_(nidzrjru4ZT?rfrsf|txCulf3~%b2I7aRUP`LUsywh7b{H zd(gMHFlgtqvB+L}5b?5lU1v@r_Wg#g!x1FgOM=E#gJ+vmvDqoV<3KoRmmq$s^0m%z z4&1N`@A1lZc3RK6D#$cnh4-IVWT;Can3~+mgQ$?40p6s-dpX={>OR*k)btGw#fm7U z_hTU`z0|Q(Lsq&`-I~F3ITes5*+vUfcyCG4t~1*Cjx=o(oy$Cg(o`ros9Pvq8fb^( z<$!@!J#aVf)kRl(YKfba%SEp#>$!s!Y!-WoO^Ze6LFU5FXWr~gHbiW)l0E_@npdgJ zR(h{ZWL1Z=Zio(6EMmR<#7^iJGrz{{+ZlHlL+bu38@%!Pix}aK%0uZIl7k==dfmU> zq6m z24xhaZ0N0o7q&Y1hTzEz5j&9bJG|X~boIyxrMg-n7lARARA-kE9cVzm72K~L zSz{yLt+n&ejfQmZD7msix4W??yWchp$cV$PNbDQD27xwFct2>X+5O@!h%JhmlDxyu zL)A`(7_(H&)fCr^fW0$taS!6G_!|DK?Ip`tnFjyP8s31$XKVaTv-OO>JEJxrd=sJS zsq-8XL1+h-G4mUGwqR+cL*{49jtws zBjK}&X4>>r4F(j%>owW>*e47-z_9NbDxLS?-9!4LfZU`9r_Y(^O}WE+8<3kCkms+Q z=Pxefx@jc$_Lg={MU;Lm74s`NR7oUaN0O{*VF2 ztrFl;-vy>3c}3kDBc7G-qV1~O#W@m}RER2lgBBLNe0;cw&XyDGVvCXmWH!A2%jjT;>uR++Q z1nDo;ajVe^DwZZOTR0aZVFl=v0K`z#EypoB7TZ1KH?S%)Ws_S5Kn$G{mDzMX3wq}0 zM1r|pQc-uM@bn^tx`giqU6&hOM)cu(fkT()5=6R)ArqkV^nvaU#>~zbo=QW4w_%TZ z~JK9C`UA)*SAdV(!+jbu${(+e9Pty{h6U`!c$ldLUdid*P}HTtvj64WG_U zCNEgz9N?-}$8Bx+EG=iXCcoKJNc5Dmxsfhwf1|{5t?d4G5HgI*+F`typkSXW0NsLj zbTaL|1Q!3ZVn7fAmyZ~~L4)-vti#e)Glsvsfpk8Hhp&1;+JyMnxv-rSoC76nol$!c z;}^FlxAxD#mBRS3DWhg+t?}QH^J=7X!8`MW@3d)0TN`cvM87%3Rdhfr9XBzRJsuwU zkn!33cwnJQ_IvL`TRUbgO=UX5sEsy0x&EeklkTI1W}VYPvmCP~>*2mI{k-wI*O+g2 zhan`e>*_qd(QI3xRKV#J<+=dS92}B^`-E7#K`(4?8c)78r*OBcJ2}U^!XKZzl*1V5 zSyWist}^5WagJwhK?~veOPY_ROJ+8?XSiB)n&30KOhI;))dz8ehH-KY8YMN))>Zvo z9&D?c&)ZY=DhGhebJu%Q}>DL zq-ncG)r*Ti(&M87m#)WOybJ7}1MpYh+U9f@_mJuF|irl1D&OQakq*EJVm zgg5!}jAqw=)-1ixTT1;A(G5%dT*zATzGJ({Ro;r^u-$ZQu~H`8ul0k|-SSI{p`9Ov zPmCO`Hfki>QiRY4x;5aa&CyO%mEH9LI>?rXxi|`;)0h&F6G54BJYTrUAt%*Pt9jY* zaB78GplO?Fpj=zz-pj}?^hHFzL^^6+ez}jOc~E;3*QZe)c{w&f3B5&j{DNRe=)V#{JCt1!svJ?n8mFJmY6$N4Qv8Papf zzN|}>!w+ql^k?C&7jQjyN1QHux>~sar7>rps4|$$c1W!4wc;?I&2@KMM|L>No9sJ= z>3+F41N$fIar+(mDE56DcQvQNKd8Gkhlq{!Q+I+0cxx}lGmmJ@pw}%8*2AS3nkDv! zY(TdG>d-5(L#Su=B&hE6%BE3l;&hVml=(|haAwx_ZFVmKr7z8MI<$tz__mVYVS$@?KEk3y&i zcy6MSC1@j5PCw~398L6+m*8$2h^#=B;CD#=U)qs(v*;qXaErymNDV?RASAx0IyH z4QJIV6U#?j6^ZTJBVNZ`ME1K&J4SoKKM|gnFLM9;ID>TQJKtg=NWVS#bLFx58k)vX^?ODt-hkTj zarhnPKudyGG^p%ammg+@q;3rIQdHvj?8m*%9wdikY;;=!aN5-%lRPjDJsN&G*BqZG z=sF(78MfYQVmN0qjZu@q?S+P}O)%mn!icMjm7^MsIq}d-F-`$wHNM+O6nM?#bpb12HrEf?=%SxOBf6{FY zKV{?eI|4l~lc~%e>11aR>U$!&Yg$G0x>8#-u1g6L6Y=c}@ZxG$tYcl%3Q9rL9flqt zmDug*36?6&el$28VUg^>)zVlI-f1KQ9$wGUA&6KYDXxx#VK)%~D86T5PAdROo()O_ zrLCn>fI4|vUMqOK01{z0x-8*i9>Tq&dVs*Q~cBVY8( zi^Hi4j31p#va?A=vwLFR=0G{g+#4%nt~B7(#Xn4A25RMPZrmL{Yup!);oiLcOH>YuyxsyVo}&A8$HL1T25w_RI)A7-VVY z(H%9f>NN4p>WM84wo*+e+Nye0LNS_dxe77L-jl2RqE?BRv2prEHI0}VY$2FJfnpBr z3-3_Tazeaewd!Q`5IjTFe^i!&o1kJn)89Zaj)MHqySy@?TNdxXXQ(9l7xjG-7n!0tkM=s&ZscyaR84*WH7PV{I=O zmx?qUUidv*{IQnuKgV5k+oF3`+GqaWMfnte)c#egvlCg#8Ox3yHl~b59#Hqc^xY8q z;50PG2fVU5J)~EGtq#h$5%xMvI)5gQniiIi(P#^&o?yHUFuO71)m14hHe0s2qOu6D zk)=g)rx^ogT)k!ME~h;HtszQHHU8do4DNZ(0oonnWf>G=e0quQNxZCz3TYU?ZuHxYebu+G)0u@U zp5Ei6vN(9H4WXMnl`iYBppUaOy{oI_)YA9+ty)!=3U7a0%ig&{cKNx;B3f)ov?e>G z3Bd{o?mNbDBKk#gmn5;j@J(Fh(c4u^?}@Q%#!YPH%|yvOt5t{{^Lmo&lFtWh)lW z8b7aXx{(B*l-+dhH!ljvJ5d zGJd7>eGBPA6A=5czS4PHR7<~|;&u1^J_!qBZ5@=sjCWWWsrCP6{1%dwbWP(v%qT6i zyV2;}bN?+}@-0dA?_;WlL?ByTgimX-W+Ra-d-&A5bkjTjGJ+2U!{lo7P9pw}UJYY% z^xd_n=kVuGRK4xfuWBbrwl2Kt3#nSHkn@S38NMOezNoS^p%!o5bg&7c)wDn|k~;zn zP2flP#=@r@7W0Q!Mf`OaCOz~TIrT8Fo&#e)@wsbJ|>zypz<&cy9 zM@Q~;=ipqjGch;m&0UPSV|2F)ve|u4oAKDuh&SQ8W&CTeg9ObqZt;{{+x{_~h_-zA z+SE^Lw57@3>%MFMu%YvwbzpFA)=YzbzFpv8By5(&a|aeIOuu_Cz;byPl=E4$hlM_6 zw%fQ;WAO@JRU=n~hXZ3bdR4@%LVZb5GH*LI#CsfFW}TRoq&q5Ry~N%dclyfs5eG|( zbHiHHMdRYrM{zUwfBGYJaBVqE?B#G*E9&dhDlV3Y9;P%q%=pkrcxKJuKTvE!JAqYa z7F1X_S`6W%vU8b9toOVx+xEe;sV>`f8*(^1fJ_dvhdGfE?;uZ@O7|#qZS`Q7x`w6+ zRAK(nkR9{U?(WA%TYF7H8S~2OWZWYo-roZw5cuukMaeiMTF$n=w_P=@RYP{z4=s0m zzo}Bkz>-125P6R7gugnbJ27iL#uVCQ`M3$cfa37Gw_VMEx!$qyF)`#pp>3?0df-hkwI;y4^&)N=E1=ku|^7 zBx6tejX2f%y(e|%3p@RODDSIlcfX7qidS;l?dfX2GEnog=1E>GN%_7x$nw@3r>zUP zkb+PNO3&LKM9%wvG@W-?6K2=O>p*2!rtB&z$Z#-a%8r6UqU1jM|80y08^VXvYE(6V+BSK3o^$T|ckUzMd)rZp+is(i zltiYGHcoBv$xe9VEJ^d^?+cJYSMI9G+_3*ym?=$4A-^YOD-Ox3K9#z2q z&8S(~C$gVubrP(0Z7t!KQUPOx=j%F+h0}MG^$u)(S2^OALVSvHRt%E z2iy%cClw?`Z8sxBYP4WO@W+))4k1MMV|T8puv*!;w{JX6QH;}D6j=q&W;Da!^H_31 zLu^Nl)PS_8zTxrP=BH_oNmrb%>np~Ze~OKAziM3{G)+KP?QNj- z%x^h#mIO*ga@CjA6Y*03e*2WzfLpAKdx8L7| z$W*lj*&;f=)egMhljnv@CwV$u&mzV8I23E-O*eHJhB}q5F*cG{cPtn1R?FyFN}fsoEPe>0A&hT+QbpPOevkJu{4vI(J z%Rn{^e1=VjDGaC{i7LB!gJx!P!u_1j>NK?hUJJjqA?o55}}h;HATCiA4KSLDfKD zb~ye`jrGPO<{>>aAL2s?AAviWu?EXG4;qi%JVbTlFBLE*{bXJupt>R z#=&|cP^i`ng=A2XS-yYep28pLGbYY;ZGzY86Zw17S{Q3ZI>O4$&{WBWAP_20LPpJ?J$f#{Zs3{eH?p>{$ z{1@K46vqCLk4pRHYlF-PXIav*ghW%K_u8kN1MW~;hH52z^%G0^+8QA#6>i2U|DjTj zV3M5+1|#LX(YdUfpXGbLJ-u_W{{(2L6IbP17tbTcUAR?{aZx7)J$h#kYmaYhsL*Fq zd^7I`f302HW;BU3)5@Y7P+J~>+A;_lQL&KvQdybNC_9}8G;J!CJ~WeyVP|;#j0hR* zhQSN3wG*qF$Jb{jIYK^QMHx3~vjV_Ki{$KdkNp~PQ)qTgHYD^$_h&F_zSWsK#d9^R ziIy{Xf4K2!5)SgiS{kv04B1RcJ?q~>BnY` z^Fo=3U00?z1`gAH$oQ$0OUg zW{GY~63P03&Sp7}>do-{-|7OSqhrh(;`7H3ERZ+!4c))hd1ZW~zpB?a{+7A6d!bTw zb?1eUo0dkdj?pUVU(L^(e(68>g~4MNel&g5a+9l-vMRX{dgEtSVgTJqvBh{O-9vws z_9!|<eeE0mXWvYiK9>BaR}F?R4(WwFZl9jM{IS{c2kRufTcgtd8NDvSXiKCVs;j#dFE>lGn^QspdhPR^PDq3-WI@Xlj&8__%9N1OCTY#x2k8fTQXDethY^xCrmtu&&&+ zUWAytgpS)*!5qK!cM*6gPzH4eEA|HIP7P#wSCI9*XMenTvW(wo(5qt{bO&@AA#$70 zDsVSh?13?7@{#>V`cyb_`&6J1iuX&6)^++2Oh1MmBRIK7$PaZpSpQvP#JO#cMr^Lj zth(N@iU9Q_(vIjWux_El?u`lDglAvX_JFYEzU9qH#-i=p9Rm;l%vuaE(L5T1Dcz^= z_|L(VftYLN`|MyxjIynKLV`B!GU*?OYo--PW9Ek;nn(Eo@hfN620M&pw=?bRchw;4 z_LVfF+yWPIXn3fW+j`O4T|cUVSqcxDj>gnL5l}h`l2K`Y>`d^LQB=gFje+o#-F_Rj zFwLqyd$2=Mc4ldUweu#z)}L_8IZ*<&X?TUa2~s}Z$Fov&U{YZqe#T6dTcIOJ33$iL=#%W zgjcT}-v30sMCq^$pqelmW=X9p`yxL&Z^}n9)qU@zpC-N}y%tW#drB`u6g}rKA5&7j z!j+p@i&aK7#{|Y=!6$77=b{5m>|BC*PPeIZ3s;QZ%9I=Wx3r6tmyd#c#2N(i!VAm` zOu?>+fA>d;>-jfB8Bi38U^49Gn4crt2wnq)ZFp9}pjhZq9)lzF)RJ!G2dxlO=YcL@ zmX@1=J3_yYahW?Cju?>g;%Cj7}Ao&lTo93*oS-0dp8iFrBwGpe z-OjgJ;AfzVj3@m7b*vZ!GefEpUj9{h`O60rHPCL*g;FQ{z97>ZAQtI#$@$dr#{VRxnJh3*d;Yl_d}9U%F&z$yj%t_arn2@!#IjC2 z*r&?#D6G--Y>Y^z`jY6X;=voo7d2P=x}nAG$wIIOLbq~mO0uYIR|rTDZJm=@Z3}WS zdYUMlvopmXZ!&0iBu=s0hCN|&rqH14Xq?VeC@JuAV}zc<<>u$~R?kWf;R_3Te^zzi zD)1NU&50`YGX@@lb&XAU9l^Tw8Kbl*J29JcJPjMt)*ZMGdd>aecQyPrRy-^eul1Km zkdM|n4438NSZ#Ze&ZSIae#aVppN9vQ9E=wpI!K!(wX`45yF7(repI@EQbp^>rOU<1 z4(u!s$w(n?H@|WM8%MF*J_+NJt#^E{T%4jggo)Y9Efj2I8D}Pejuh4JYTzv8rMYnV z@=vWn3sThOw*V8Kcs?)8{E|_F3@CkG+tvm2GBG_=ZQ> zil?hehLP|wFv;n@ZDl7s=xdOUl`$Pz_8}4;bayc05EKsob3Aqxh2H4PZ_TbDbex`M zdOvl*8dVp***mQcZd>@3y>uDMx}a2$*?#$Uj5gP&^ig?jPwHu*fT`b4xElJZ^1 zoiaBbmnQP0dc^vry5la%cYS*pZ&~e1%ei6qT}hjjHmkeZ&`o6; zajJ}4=l@Yv(rJg!w~U!ZSBpDG*HR1ba%F$_dP!=$e{$kEk|BsaA*pbU)`#j5+1*d$159xBiz+U0t&T{Sj z$tYjuAeR&pQ5s^DX%*vZE6N zG5kuHGP=l)d+}WT{Uc-ljt0z@% zfYh_(o8%}L`)W*%E=ai{P=0PsLKuZc>&ISq*0KZ0XUs39S1vZ32R=1Sm{F#4+i_C< z{A65JU&-DHHyUi3e(J8=>xAVqEPgu&6>dX2_afQVmD!d7buEnz?jfkBIWN9jLwW#Z z2;LYRRJYR9aK=eAA3|1dhWNX5)l(3po47xrKOM{XkB%X|BJ?ahzdLp`HtK)6YHipd zLV&-PjB;S%@0v;Gac$cV@TId577Q+Qkx9NJ%crcjTfFS(v3GkNA9VHx1K1MenxgU6 zT!LYSsNwY2V2PA{QtwNki1j6hiTA~ZRmx$FqFO8Yr%Q)G#9!NpTat@q4eVlvqv6(- zT09uih=pPcZI*M^9ST?S#~k-_!&!pyUmw?2h!EP&u5~S_LpJGuOP30caO;%i1qCjq@thus_Uwl9J9U#p%GW1B3!O|Pw z8o>#6+}K(5cMY5g8->)CG`*g!GjT;0d~IbwtBq{iz|Ucm1{%p2`L0*>2^r)L$rn#H zj!7uE#Xg2=PR9jQK?nr!$8Qxfy&qMcQD|zvmD2vrE;QblJ`*A-xI7^qjGJ7!dZndf!pI zqyd#b64;L>%4H0JOST3zj?+^L`WXkk37r+a4U2EQ&z8W{%NF7S0dY@`1i z30%&+b+k8FApI+xo~!jQiDEN%o_XWQpcX7WPx6$2&?cf`C=APq}0W zv;eL3TiBD$0%goJ`#9SJ5VDyLu`<6I4#$U! zqZxb+U|FkxjD1Y2e;4FZQ~K{>!@-tPwBi$$VACZe^WeKHTrdp>?r03#88Xn&+>3`HC-(@eYJ#F)iN86W1rEBG9 zBSat9RaZS=6YSo@RuAbk3-)8o2?LJL!wy6wSNLP0tw8~W3<28mB!l@uA{|h8Brub71ob*KFijz;=|#-43Utt8O7Tt4<}E|K5{AZOn)*t1=3QxS zA|)u#8ZN(x$!6M_zAMtr2ErhHRNs0)NgX*YbTjHeN4baI!r$g^%{mdhi2xg3T36;+ zcu0;%5ru{>xsRDS5q*~s@b_C6#P;oEAJaO<83#rDG-GElPd(HbF#nY0!ny^Iif045E#?(N6saUgDF|4Pj*zVzza%{nr zX?wL!XqK;IKzx$wfdaJh=Kc3-8e$iMGNAUvSQ>vR(3HBM*$ky;_j$EGAQ-yH0Ll2R zfN#Pz&)CU&|EID!r`?-R-ekr+vuZ2%amvwPLzFEGE!QMpJRH_*Ux{fm+-uT$C*eHMw z&HIF&31sbt@DlU4?J)9#uFpBpmSG>#;w}*{;0L$OY2xA3%Sytzy(f5c#Viox$A*(1 z-nOjDa*%IUZ#L`k{A{RI^zm4#FHJY37X?N{3m6ft5zsXAtw?05HiIZr15+jq&YLGz zyKvhEMBsksxlQCPu70oBi`#ae`jtwqA61V>eLgDQ5P48^j+gje#QC{+@^mQajYAQ_ zv?W+j;o4MKNR&_aqa(=s%)l2GgvYPlI4tlNZRL~9U&VzUyW8|4ZUub5-eSqBFSv00 zoNe(fg_m)@Z3Co>KKA$FwFbU*Vyxh{PcJ0fWs1{?+N9*t8kvDvl8ixUQin0GWaxha z?ZvuFpX=De%r~y$cr(wdiRt$EV?H?XO}?M*q=-DKRFb0ugq6Y{L4^lQx>XJ(p;%@* z-P*n*^gM4k!;&3=d4H>_w^(ArlP1b|@On4{%ULr*swU3N+>s_db%2o%+nd6R={O9mN4U`g-$>x0<}VZYcEi)62)jJ*m*wtBS|!t1ayppO&o8A-^6z z<}E4iHFZf%Umf&I1HlXii#^W_%-z^|Vd2I;qdeB1KyjG~pC4_Dt-wnq`^oh_6VG}Q zj&~kg=bR2>M$z@xAU&$Q7Ia1OF7`v;umc-zQ(#OBC+BSYD=*0MLem{b_eiOFNhZuk zihynyEP3Q~iAl&I_4UHnhf}ZMuB1-=urNH9jrY%@GLIF+<>kh< zAb%d}yzoZ{A>I(J(*xCeqou%U;iV$bQ!X zGJQxcUR(=mru)jz2`{e>W8xsUmE3^Dgd1`*6_lqsJ4xlr*#=fGV)I*{u#ZgwHqu_( zQLX1QyAF8t%pHIhJtOw$eJh&0r~NY4d5|--Wc5F2v0{~b`w@?{V|HK%=nrP@JVl1P z>mgIhzV{4+*x#_iHE}f-oaqg4rl-0@YsP}EOVwnJxtf}8Om)fB3@bqHk{U!92gdW5 z%sOsB(~h|=Qxo8KKpZDhG+)Qqdv#d*^v)#mAmk%WM&Hp78f_r_s6U$1_N6v+gog+)4wqM)>;i+`{rO77rD~Ah#bL2clqgW zJ9w)fqHA_5FY>^X*&T4i(I1Axzezhi=uF2*_5RD(bB}Vm1OVbiU@9p6$zk2Wa=p_X zA^fX7-6y<@5s@;h0~3202U8Z@LOxK;xsA9ov7B<9t_ok*+MlXta1B+r8i^TCR!y&V_$?LI}a4c9slye&O{s+;p$ zZGvn~xgn&NE=@~5N;(($mZD+W>U6&WIUhpp;3+@LA07i?WQ)=W{{p&5xfQ>c`>)oO z*@JaPK3({Jt{#>hdaVHiVIE?9B7O7-vo7d8Aom%?Ia#*s*wvomGm)}-PO?KLyAlEX zYtcFo{WlDx4L8DO9oqx3`sG7jY}IAfb+th(a0?jN#!xXN>U}x#?fdgauG-50EGWOq zIW|5#m7U;u8u!fmr7)}kk?t#|`(dDYlI#KTW)1q*Nb50tgzZle|A&8VTH6|O%I}q*l;)4 zppE-{ZAH?`jkK%>m4xX7o%t~e9x+i)9@biQ0o`UcDzyXOr9)D*0L}J%9hc|z(~g^Q zmr{^2p);|EeUP;bd^IkKE-N;ygcVXh)hSfovTt^e%x{iuR1zF}ir;U?zIzt-p^-sn z6dQgweNWpnrma*PPpgN5OSRS#yCXC-V*nYhxL|NXXW5RfNUM>X7*Ag`s!^>Sa=$KI z<3rOYr6{iv-b)ifMVz_Qg`y?~>cMKV(>R!~)*3Pj5Ci!_1=1{9U}Ed`qFK)VdN>&amCjDmdKSDxfhT(pe#xprL6DY_-Fs1 za-o5ueao4tp&HjU z`%MmSOt`G_N|g+Oo`!{KT$S4DJ7<1N>Ux;V$O4CCLQLZK6^ldWA$*XRh(3xJ!n`Cf zn>$W8Njr#}S9t7cS~!qtBBxqgeP1bclvIjJp4W-B)LM2*^`%0^)eUA?&=`?gh=ogq z0+-4%WRKlx7(TSxhJ8vu!m@)pYd%(`GW^PFbq`$o*sen^c1z7LC~$u0Oit}Hw`?mR-W+3Ah`>J4{Fc6Gm7Z#1)oz7HV%WHg0%^fl za#7q#JpbiQ5s1L!*h(A!duHXx88#>L79$&EZyzZq6-m^3CRlkr$vYYom!g0jmqK}|H zD<&Gqs?=fH0HMbc>G4Zz`;sVwz)*yW#n$&XlqfI8td8N023){uwH3$4AeK1NuQZ=v{L+9VfB-n~JmF=e z}# zdnZrz#xM2E0(a)V!n@(QxZ%C^InZD47WRzTj1RD#lQ6-XQRlYM@cBDh<|aYbHpO6n zQRv}>kWeBr)g5XV+k1wmD2b-zPMw70OrC6k2K;Wt!vsN^JgB5Nq10d%UG7%|>lAx& z^Y9sXUm~B$&tLf|(+fkth|Jg$%Q)&OTvCZ1pO!r9#ZcvaOR;9tO4jKa(?1FxXgx$47J2PZ2z2K12vz>+iraD(a!wQW3{n3oJc!TnEvZ7O?R(8`4?a>^UUL{S#7ba^SXtcs0=2w{cCzhL9dBl3X2_r?@b{~|Yf1%viqxVEO>kpXTaTx9nGaB&k0ietavd9&k z&{4!e$_?R~iN@a`bXUd@FwpKBNNU0N@n8^Ug(dIpftaBMTm#!*tuaj|agT(=ow(Bz zFw|GHEd>CyvRqQ@un3|NZrD3!4Fb%sQUP)<-GC`RE^Lh1a}SHrYm+9z8QimMbT-oix655R|ze8SMNjNqKgs? zKJ<)9b!HtX0N6Ep@e;&Lcs6f%Qyn0Rt)7o4o25I{r6{D_`-{-krAcV2EULk z8ec;(*H>YES0kI!x*Do@UY1nY6__TozhJGZGgS&IblB-F7`U)4ju*GDIq1Wdl>SZb z`{B$;sIa%~8fF(-dW6cG;Ex5k&H*H&mUg~!Ovd!@-pL)8Od=w31tqib{)X`5ae+*RX z$I0aIOE&LQYtJD5@>{-5Eg#!H7T)hRAY+b_5%cm&yy`WDbT?R4I-Usi>&zt7uiN5( z;Yt41X1=yUkfWzHWm?<#mg6B-<(tzzk!P4ws|R&%BvQ2`rC>}nm$Hkez7LKEgwU`o z1_vT~|AyC;fWk>HyyT3C)@HO=h_B`KrfOc{wjW-C?4^u{xw{q8z71s=dbD2TOVhO7 zVe`h-)cTZM|F;>lwBXt=(H_=4kv2%-HF#ylVo-L*%Z{`9@b+33CFikXoRPZ*vIRS* zfY7u2S@;7A56id3Oyk9Z&A)v9UW_B5EZ-8;%r5x#2&soEwIWM10yD4ksJC%emvcnc zVyy@oTAODsF*_rz@UQ$JW)PFsOMI22cUQZ&STK@i@5Ss{0e_AaqqxA$=0J1`*RU0~ zr~bUcnFBZoNM^hx6mEI?8?@C<9{|T$18T0q=*+^)NiAUHMnR08hdP%s z3Z}(M&D}xrC{nEn2eHEg2W9XK8Vu}BZbEwTbB~>?{Xy8~c8n#uLv9xM`iE;vY(F-2f%ZGM6?Ecq3AM@tZu zM~0y`C8=DU5}wr2M8HP9f~2**rgXJuxu6?9wQb*`Aty7qwtC$TO7m( zu2QR!v6qIuZB2x&R>IqVQMzeX5yeIwRx7U$R1M((^GNJ44YgXS5J$R~>fVtKY6Yq* zQQcIzb>(zqzgW3Z;ql2&&9jx@>pJCvLbz6LI^EJEt>-@lW2A^u*@=< zE=B`-m-Ud_s8;bMH`ise8mYy6wt7n4Bzy7F@FtyqvD5_~qKsV(1H_WZ*U(XiZ~ohL z)vBHIW_FhM!;L*e{8E(YFa2dqGLFb!puaQe^k~I2k$-ymzbSI(6&MYehpeZmejp_Z zPx4(j$%5o2H1_r{_aa20{}RlKi$70%X&<1FE<(Fy1OyjCL$Fm_IEzFzDlOF9+Zw7g zPYd1PCW@>2O!x*2O1$!1VwZ@ zba~2{+7oc5cQ)(vEo{Z8VF*19DEgkcldE-H{~etrxLb-sg%T*P02IssNa)*%3Sss@ zlKi`+kNDFm_PPn0te{l3J&=TBKoS<+Q2Esw1uON)_kDYKH`p(NYqY9u4*7lqR2IJ# z&Fv%g%lCC{dkeWFiZ|hcX$Aws0Y)B`xkrQBJ}=72vU~gKv)b0DyJk5MronX%Hw3Fb zV_`oz2D~r2a^5-sy7QRyLfHcU>xCML^IFnDI-qgJ zqnHgdN9$8v0soq$6#yzg@c^1=TL!FjwJgh-8;^0QCYwd(&YCOK8B(?T_-z*&@2nlnrTF(i20}cLzL+{IKDe!ZSt4F= z2ut1n68CPdp#O!?JHQ*Z%wuRAydkB!kX#)qFCOWzc*5?cXw7p8{po1_8n0NGMNW=9 zAU?*B1fDPrc)}%#ShJov;|2V;|3+4RF+1Tizn$2_r8n-sZ{giC_E$;Ikl3WcWY-bR z^~3%O>0?~L=M(_Ax#QBuwNWoI?O^EnV;pgG<6MMg2USu{)lwerJF+&Pl&))D|{8k_VEq)(E5!Jc8G?8;3H!Mpb?&V;dS^05qUW?c&dD<~}2* zm2%vETTGIL4RtEp4PUmfb}InMHxV4pp}n&v24L7ecez`nHN6#X)YUtuZT&Ok9|nvN zjR(qAat`=Wfg!9M99|IXP6geGQtsMl6{ zz?Ta75U=WjNXdEV;yrorPkcxxQOMe)neo7Z!uW}vIYTJ!bW$O$azi|4&#O9&A-H$n zzQdhK)=m7y)qW+xfqYeW-21j;?;OldXrb}8uQr^`nDs#vQ>zGTAWfEhQ+lgCf73Z_ zjD)yk`N!TWc}{Q-k3{KIb)=L1#(b(?JD zb$ySHAa=H5XCAg*HpwT8^IJjeMAnZ05`K@@`g?BXNMgf|BwfM5@I)i`wisc__^~X` z@R$hiK{4vMaJ28@iudNTz<$x3U+F1hPRY1zPQ{EXJ9l87R^kB6e(eQ7uUSBMUXLcp8_Z_91g`P&N11v@Wmh zMwYJ!egxZVG(Mx_7aYIc!3&nEnYJeC#ijQZ1M=Ps$UC+>JB8RVU$^cEIX#`Z>ORw? zYy*EkK;P43!mMwL8$)TNeDXEYb27N9^)5yy#3qvmRhD2F`4R80 z4y?wj8D5-~;beVSZoog=0hN%S*3P6B{;ph<_qF$SLcf%^ZHDTDY|VcE&-`Bh`%h@w zj)G|9pFI>#*j;*^JB`& z7vzd$-5-8|}-l=e6mi4+;w z<5XGlrIJ|T;!wJ?@=NK#X|Vb?J)G;@iRBrp9*(MyMEsRao=`87+V4OCyd z6moA;jqJpACWQf??!s9nXQ;MM-@zS6NH~*Jk_b3_dE1-Q5YsL%A!{-Nj5Q+V3_#oJ zaS-Iw)WaL9;}c#8Pva-p!s=aCK|tGB@H36cS)^B#?X^6G&{o*I5{L}Hv1af%Seda<&DeaXMCjqa5`=}&SbifHYrXIlviK${!Ieee^0+oQu-hTDnXqA$H7pLFxCvlKAn z%%|Y|I8wQD^Jr=#mz21L`Q>@jOe$&v*a8$|cV8_MSFvTU=RTMcJX-{@6 zLy&8{v+Li;bR6^2^YNxX6Uellf`rtpjR%|lZ`|i@Hli%sAmYhvL@PPjLatjuE~Gr} zu~j$E%N(X4PLN)=y}Xb1r6R6VeT9{XWylK zZXeVDC;G%9{1o6|6&0x;md%ij*>uht%pJb$H{~I_rL^3-Y7vi!!C64&4SGPV;&`zx zq#~xlW~y_1!H2D?zFlvh-eP9orah#Yc$s_QOJ9^SdfK(vlH*PxMa+HbkHG|Kk6`PL z-w1in+^zm7o$#`qgS~UyCsQGWsp>qGWeovk|HtmJ&>_@i{X+jS!!@B3E*M{_6l8SIehFxc&Ss3pPX}IZM zmAU^R#y@i5%;(4=*)ZqG1$jvWS}5+z7mWd}SB2wFOp<@qhSgc-dGdjfbA1c!UjO9d zHd89h+KzF}OQ?LxIAc~5P0UZ5hr=FBfy3S@QXYyv5IhwDam`v$Vl@Tbuu5rk zjA)lSZ&UWajuh70AwPU<6GRNzwt?;I@1F^}{XoVeD)udpGRFPUa`;_&l1Ku>SA1=f z&6^e_sBGuQ;rKcj7GEd1sXG=1!*pUAxWeD+4!TS@YlS;!g?iPbo^kK z)6H8=jUu|G6d-{+DRbMadt zPHhDK)n4@u@^)lhwWEU+2wT+{Tva))KX8WD8i8%7&-&w-m(x2b*Lva)h2_Iq*&&$C zu>D%+wDw02GNOwN{q8Jk8#G0jm!ChR@p-x@i|^xEtuI3Jg7eko{o@qNrXST>TbNmo zog@Qyd6N&<`>>x#A8khNI~?PxOz6kh;C<|#&A2$-ov^mh3-0f<+EOTh%v<94B0KW6 z9y+%s*^B*nsnZ3+B-AYC9!apFofaAzv^}fC#Mex3NTH0P`Y88F&+{9#-s#LyDmtGa zOY$4lAxg$SApb93UfW6IhgOANc)w4<$ZJs&{($EQS9bn$Z{6p_Ezdlh1Id60<#TH3 zK8}v3m&=?+ZF2-hl}tyc{R0XN4r+>2N*5TR)dT@}>?je8?U-~dv(f_BaEX%ALEKXw z&Z9N`h1m9&uGDFr&^Ou=L~iXDh}o^&#Cx^mov+qww;b0beh67Lo^YBJDLQ{M9$jzt-Y$aC=v>}Z=~3U-si z@-H%MydOwBShsmvNa{^89sDcLP{+x1(~e;&H1oIO3z6x`zY$9tBuix`F^-SYlyVS3 zTnsUh^52?=1f7SFC_K)H^0YEq6+CgoL_IxqO>1D%>00~G0oDT`ShFS>_jdsaTsHx`BdsxzC zw_{FG!~id$KHpf0a({dOegBm{4bGK-l5!yf+68TyP|I-Igx^|I56Q#pfphY^%t9xD zIYqBOl-YiL_l%~ zEOM@K$P~>JTh+a37n^aMa!AklSeLrqYWB&;52^V@Pf(ZVKOq_4yHJ+VMfjOT z`P7S#$`MOkmF5l@7;f1nOLWIAqbX0_h0_83VMtbGBs8B2P zL3R0ptPVm|R@e*)v8d-Sv2k}3H3{zACq7t$WOZUJ_o6zuBsu@kDp7gDgk0(URhgzbh=L6^Q1fk$2WlcK2; z9SJ7-#hDGTo8@vu<7~O!@mpN)H0ERF+2zkpm>qHHGs}g=5Oe!i&u*tgCq&=beAT@L zTh#qcvm^cW&lq5Gj&CP>*akINzA66UFhv*BU@zlY*b$pM z5;7b68Fl1QQ&MAQuI|Ob2STvqtMRhKi(uhq*-<+sgC~tAIA~!7q!iwf~}T%U*(9*+&Kq%MOZdo$#PqGv#>AHL_99;9E`p@cO@CfzJTB) zM_Ax_k*|sDp2C8V@`VGD=fz{q&O!53&Xr|gb(YBRJ|;S94!{uYOBP7IY8nH>f~^sI zw0#Tw<4YNp?$h00V1EOQr)b!+{t(jXq{RiX#YZ7xRh|Vw3>^_t2{7I+|G{P?de(&L z5E^FaoLUMSY8|hcX)1Q|hGN`PDjP;-Nb$i-CN87rjb8g4(0acWOU-R|n66EWJa zX}eS5{v?&w4{}5ZTNp*FSwy4ec2_T1{@R&yQLY=C8n@>Hoy+j9T(`~OpCgwlmDJ8- z^dvpCN4dwXI?i5>c?~_6Ja>t)bHC1wSqrV#}osz6d|R?Wq7M zh@JPwa&~^=V(2D$>!+XjP-O37SbYAC?{i3$6|dV_W>5+X5q$fO8yfnzUbZgC05h?_ zQ+6wA3^QUdMuTX@>$nu>ssXp3W&b(HJ=yN-fcS(7X{ctJ1j%4UNejr%w zkd=PJof}_zNax-!mL97*JT&2#>?rSL!89j#%4-abY4eq%lp()(-hY z;SuyX&AIrwqN7*zh@uyl_`?9Z@4HZW6X%WZGM}!|k*y}$bEADr%|>-<*>$L}_j<2d z4T;t>L8Lr88+4=)Z89KW(E*O#n-sDUn~V1SJ-)Xc^1DsHyxEz z?(P3xO1%>wJX&BN(Xo0|=ps$QIyXaxkdihpSaxJ6*#gbjj&S!WoD^Ruum8^5i+7nd zskXkR$;Ik(aeA=ioj+w7CA=NHp0yE&y`&7WwB;2tQuOpK!H&_sp4ZY+7c=8gcblY) z<>sfOx}jk%))V}asd|*4+W)QR8N1-V?Tp{Zd1mOyB}wkAb}^}l>=Jtcb8Hg@#bs`z z#LJ6qs@L4Dl@M_>$SM7b9TPIV&n-~l*a zB`3@~4_u`GktT8PVn>^r+F9lP_&xcwgWjb2hso_7r97#4ZB^9Erj=i1otqDAE5SRO z5l{(w$-#0xm1p>qo?VG*uvfFxY9QX|P}#4i{+YJ#3H@*@>xx>$yz?TVm$LEt zL)bf3h!D{P^HsPEfFOPm1yruB)jogJnF@lx zLWNW`-d;VgbE-4vgbmA%?Hlep7FnR2LFws_*aQS?!?D|9&+1{k*s&lkR?Ixu1v&L6s zFFfLCUlb>>1*4M5alTWs^nIvH$DMs@6v)V9OQ)M`GT}!kI2o~$aKQxI zYVyYgyEf09o{2^Hsj-LMB$ZF;7Csx04;V}{o=?T-JLY7-ccCRph<)Neecb3l`35cr z7WH{oPHcY{+4)ccXgt#NpgWdV@YNJQ`w6>cp2;Id9S;h76C){{{x_8*T27j z?8|G69j&Zvk|jAZ#JfbQjgMHDHww#J_e+`bCP*1K*fev77%69%$l1&Y1zXcpIW90R zQDLuy8t;WC>y0NkkOo$}v(2n5+5)BK5?^zF{la`QqTe==kYzUo@w}Hy8Iqq|OgIvR z2^SLl&7KSAo1`VgBF~Z)pjCU8{L(^|&NB{CISa5UDE+>tc`03K9LU0josov=NuCxM zy5u-)Fjf<7O#>&<`W{yTab>l`ajOzJRa)(j~_iPR8qoF_HfkLl58RC zSVF=WWQ3F5*vgs_ija}5499L}3^QZPGGsq3QyTj+)^N_rI<~Tg$N2!rD?oC*LEdpEpCTQl{J02-%BAn$h(MB&sOTS)`#2FnDucw#fQ?)1tF;9c9!ZB5AA5ykB7cWQ!lJyBD-p{8&p@Uc zR^M}k5gsytF5~os$h$34s|&!=sD0d0P)~_}c@Ji%l1a5lAP|jTXqd~ekHUc>>pRZD2`*r;d>1N} z_WT7ypTpFu5j?|t17c@RPEfmbl`UOaKvgE_@IZnzeHqo0XW-6YB9ac(LF-P0UKK1y z#uuGXX$IjBZ?`kwS}G&d2d&Vf1#KQh&tExy0u}=5DomT26;}fRsiNftS}~&iD3SPh zaw~|44@}V=!^{>LGnPOk1SVOZFf{e$7g%64`vLy|lgw4BAQsT-q=#ZWoH$!%qHcjQ z;O(bQz~7@c4-LJd(J=L4x`vHp_!_N%Xf|-EUN-q`)+Kpj-lZs%U4rvj`Bu0^u%;oA3vjpFA^Cb zJEK%*UcKTK(dtNeltRJQvPYKYY4)9+{has~!;mPQn%dg<@ox06Klee$K9`md&u)*< z?$7ES;o3B3^<&WQsoiiz4r$xCw}+!5&hlWQ7cTCJ-HYPg=s$=x2gyyVR z)mVk1F-*6ff{g0mqRYfk_sdR1#LEcZsjpS`fqv#GEt7`oxyE|)jE)z`Er!zW-v#(foc5T|yiyIJsP zC3yeys@q=}#DF_p7N5Sie_Q7CE|*WJ)z??8cJ|Np6GBQ;-%@J%)f1?+l)fo$2ZaY6 z5e5N^;?vwB0%?cOT5HeizL7-3G5W^7bvDp)4WINNgO4$Uy09T5p@bG=u(&gWhAPAM zL3mxg4ZQC$!M0O31C5xLDbkY(1E2>0+crr(4?4nzD!0HzsyJc!B#<8;ZtTa`Wt_z4 z5EFypBfN5PBZV7=9q_gvSI~Hs ze|a4X?eMZTtKfky<4tdGh-cj)ekl`MV^pYb#vzCGu9#L!U zi1^%AZLa_G%eY-y(A~A)3oeGfZA<1VQn|d$fj^GT>*HoyxsIE+zdYa?hU~cxpUUSq zlbB8FSP9{mHdfb~CWs+AuWW9d(o!&PmzfV>fx{+y;V+a!k(`oi0Az9|u<&x`okG957sv zSab=l4nEanfJ(_R%fg!xJNw+>r-$@WiAd8dLMKtSj}I<8WQs~gnt>}!1TlPYISlq+ z%e(Q8D$f581Q;1y5iHVl8(0~ znp?_L4KG9lYy{kM$etO~bkotwZqXyScIZsV%O=9=04O0`1pOsL$F|Zy<}e)456on= znbQmw^fJ+vjW3o9addR=gwrT((lKFWn-*57>hn?;C0=o`R?14pQ(OZvl2e6*&h7VOAMR{ z^kpGva1h_z!AB_JJ@52hRKD57HJQbIFxfI672Ll08~WnAC@j!yX2!c+?~cE7T5;ip zxIllcAt=*K&X1ZuO@;RiLx;P=_tbKr_n!GB7|e*^s|iv5Jso2WI)Z=81a68xgWCX5 z=gg;9(-xBLOwOXCvvLM{4ES@_6OOVgjh=o6&Lq4>a+RohkO5CHWPR=m*}Y5`afuu5FJ4D@e&oK%MOvlvwC1uWE4 znu8oCgIM_>v36~^=&Pjz8~9CTndt-#twn*`gy1E6*CDydVFOOoKQe)-eLS?1iQ(t4 zZ;Q5`ni*;SO6kvQIr?wRe;J)b+YQQ>pu!=yDhb3jXDQcUN;}b7EkN}_!)&e8i%Olu#vTmZA0j^ z>pOctawY^o_W2{rM#H=kTr{ojgbd>~wuquCq%GGDlMySOSo!>W1i$Aw?xVX3?9`4| zfdG1rPw|IpzpM8EpY&dB#NmujO~wu6^!Z%=1js2>O!|&QGpQux|{ynO~J>e$%mNG_DvN zt&%F%)%L{&sU41N3TbG)>apTE=(Ys;JYTLEMYmcXJ^`7yO+o+ZS1kx{hD?}KY$JEG zhn#3pQd?y%?dcjtqlLvk5z7kjXzxouFKsmh4yOlZ3@Y7_e5d)@#iaPhy9&=EaNIwu zwhs#5*rjuDg*BAyA6Ustd%i{q=*dgUdGe6|<>rq_9ukr)R|t54_IXO(Q6)EEgVf1k zh)z>@nbDnyG85L_A-xmSROntzN6beQ)A`CSZdIdppAPZU>R(W7BUFmpta<`WSl>!< zn{}f|aVSYa(_{tSI9dFbZg0jsKl>SmN_B}aS+P0Y{$kHYJzA1#5wd!j>Z~4pd8-+< z8;i)NGhS*GkKTiWy+Ses^g$QrrH@AeMIrL*Op%p_DY$EumN_#L)pbJZ^@l@_Z;U3&q+4Y z4C)-2{p<%t3GgyK_N0r0JsEM(KfNb#7vy{EY+fD3x{Xs2fZFKcfDCZj;^cDxuYnA* zjSVGb=0lh3MR#Sd{SU!M;Y3xuGE>BjG3Soxfs* z??t}m4%ryv3^jHtOx8LjwSNsCeOeMwGSwZPfK=b0qG(y3H>VK}=t4j2OG}cA#&6`G>0n_(!|J?t#&Sx8p z-K$Q(WQZ2M#*Vv&3a$@aR090OYVbu zC3flsLMh)uAgxlj;=`SYivAD`Xao2-s){lGMj?tYi}FOQJ}QR3Z#gn~^}}}eZPMU{ z++BcW1_CUTxg3Lr4)cb892LB!9}5l;2NI}&4Ag!mia5=M!(oV$g>+y|W`F|BhtK^c zjQj3mg`OBeK|eb}2UM5_&K2b;){BT5T0m6=XHlUWmTi02xXnXd)79vuMcy*=#!=YQ zMWuWZ>{^7zf|QcfYOowDTdRBGj&6Y`z*_EE4AV>z4XXxlWy9T>iD!IX$u3ePgNiJC zAWep~Q*So9I2WNRh=QA27aT^WiyY}7l}yw%f&r4xlK;63vF$-3)IMw{pjlmRB)u=1 z@nBSP9n<_UZjHSF(Nu-Cw|PdUF!l`8Qm8BUd7DhCdq^91CL3|N*jgbbE>9~xtUOu# z)THWgia($Nu(iMTwIRD|Ab3Qr-43pD0a>%O|CX^P=L((2>}7?pKFir##@dV*aW#D4 z?$06KU?J2;nOlPk-i&olv`6{M1CV#V<<6d?I6V9w2xzyK)s?M7dh~z23T@03k(Hwy zbuQ(Oo*uMW+-6GykHJX&Gb18S{Ya{D~M^$3ta;8XebkNXMuM0~SFR1`3Z zL|pxJ#uMMl*d=XC&qr-GyF?cqV|MG}F8^zaW4h)O*! z$=ror5nvdEXo`JH^l!gJ`gA>l*$1Is@Qiq11}VEEjIoxt`ycu4;%AxrpkGtE7a;qz zO4vwpty2TIp~h4^ZkSs37z~ByZ5sub0m(U6a@A!f5s8*uyRMaB^hqWwhMm;&1Zty{ z9?vd24~Y0LX2w7e(f96)FIFdpb=$a?#R)4TtM6u%0iBqguf%$4ZL8vA4^*ZHj_r%D zIRqy`O3$MMVDZcv&|v^PWIk)*U54g8 zgJpYx^N`e}m-(V0T8$Ws?R@vGW} z65AP-^Zj|H;M~^RGF09nKVO)>C9lic88csFey}l!P|_Vm8QW!*I(Rhzu$Xs~hoQDH zrVv>}F{o{d3}PN#XQi%&VwvzTi{*8snMty)vIMqE)OwFp2}Wv=d*z*0T{y22MhLwMb9@@beqmn2piydu&ovU>a14C^Nk zby9xJf&7c!gDx&fD;TB6d9>je&r?YJ(k}6CuL9$x z*^n=}BJIME3z<5?L%TvHAcQf_C_AMU%b37Rcz-iLvoPZZXs9eezmlL@teRoTs=XIa z;aTI)2KxRchK8vgcb5gl9hu{IbudQco{!vx3sL*W(faDfgnoK<65vT;yQq5-EY`pK zF3Q23U&gZPbU#>e^jRwon8bAX%vKhA(RESeiULrT8|ZHU;A!j5GNnt(B|IN*=RfhYY{UG5xk95GqSo^%J(!GhPKXRoua74Vy#iXOXtMbP& zug+^)`-cCxt9pWw0${;Uz<)*KHD=3=Qv%U3b?58yOghfj9cZ22jnzOC(gMLaqPNeF zlBJv-zkupHi=9Xmj2WI%1nZ%+5pBEV`MkI+ z)#E|qz{)v5=S;AuEA%W%8`ZqNYZ9YR!} z?qj2D03ntOu%6OfEX`7l2y>)H{ezR+nu&2N3#sw1s4BX#GQ8`4PDa-8E=E4@>yxm5hYy zv8JkPv?-Vmb#4R)-s64fE#G6~MM!`i(;ETGU(WMuH?q}f*VBYdB(~W#iuG|}R`kKH zkjz?oBW1TZ&xu$rTOdlEMhMXmP($q9EM`;+**||!HVRaDU9}k34jB;`$QUd4oCjLU zZ9yDMHwLM?qxnl7C6oE|h22Qjk?gYRiyjGf`0~Oc+j$**`*i75YQdO2C?T5 z^Lh#AA-T!?P}`>%2CUVQ@R19&$$aCG+R6a)0#A8!^(`Q z*Iv^LlOpiYOs&WhPBU4~pgFyIrw_^ak7ON|tv}*t`$mJy<+}C<_D@Ih)nqr}H=#k+Ulp*&bs$Ji1X1N3?wy_GjbpcB1rUs%$&% zg7GA3_}9U|KU90Lz(qS-q%$&Vv*ElDKx10wyKIs4s6b|(v2k6aGVgLgzZ{fJyD8oK(qJ=z-+RRojGds7p1e%DZzC1^U|^GoJn+ zq7#JUOe=b1W-^%C)aQZj$Pto7w&UWa;U{<1aYzQ-Lur(2%ev<$DLUIP;fU8``WXYV zyFj;A>*vciyrC6cbF(1oBycK;9Xs}Y6&Bm+3lteR_u-{r=-Lj9uez9F4OQ?dnzf zDP!{oa~gYw--A6BaO12!$q*GFj(pu?J0k%> zlwXJ&UIcpcs#<|^J!c=z=^_!C243)54KJ*252*fqCfd0-%W@%-`Z#YVgzfv0S?#_& z@xv3_De&Lov|rg+#^rHsM!XB`iJuLX3wWNBF|qA~xnjAj|9+mM_wn(aHtt_S=oy*y zhCl_Q^Rn|&3oioqMeYOzlj)A}NKz}1{WnIrK1E7<`T+Xo84x-JxY5L`P$v3616O3B z2>*{A;4Aj2l)V5mG}=6rd0#Zj;h^;Ziql`)l?;fh=P<2!733I=xRe1eiTc*EfkOCuHQ+oiA+c%-Jcw&7>?;PQ{++A3d3($y9mu={5tOBI)OHD!G> z+l;5nGR0WJVT9eic9SyW6y(=(&z|84%yYf!rH~SXQ%ft3-3Bu@J-=r(O;rvIrUkTW z?eysX5=<{`30+6Lnksn9hc6nJH3}$iP;5#3C7(tHNFtLdd}Vt7Z0*@xpjbNtbySM@ z`eEh`p$jYQ2ij+;Q-5rPOEm??Qlt1VHgadBeER}OX<@P3<{3?IhRp=m{rZHOp?2yU zY0r&>i?>&Xue~s zg&_cw+1@?V@6&Z19z{D^oHxe5(WS@6G!y4QEz?K_kUy$x##sTcTlJ^PtT`9K;oip)(y`VK|3LqiGJB-l5hm4l^F=sm)A z)Q~wf*mx>ggTH7dS+!6a8bYYt>i;{reuqo%7ny}sIx*`%B>H%r@z#K40?29W@4+ke zbtR*9j`R5rH6y&<7)3OYPqMKVsldk1#9D}dUZ(0%Z5PCsLd@piFKD%s~ zsLRVxoh*HcQ*uUrGF$mVn5w$6%}^+AAVoE?!-4E0k#W~s>CYIrY>0tgtZc}t?k^=S zHq<>YHjn|*0-U|e{*XXZ22w^qaGYtY)YD64pCQVI>ZM?GsO?f#HrLvaj3&085d^Xz zygjK1K262{`sHM|oX#Pgyp6ZPt<`$PaF%J$HeRkFYefuSnwK1knV?C$^-|pjxqez_jj~ zo5i3l&PF`KwnnhRwlNGQP%%x7ax!7k!{kHx$ig&HsV$OAYC7H8my@iBNtT+0&e_MB z4%NaDqBYYdHbrUmFuuLt-P+&&1g#7mJ=YEsep*P5$J9gTZR_OSM*JtNLON2K!K6M1 zVjRgxa6Bd~lQ+2*jA>E&I^O0_tymTd1-B)%4(0S%6e3knf6rVi5Rp{MVdLE${Y*PU zTVKpXjF3tMeZm8WeTT)MxB9Z5osOz-8&j7ZbLwk z*%>!MC_fP-<_-Wy?;;5O1Eq1cpo#G^n68RJ0s*MdaoRg_a1jic#gkqQo51g}ck1Bx zIIBApL+StswqFDjSKWz~bkGVu0CJTV)i!hMxK>^Q(d+=oVq4_eObGr>B<-g`G^=sD zxV?WGE<$<9v|@#l8iVd$Q;>GQcvVAAM9;XGus|AmELiNi@Mo~FNEYy#4}cj*Bks1z zAwHT2GH_qS3V(XJc)j3Oglf?LZ{qG#a8Jso=PBF5!6{{H5&+~q4QW2-2)qkty?zm& zQ-9vt?<|IzRf8$N^7bM8oECocs&W@&v3>Y)d|4c~SFwZV%rZzD1bE+~+u58FSTuW06&*PG=5u&r+1t~UNA8e~_JnrZs{}9+ivim&)3(We7+1qMD3a~8q@c=sq zH-2+ediWk^UE0vwXP?{TBxbMk2Ssj{%$PBc!l&{qv>m3j+S&H5M3Q{@)olJUU&5z8y#(d^`SSb;T z7124?(I_+6X8pYTZs&ZkuLyZZGBA}*ERCWu=py!F@2W&Yp;$VHO2ZvKGFPsw5xsH1 zrJ&43ske#FypcQfuM@w6KFV7`w&8ik7jWp$q*6opb#Ipg&i~(QTjv$~83QT{g5)zO zNyns0EC2va{Hz?LMQLU$mYSMv4=aJ`Oku?;f(Bwj!CjG3077o+N6##;soiP34rzH) z@2AK*@$-aymkVxZ-zMCycM>FA%D+ai`xi79sPTuhUx>Z3=w|$C4r*I{9a4oH|24g} z-5z%0r!(CmdO&#Y?Rpzgy;P_w=d4U-!Y^8(Yzq`;xhUWpF#so_aai5EJRt^5oFO$U zU$3Fbblc`lf-aX|w& z3ZCbK8*yOuIt3M1+M7_fkTC74Yrul?8B1idKPL!=FF5P zPowGdub*T5(?KYnDF9E&mzmy@>!1y#7`%RG44tG;Nx2)fSFL}J_kZbc++YT7PO<`1 zcJj$;+NwdA=_jbY>Ah65YI{@tpAd(TBamCw8+R0u1un8aU}z|Zu++UQ1I1;-kxvJs z`}<=83TMOj$I``5?e32`@#*5C>P0ANgBA|8Ie^?Me?*I)57%DzexAc_c@QCDKzr=DYTlv-tC0 zT?=8HCLKDK^X3piFV`yl9^LK%$M>u7{EkMmvLF7;mWj&FmuZLo6JL%(gB!NM{~6}f z1DDRCC|-=F&~cU&5i3gCOH}JN2sp?O`XB911ZmlzH_xI;Y*GQF{iOk$?7%r?1N8s5 z`rWK{|0?Pw<&>Ho3j_+nFQn-k%V=Vwfd8e3WWg4s1wZXy$Av zkdmmH(4YAf#A7PrKLI_n8$U7JrQZlh`srXgAk6`DEo1jA=AGXbgz(~@&>m?+2Bnrg zE@1*yVHommg#$0DP8n2+$-ZzeEJP6+`n2NB^^B`;120Leom^>vhCHPLyjapVy7$*c z_CV6N=L6vfH#k0h`)0W7r*G^1CYpJw=~#kDMM6<=>_kw*~AXbfqGLOQ=3L*<%h-jUw}BwrW58x3M`Q<4D`T# zP7hVcN%$diUYAYMuky6j{o>@-KOu!41*=(V+j$oBgS?+QI_5WN&`@r`kM6a7cY)i< zhMoaql;Y0KiFibeOJXsP&8iXH5wc{;`stoI5BMhxG0oJfT#SsM4csJ3hjNjDGe}$o z5ovN6D=LuQT&Z-^ourUmTwvMQUmTd^2kL*cDn^xxOUg0@isxjvImmX92<#95S6(8^ zM|t3SG>i$KPo=Zu77(nbu^1qeR`RGr@f2KV`VtjPE_xILbu$wzCG#3wh;PC`rdXg{ zVhiUYmcDmK{*nGKUiP4bdj(Lk)d$7fvfG;EcF2A%0vxKJshdr-E0<=YZi@+A5ohRE zXBJ16*ogf3OYtRH)wm%DHrEtY=2G}# z4^iEFlcmlfuV5l?GlOVt7q_S`(`hWP=uHMiLFXmKZdnX|*y8^&F}C=uOz5*A+=$KEDUX&{S>v}kHI=|5GV-pC;t!E5Cfb9AQ&I3a$x&t<+Q)8hsW(HHfnjDvLL(5$Y z)179p9m?m68D#!P9i_mA-(A1qEGn4g_p##}RA-_`1o&`#HPvqGMI|dd=77i==us`7 zo7VVgn^}?P$~m!(@&;|`QCt-^Iv|cz284|{f7$=d1`2@nDVrIs!!us6`utLm*NwWz z%R#=&N9h3rydVTndjWr=tnveg3G9AY*9Euwd?5>#c?oz+=1U5U`w0U;KkN+=l+sEO z&H8^?ODslaUHdM0%L$g1y?Ef2r!1OmS5;_WVG1&NrNw5=c>4_|&uGULytsrj834RQ z&Rd%)NHYg2(WP{hj)8r%_GM6Er@(Lu41+F{>0y{k0m~W}Y2bC{XcJ?q(U5DYdluEQ zsYks2f(Z2kQKeS%=}F?~|?uzc_mw zSm0XKY1A6JCujvL$X#jXf@Q=@>^fsiyNE)0w4rqTvU8Lb|9gC-^4}P#Y)s z%YNtE`^)1MCd0aNSl05U1JFqWg-NK_To^t-rxuist11+T{nC*E#hq6n^Yed%wO+OB z!t1@jqX%WfzYsQZo=FL^5n%t6ilt0wD5cFE_6Z9e5}J~)36>{n18-dExGfo= z`*{@-Yd%F9-Eb|G(g&siIz*92j#cS2z9m>v3XQ4`!9bl4SPc2+oZSWLLwo+r>yAWQFik#&;$wkJbR z%ckk{ z23st)@He*2mCyepr7DRfwKgRaz|c5*djzP{oU0RA$^zEF#)N=l$)x~56a|SoNd?#f zST9)t^qG0{`?zGT7(eLHG@Je`J}u`UZr@RrcLb8>Zg-RhRW`GLSv}00;{`9njT<4_ zRVq(@^e*LILVRthXwru~a{A~7K~EKw*oYfbA3FWPsj%=czC~fdEB2AXoqYR_!JJMs>h(^*(mOXQpuo<0 z<28AubPv!LcxX8U{-EVbsuW87WBust!n(R@pJf+~OXXyX8Upi{Ae0!5)?A78K}Ih~Z<-|n0i$4W%_ zYN%<-M*#12=nuS>UAZB+xQ%sccCtL-^W*)OPVLT(|4dU++gQFAL@*`;i4||Z99XfK zH)uVVL)u)-Z%$U;5raoUmds@At062{BtUsTJ@7}+R^55Fpstck?Gm->}8qYu-&e)41JQUdSaG; zf#cL{*=Gag#=mUWAu|en+VLI~1>lTEDj1xG$m;7+?S2JFU?HPX+wr&pc!m zw$Bml_?W4TM-LU{fs82E|su7l+T*Zwl&P%rXVmLe%zR+S=&)#eN z2>)^T5-AbojmeRjXIqFd42_HwN0sC$LT%;W$iDve`aP4sTvTE<&p#H*VYxBG51WOf9k&J%!u^C`bVO~j}a z^!3eYO`ID4*tcc#y1PNF#EsKsR^-4;Tp-o*i7Lv+UtfHyi9=m5-BS^nM{c(>sml5j z_}k2ur(T^@HwzYNgvc`*zIR^BpX)4-GXvc1vn#MH`P#@@wtso^vocAHYd%$gi1Z*N z!%lV9sicQxSCj(?yQ|IfHjIU=MQuqv=ExkYmp5RgXh_lRF~c(TXR!*kUkupBUw3Wi znM2D1fe;gz)1x!Tf3`X8W~ElI~?YiipB4XN@VYLjp6$hBuE3I9q;! z-R>(0j=)$|w>3ncX}tuZEwcdkb~6C4Mg;H40nq&Dt&Y4>QKTTd`8&6|Y_Ra7|NJdf zCxB`Vpz4suuRsN)OapsGx~XL%g05ILG-ahB^ewS+ILK0xCP?@WZyxtg7?%#!YHAy* z4~`hpt4@L95MiG>9C8E>QhzsrQitmA2(C+K#?_c^T@pp#3DJ&;$Bx&Fq=?!q1Hl#@ zxF<}v*p=xvJvWqZuOu5ks@#0^_38fdd6uxu6XCCsQ^^gig)G)=$VpsAn$e)_RpGMK zXM~-2s+u(}>h#NXX-Tf^=u05hCqzHhw#_drk|)+5f&-jFWRC=>nZ9$@ICGah4qMB= zBFmr(QLK9brp_HszoX@@@dXz|FOLhddU>s^RvLx$SaE#p0%<D8#tpKdquXi;gsiX>rJcU1EMU_AT zJ!a?q3`dV8sS~qaPNIgXGV`ubJL(Ls{%; zQkt#%lxH_3+dqivD$$o8Zp)$TyKEvJ%opg zDB7kPWY?l?pT^|8ae>&D^RHOz>=0l`1z?bLVTtm>r(kP~Xcu{;Yz1s7IO_+PYWIN4 ztl{bZWn?Pv-GZJA?>sG4)lfhz8ro8g2U8))qJRN%W-7%fYL@e&XX}SoPh?Zi)Th#L z-_HPd#1En6MBsoC3g#TU>FesTxz>F=t=7uoxEl9F@rLqv)2E)nLVzS6y6p<=`M#`p z15}!2nv?SiAc7scFC0nE1Kl~QV-a~kiKJ#Y{pjnX*zX4I*+2LXNXY+ugAu^~`7KfV zVE4?5wXY6PUF`d}6LcV&kADt5`>79J8{J*+J(`_?cBa;rv8re4F{_b;!3Uxsq)3fW_hhdyRK&yTwxL&5O`@jn!SCmMNIeI~d;Mnd>e z!@{ebV?vEXo}7ZkIk8qTMmG&yE&eS1?MvGJ(?$%s?-nC3?uEslmz|}(zMVP2UetQI>+<{kG`nmrcT~$usF`G*(HJse18S@i)UQ$j1LLIaV-D=3 z;r1!5NxGYl2g(OOkiFN!ZPPV#aL3cLuVdtDhiC@c#;DB8rpRpssVnI7e!IXxxnP;Fn{tspj2 z{Uofs9vPJtujj4gp7 zeos!94OyepSIC@Il|h7_AInCc2<6EiQc!9$a5e=uZ!zdl-&EN{?y*NovaEe{eft6L zU?d?rsSVo(n>GQtlZ$d1vXQB6Sv|NQxGFufhp^FvI(!_J7G<{2!3OM(4j3BI59`I``g-#5oTK2wN7{ zKxdkKr^4PBJ?-@P#FM^XQ`rFBttqg_A-1yP2W*s%g)8K?eoUyz$Tw1FN}Zo|R-NBH z>Q+_~61Q{LuB+PqIA5#FxK>I`24C}lLQC-{3238fj$Hh}U8lpy8kJOd2XBc7RBHd! zOM46afS~w=xV!zO%Fty@Hjy2AS4GlthOhf_prfKOiqq6mA+aNpR$g&Js?3qYv=wim zY}Hi5Ib$;iv$xy)EHn#B-8ll&E54PNmG|3d0jkt)s~8d|?eq9;6%+MLqKdhfaM!N; zz@F3eHL3@i2(@o5E*dKHm;@E#;IC;#4NoT2ROW2_?VS5c8`6xTpV4K zE3-pR8i|k8C0mZFXdN?P-OCbKL-7%nNd6d}%It_-gN#aTr8K*hM+-jg(-)ndw9ZFE z&BnZg=W=$RAIQ<$Jf_}(WcAAI$eqg>gwRH)vzg=LWgiWN*$0zdgO2AYFFZZSG8D?P z!28Z0ai;HOzb;E3k0W_NDOk@BWyu=QrDqZw%AQb--bYskg&Gk`>}TjoYZ502$K4aX z$}`=C1Lw0n$!u%} z9Ys?EV`s3o{Ll6M7lqhJnKk3kTPuP^Umf=1*)c8dQ{N16)l7Hc98%89G>1rZTBO<1 zj^>_Yw7LX98Q7lN6}fUYo(`t!P8}6d@3_*ZP;yu_DYnPS+j!Wwb0uwuD{|z>7{&X* zq*;e?w($_5$@+G;3+JBI`VX$wkBjg41>Ja(=xjOQ!9oY}@|&5s}HYpN7rt zn`h$N_pmA7Wz*QKITEkhL!~AZ4!auk{LIbEKsM5{%6r-SVWXnd!_KZpCx-M?K&t@V z$+${3;#e!LoEL2!8LF3#WI`dtP)Dng_O9?YAtq5yurY&Hbiw_=>ae{_6oh@lRWCF$ zdSY9my_3Wp%sdXdAN{Ndz#dEn9RAgQtaDeLcq~diVoA?*_vI~HUGn`GpH|^DlhI3q zsF?$Y_Bn&?={ctjiIwHPSdnyH>` z#D@3XlJAsLHn!(6g%<|(-*5*Ic4SErEzVRJbw??hEE>MHbNYvlw{}L5^Yk^n-JPwTGkjBO zJ`v}~cBpP#3mZ@BH)Y~6CN!%Df&i2wRy1x(Vo&Cm*F;v@zf#nv!0aMOU2E zlD9F!5@kpj1fLDIK(F^E=w2tDgGj{TEy;qExoi9WA&5!$pNB(&r1;Jo?o zV2avWzk!}|FBl%tr`AP*$la`;M^B^m(A=#H*TO79EJesyC`%l9-W6z40b<&HgCh?o zrf0a6>mDwwwb~I4IU(-!#B+ycd5R&I_>iq9ooMOp{s#KqduRIaSpvnog-MD>4I5B1 z7)Bu(48tvE^U-NPN-DFg_bQ|$=ZxiRbfT_EUg*!ABOpPA@kk_Oc&{~)byQ`I11Qt| zfmd418?RSrftYy8+*RefV<(lZK((dG7y$jo04=|!iF@G!@7xNse;=@?Fq6OH0TOx$umgG6#%+V}B?cjYW9182$P9GyMjj;Qx&CklsHT zSsYs1@0)z}gp_n{(i~;-Mn<_D2s_G6<%a@Yp{zp;981J0CpQ4<9kjbxH*YOiy9=@I z_x_TrwZ{HN4u~MxaZ1ia-&yxUTz*f>_d?Yb{Rr#|Y(Ky2FmEj=_+nSyX;7#zUZ2p1 zyBegue>5Ksr0sIaQG&DATfeWt0{d0`us1SFLtdwFFghJKbz5&3aA8>iQ`pi_bJns|X`RwLYOM8~IhY zNiT;4LPE3KdAC5G0dR(rvTj184Ij{w0<*(LIz))G22)U_W^Fg)>@RPabb;EkM%Pn@ z|2R6%DVR%y+4=EhtS+=WuZmZV@1{-KbPgmtHD!l#cT9FKi;K>zco^-7H|LIrTwd~@ zfrW-m5;lu^MK2}ku8LOvHGO*hqC+<0WsX*Nxb#u#ig!&YDYhnslv}e(im<39MqJFQ zxiGWpUC9OhqQz^y-szLp8)HfR5sgQq&tE>;7?B;J&9$zPeYlpfmo{l;CSu;~71Y50 z{s=@>oX~;5veD_fjVP4?t5B=b_L-7R?R_6*)Lh~e_>QA zA7i)9qK%mednQ+AUVya5)%*K|p98-s>tYP6;lg1l4?HZ+8i}W@?pG}=s2l%0R9FHb z6R2T*>c3s^5u+_ctu{x};G{T5Sk0mKlHMev@&pqXs%2Gmy|&j_(ur81R(QWau4w9Z zVNZZjc|+gC0}m0`z%ugqk;hou! zdH(IP*WqTpf?lZTb0E)oZWH6Ysy_hrzKlbBrslfNhVv6!8HYGq?*q6MrAE2V_6u0Z zR5l9nXOKI|UN2GpM!AemkPe~JfUlr{Vk7HrAnT|Bxs6htx|-Ak5E3f9t79{o99lLf zT4(1FB&JcM%_UJKd06Z0oYxtCptdKOA-a|ABuYTMKY#vuG(U0kHHzIzW=_cmkq1BJ zE|ssUtu)1(Q2;M=m&R^nhd?dJG1158A6DHYzv%T{ES0vgY4(JME5AjUTC40Sn+|4} zmnu6FdW)1{V<$4SEeplqdzP(T#md$z9#%QTWl7UohW}ZjIwjk{yVAp3lo(FQz9nsM z&q0K^Z%B9BZ7ULK^h`@6g*(#tn4ZWGDGt6lc0QwpNi$x2RU?^k4Vz!QNz7c9 zH7%{HcebWmWtvIbtwa$w%TP|m!B&!Y@xdl5SFD@xt*bJ`GD>*zfQox~#`@5Fi0KIS zz-Tdke6rZh=lIf94GQ7g1^UppFrNH@#=m_s_&h7gpdFB^ne@=6E=R+dxwDXm{$wBNhs3_7|R@!=H&# zvOpCWYDZyDt>-h_Sck0#t$F$5zukL$dV1eHoG`c--#q+4+wQlLNs!|HFv#{14>m(fr-ZhwhR@Sbng8|`Jq#*Txp2n1`yZ&{)N(VS59$tbJ*j6wfLgK|dux?| zaMFhlxtdQNc(tIjA77$mnRHaBtQRdZgV^_U%?`x(EG4@Plo$ZvNFVPu3aUG6;#D~g z#0x{7*N{b_r~6$PcVjYrp7KF$%<|)hncp1}RNv=rbQ;x}Ncw_D1~kG;O@034XShho zeiDjmarA2VFcG^=$%tein7(8jdIucY|$K@{PfU{Go!BoOdMkTPo>V zU3}jU3RUuaUpJoLz8LX(Jo%!~J&%#tWo~qU&I{k-J%jC=t+Eyu&91H$-+-#TsWXFx z#`Jtjgj%s8=D^h<_IuSSvnQtmY{q1butTi&Dpx+6JQ$P#vfPx9n5SLBCk}x3f6ntu zX4ZX>PsyKOB$Pe>=)2=Wssn%if#`SL&N79*cb(FCibskDU8zcbi>N(XmgLN<{tp2t&5;LVHY4do_fSojeiCDzCxa5| z{om-!{RkQa{@F>)OQ;W}F+wA`M&)gI20=ThpGuxv&IGfN{t=lW!AV0fK@YyR%k$Wt zk$`&TEP~Qvt?p%e@FA6z(BMOMx9prTq?TmQmr$)nm4lwE=ysQ6f6F0!^+vP*ANJlm zsOj`=`(6v6AfiZ-&=eL(s44-Z_W(gO2?3<$)h0 znn)24Sd|j`N)-@zudwcY|9&&~d(ZQ}GtWKGACEIT9|IJ*S*Tir$#ZE3|+^>ujQwYzdQyGc17Qy+olwSOAu z^12wt{^%hoa4+p3b}*OW)jUr6gIJc>R!%Q+c15wO_WFQ--Ku}MY@F=n!A(dclnZ?4 zPqhnGIiLDYfdw-KY6Bs{P25S!Yk$!MC?*_1bjLNPnA;wMz(?h$e}NmRL>K%@iz21G z?;4gS9PYnlbglU5j-SZw(p>N}_%6!060etsa@v*Qz>m=H20`ZguFruEi^>M^;pP0@ zacKbAD|&iuo{M!K%zEE77Q&0OP<#6tv|Mz0NFoV&aTPEirG4L}UiA~dr|6=D{X!WS zw=MeU=!u&GP7@ihXW?<`PsvwwleIhIe+f5QPgzV(-btxXt9DK63S_%$`$d0jNMn%L zIplgzJ!Ze-QQcLU8aF@GU=MPQP0i*T%{0u3$v-cYL*?Ja_x@CS>4Id9L3wKDdMI0S z>h*O%eGW(+D<$4cI1wR{)~On6pqL=|kXK~0RS^I9quJETPdvzhBj5tRz(6&;FW!54 zS*X1fEGD^kVV=Q|$)B?{yB++^=57i(q8m$@*>5@w2h%#~UxgcpSubOJJ$&w&Y}$<+ zye>0i8DHPI=8!9c%Bn9KwR~*zXChf%wiG~w)doclfW02ak7}!*`e=953bPIm38}~v zB+#g~Y*y$lDuwE)^DqzH<%WJ-h2m4SnU?3%8T?2xIy30tcR5jivEEf$3mROp*(A$G z?om;G5>W+LDn@rZRIB)*TdEFT?@`IWWViC9C)jnHjdWq9^R`YTty|g8`gppfwOG0h zV1I!o;opC4UVSDtKF_M_1Ybcm5sI}{!G`A9&I+PLaRKNjRiOQ2dpI`7tq#d|yGwao zG)Dg@HS002$`%wJl9x4ip1Bk38u+&07FAs=VekmhG2l+o{|KHs9t5nF*#HHC1KXL& z?u|Q*DfZ2GP|I32e-0k~yEnq9%@JzXys}h`E}EMBnZ{riqZ2)+3cd$V**V;w58m?D z$tq7RQ$EdUu4+E;Q>4t?De85bXq&V{9gGxAv5mz*7Ul}B8EPyyX907zJwP70tKJbD zohq7D7KCX}_pZ2n9(s1D%uwRCm%27oeJDo;gYvA}Y&y?PmYJ&-oUqaqry&RUc_yJ9 z#+#7lpN8ILllkxkrNd!x=dIJ>@(Oxf0AWj9J-TIN_ej7DkOMuADz_RfDI|x+3>_Dn zaCBMs60gdnjADirR5n&lwl`zPZS~eMj&C#2ep&UOjn6Dy=;E!)Ea{o-b6Dj3j{AOO z!l_~!(%$IM@nC+^HL#q&#-7+iNC}Os6JM@4H-7Ca@wMC~C6nG1ephj=*hE>)sLN&N zMpRGXWHn=2FoB%7@^jM-@1gcX!T9RmMR@9&*&*)?gQ>xyqnNI7bW29rPy7|SXoy++?bX|DcPmU`|t%w9l$#FQ+$^1q^Ww%xXHjf3;H{G*1pHZ<&r@y`NxzopT7>4sdnS04+K4 z;$v`Yga+r%NU@RSI`lSaoS>Ctmo(tjbcJ3#b+JnIrPE^L+2q>7iKboqS!?`f2kE$C z@cZo!&O@-Fb@sLT6u)IeHQ6x5i&S44ufLcu75tck>jbf-}H_IFfR-0WEob-mf zbvj(X(HC?<_57H$V;1_Gw4V)cgu~OCdj&5oT-Cpzze_7`>EWsJ+`;LasBY;|6N%8Y zyrbT(OY@4a`u4FhnQHs1(FzTT#J?0m)E+z7!ymRc8^7g5 zjuvcuYHw`QGXIMx(%)%Zhj?ChVa!^&kq8Yd?H+_0*b4XkTACG;$mGW5qGWKn^ry52 zLVNj^5nF&&moL;#C6uH?1qdEe_D-_7$~6=fBK+gG#i*T%eqg!YAoK|T6N*X?!0;zEN45sUL^FAdbeld{22>08lhtzn+) zo1x4XS^PBg(~$|JTF~e7?YX{rZow$ehQ-ZfHODVR5nO%y+ z5>)#i5lwB;b2bI>OP~nae)XF99PkNJ5(`L-^Zu7KSR{nrqp(vrBtXH=n6Hvo`L~cP z#XFdG?Z@}Al>G8|sa!bmwNZ=M30C=EdjIg7+QsqS_Hxp4 zZ*aZIo?WtVj;jluZw9p;QDRf*WpdF!`%Q^d9VX`~FA2ZzWnZg0=|jI`Pj~9-(DBzJ zi5oeseKs`dUj!F6om=3-#&jl?`Au!zgygEb-7WVMz~w9V^mLQB?5gs6r4qn#tm&3W z((*S{xls_-FR%APIA!jjG?JqdpW)e`Gd7q`3oqHHO9#R+Q3H4-?ymjYB8wYLI_DG zo7~b)4tT8p5bJjiQsjLRQtB;|{luqk_2&ueDgF1=T{3rp!^?X`1SgP9$_80RBOiB) z2y8>HJhqQBN~bvSRGgWimx|lme(OxYhXlMKbqgR?a-ojo-(>_U$*=2YpScc3Ur=e3 zp_h1vhn~chOnLYtnsbbYAUj$OgvswmcM7!CIao(uX3h0Xy2@Hsw6D9ZZ^2W$40~qA z@J^y{>8L37iO=1Ln}S2MvXzP}7rHqr4#YtfmOE@`+wiGDPvj#R4@9NyP2YiK8>OS1 zReNf|3LGG`GV!Y!;_-_G9J)`kdFZV)Z?GqU7kAca_F%)Aokw>Wke&Fu8F%$tft(00 z3BsR81;5AM1)R1xhLpcqL%gE7O)vk9Y=f+$;b5T_UdGX6kUZXdgTd`@*bw83e9@~g z6SUfhPg*7)#GU~ruzgd?3%bwD@dnAA$lcUk#65E$a%qTLL~itI&*(HLY3uP6Ml*>l ztIC$(j@(dtM%n3+I+ufP+;bqb=F*?f4D5jUJ6$_UEG?EGfk9)jAzE+l&fg+QK-*LH zD6&yVS-D80=GM{+1xlIZo;FgQRVh(2B=^)pJW0beCq1Q$%X|6DN(CCUSqZ0z9?ea=BFXgAcO$=Of0~4wHJ%SXM(m zThZ*6I?V&Hj<(!b$@a2Pi`AT}X|#fgT23)Yqn5-0!Oj`wkW+nqDSMDzUQYqOQ{Rei z`1KhqI3W~7H+#m)Q7;jX^%VQ#^^eXd{yT>n#d=gwOt%_r&B3{P(LK|b2`zwCphi)Gl9q1g_ zkEAUYgwhsC+cYr(2Te?3Br8+5!f8d!E~l z3`6BV$h#ea>#1BrgAdu+J<;&tgRV=*5U(F}r*1YSF>h<8qSG&U)Gc#ZCt`jEp*BQNy6!9TnQ&t!phi+?AEKysLt`o@6Qsb&+o5{ zY3j+QhqI;>Dd$#D}0 zQPErO?xKDJ;!#mB;lwC8RxFcn3@=`)fK|}gN88F;4rEEO8bOnT=asMC2mOD?Zq+>K#z8ZNe@5uYy+8CSbK;l|94|#PplxqTOaJR*U-B z0#YQ<`(DgV0`I#H>kPLFN;C$TaQN&*ve?19-y*@;}Qqtnw zt)dc-F~lW6RWJijFxPMvP%vQ1!GKZ}4|k5`&BVSIW?{W7u<2@JkIj}2dmStC1r79HM5W$CS=`vqud1>HyvufM* z1#~p*{MIDP}Co+0108GW(-oY*4d`(C(*Mz$glvK8|5axg%&vxjsxtjnOf z5IDXW-f;VDR-*xGmK`^R1R_e9kd!$LYMh-kWzI5h0)1A^2?e~4e!eNl((pKMCl6xT z3(4*!HOCavek4=d#aJT&76}FhogPpNy98@<5KQgyw`hx%HO+E+4&PTb1yE^^Q^P-l zkZrPpdt42_PkJ5EhY?ugh%}kOu+x$OaFqdGWe=HQ*bj5(KQ>OCnk&Oe>*o2S9x^c8 z`JWKQg9vtpAd~A|TvMu&w92R;3PP@J+SODYL=O|ZCCUCcA-wlUu@gwpVgOE^MrRlVQV@o8i-t3QuUsXwe@x1s>J3DpZC)BsZhQcpN!S zTq*=Gdw+r4bl`tApYBzM3FFMC>A|eXYL@e~;l83NKyw!6(|Z_7OhFjOq-j0WW{ZDE z7VO+)z!&xxa?Ge8$T6(^ts0^#%z~j;8WJnaTZ!X^!ptcDQ=@oaqCLx&3KIun28!O+ zp`EikF}rwQ56K)VnCKZGZp0quPl+ukU;yYU>OA^W)od8etiy}5q73vd`r%tkXg_& zC;expZ*>=O;h3?YbN zuJl>XMuwQtp?0j?+8e|dg)itM81X)n*|;qvutOAr^zR7+MHqXV=??my$4`(mz^n>8 z-ev}(b0Lq}ksxx;;~YeuTi>vd=uUx`wTh~CQVwv67cC?*(s5_N-c7>mBE5*{!SIJWW=FW1iW7JWK@>mZ65KL7($!3ym{bTL zws4NF6p+LV2NCvD#9+(?WCjKm3m5Oo)Io@w106Lhvp)QRPKp50m;wBjb`LU4&FL5q zAvFzwwC-@-h5bmcg49D}TAhayT;3tdZ{P!80tmU>r&gch9d8U&z!k$v5Zd zJuq`d0}5KRg-X4Gse-{QS`Hx3&m7T^0EavIKfT%*X&U}=K^g;qd}riV)BQPfQ(F+u z=HrALg?q$3K-e+YNVsf1UT}lF)EmSQ@<(XIbtA_~OJqN04nCoZyuxf+J+!62b#e#l zs3%wm0MP%q%kd9y7dqhOcK*j}{R2(PqQHK`JUR1&`Xl=w*3=k{o&i8xzDExVT_{hm zBK(<10x!l4i;;~)nq48t6au^s#sh1|iFkz(!XiRAwWZRHapc>S9IRM+rYwOIV~j;p zAIX|sAr+HplqxKnRSLC$%1~wsvA_p>4-5)Xe6m)C{e`oX2JE5!WY2M}Nv}K?6n`dj$wc%zuSm^1Kf*!z1(86OJ~Xdj5noqO zp7?$I!cY{b1uXlpAxE2kRx#`o`z44IP6wGqyNm&HRlS+IDos4ltddvth76ISf!Sq}ue*~7pU zh|qUC^PL@f<$H_pkd*&rd6w!+^L^<>8+FPfQ*M^Uw@{YX6AIW0)`{Jyf$5y7c`Df5!jZW$Z@| zJ~aP57{S(_=e8a!mnC^-==w>DTh%*&UZ54AA5cw|7467_<&Ei<%Td-U>k#tNC zz-j<27z2Ql>>djs^9ff9jonjfPAg;pkRtK!d*f3hSe@xn6%RTW~UAB5kDzB#eC*lu_o+>~uT zlpLB*#=ckN`^p(_!`*LbEe?Jo80A27>Al}~V6x06M`ohZolvFkPO19U{bd!{ysJ{6 z;Q1l1h@yr=3h*l;ryMQ8jIKt0kRE^oXMfFcH56;IQJR|`#i&WJCiOEQH3+-70pwh- zhKIJDQh2ORx+;O2fv7K?r+v~_7X zCJ@=!tLULNtgxUTS_t61{{&u4GyP_M(l`S=8)QRfGK*#wcsFwy-GaT(S*Y79&H#+w8Px`b zQT?F8)?Q}@fDwa$MPv}&aYn2`X4GVZ%)yLUJ)w;U3|3PR&>n> zVP!2jA}hgfY)pPj|AINenHo!U!Q8?+{J-3;PqUfhP(m}{K8O`aPp1)YWB%HO1ngdsuW2)S8~AfjEWIA89_@9wKz9!N@IC%_?FmbD|!fhbItt%65Y7z-U3uR zO-XbangF@=pgW)FohvzQld6MU*8tt*%;Y&by8@7LR6fn> zv8Wm8Q+Tel2_3q-xyR^nt*L*SHLBoV8Zz`I)n`uNL#PWh_(j&*3c6}1YfsPw1b+Lv z>b!4k^KC!Z?9CbsXXHx6-y zoXPZj1BOo5s&yd*d4aY-wH2Z0`9;^!aRmrmYBK1Q@r;!x4B(r1_&WRR?^^^-e zpkgy{FmmI9z5GGr)eF;^s;qvmB+$&kuMVAnS7c^Ye|5K3@|y^Ilp31lgMW~*dLeWI zQ&Va4i_!~KVmRn^JzLt4e1`aonAY5x6TYtj@OP5@e*ZRBS#Yu>bB@w0)U)@3x>V3e zTRdw&_lq&fy({cSpZ!13BOqSGIQQAGphs(lJ3kBFHaibR%qDG_AL{)HmZ7aa098~~ z1^?U>P(-||OFuarn8TO!nGA$5@FU!*Kk_9Yu~A4s#qziaQT)M8#NX#FG{QrH^Q#cJ z%NXu(JIKQ~rhxrc2w3rqt8i;b^c%A;^gA90v(H!qI!T%Sf4Q>z=U+fR#U>P$2!o%#ZHCqCox4vM^nths|7D ztz_lC0&h7(hIz{4tyRC3xF#R;#H2gT?Xk4cwN&?c@p5yWMto;|;IHB-L zgo&uY)6f@*P>d~KY~bqnURsnxTvxpcJ5a;_&)wm@XGVt^(AzJDBuS`MU%w!_F!<~L zmky~fyKQcZyjtz+FwOYm<|e%-XP_D&B=l|J7v@X45V8k zl1K#09Im@J^CkohpTWG6SUv|G)cV=%5^n)k1LZX>F(-CS;7O;+J4MtwM^%6K79?CD z{9#MVZuG7U2uGiRYm{ew69|_B6Rfmuf-=L_-+D_dTq)OZy3iZ1kZUqc2KlB85LiC* z_Y@!%7+1|(3C@Lo&j45qCI6F-ctxT)1Ltqs@SwufhHf-vLV6OJg8T6<_A_u)+mzU=x@^yy=b;U51%;@ zaz@*ThYSRIj8>-eJ4D^}wxK%yVzEkKgzz`Z0t^5-kdnI!K$f0K!{z{M zRw6kI{l{4grtu}pv+}G+;|78v=I2;^0Se#8ACTTa^u>Ug=WIlXsW$pbiQudh*lbJG zW)+$v$5O`-H~vW`YJNDDvPHa`%2i)@non{cy5oMIFOCI>muVy2@i+s4?kf!4pTiGx zrvPFt;~e}FBr(by@CH48hQPo_1p_P~prM>`T&;jZ5;EQp&ND)p+B4y+EpUN^^f$y? z43NN)eP7xXq=R_yX8&w~NF&4CVE+h7*~>3f6whyvCyJ0fhK|g1!0cod3_A+{ zPIykXE=Xs{)*z9_B^U@Y?f(|v|NDyX8@jG-HZ{M0zgG%jv;7*;vk*sg6WJV3(vCAI z`}Rv|_KJ`{lr!kUp5?}oiMr2+@;UA#`?Tp^vk+n4vwL+U=?|N_3XLnyaRh?N=R-@N z!_G+hgG0v(xaMdE=$BPTuIsvFw1wcmim8x7QL`jzb3t$JLW4nGf>g?4+W9pm;}jd<^S5wb|Bwe&j-DRJVB{i8LN z35_XJArF9b9!w`^G1w&#{4qSjxQvDaWa+!y*B%w&vlA~YI2EuqK;$P+LH&}4&fD)a zFtO{Ua z>Yib?jD{qTad?HInyW*+$d2@K0)Ey;wj&GS0R;R-tU`3R4%JXRuS4FRojd@l-ZdS_ z9P{p#X+K4{ap+^=;2I?hV{!GZPP#YTB=ia<<=fj-k+mYnlSqBDBFFPcskBZ3IpY%l z)U3^4khru?C#OV=aqE~~IyCaJWX_Mz6v(4hpk|U{`N6A<43I#Q$LoP^AyF<(SQ_D&C3i*c& zCxsy$oCr+|JEN7mN|C{*%H^=Vmw z>+5-+DKD#dp$-cY`yNEK_MFWy<|WiG_bR&!MAlM)@W=W*R$ix%I^MD8FZADZ;2gd{ zYSwif5&w-?m?b~8gVAPkTlF1jq9#I!&z_8RePSD zn^R@*%`2!jT<0(DwqqdReeD8!y~+cQp+pJsHC=6!ell>OVbg+3gq%SZlfwcD z^&)#}u|PAn!lPoTIi*y3d(C~iJw|`W>kUU9l1HynYNow4u6zpr++Sc4P?S5nj&D7A{su;){#1xRixWTyQ^LO+t8LKHgpw}W|2vt zpRy9}&j9KLQ>6mIS^&w>z>MArifM4icyv$Vy<6D>Ztb?}SIMNKtMakdkRj>nvJi?> zQy#L~WI#>D5dD(GEZA)g>ZuFxC*)T9pdXN|E`zLRYYSikl70Nw9xe=V6Fzrz@08af z_Vp#;RTbgBnIXj&8JR^FK4bG_Mwz`{G{E08Bw4L|igmDb3|&jkHh-VmJH}QooZb1bNDXNE{SZ$g zrr`1Sx;?)~`Ef)DTm;_Dpk0|$plQ_q*z2<7$}aH;r|0#=Xcx+L$v5UfTk=5Hq45cN zI+EfD^(+ePLU$mh@|yWMZ3H4dCcJdho#-s)0P}@6luGq{TZ^mF((!^{3#*SqhtQ#W zFQn+)IJJGXtz32Xg%C@>CX+KZmVTGs5(Ei`OXsetd z#w-vaux`Zaos{n|SNNWP^S>SopSaQ5_lhF)*{WmfZ5DY7jC%r%L<2^{M4J_xBgT?7 zh?g;LQw@H9iawmwAM1|LH0g+*?~VvH?g%;6?BQwWcu}l@*{sAlTkz#TdSFe*(DXyJ zY38@zUfc#*M}i35t3yLQ$&GRKkdWljNUwhEo|ur(jh-ZU=qpfDn4HRydv}nv`_#Z0 z4tp7(>7kQJ;!l~IXxHKfE-1sm1xc?uIXtP0?Tb5*IH@;x~5NfEo1E8{9@^2`b(xeDBX9F4wz#j z+HXV>+EBMl+(f_t@7kp<48=cQz4b8ZL@k%`r}G*sXF&(Ex9G_?$UyJSX&ZL;>i3Et zv*r|-sa4=@sgeVaYt5}`*Yy#KZ){wPCq}RCg4a)wU%D~Y@+#K?tc@zJR?ECS6I5o) z!BdqBq6S;JVy-#IDmNFN)x5m%4Wz&x7(gNxuAf@C+!Q$p(*$QzqmNh z!ELv&KgBnc$`(aW--B-2m6a7=~{WKxs>%%)c zYGc13yXRVQLIyx`#f@MMtLwIE*opcfiYiaC9|pXAkjn9NJBAN_@427rO+dpH6It5% za2<4LoF{X(lfh7W7?gRU0k_5!!uPG1HLrj^Pi22VZt@JFF(?8K;HYzMhWrRZxnT>O6F-@;KnL4chC+Sl|{^uIfi$a5j>=DsN*f+ykytc zU9sDxMI1x3ZAiVN7zt#b)4Bg{`d_@=@UNa3R~KGCRaN@lV8B&flNHfm6qTfq$Vgsb z-YM8SHFBqsIq}V{T*M@aRFamJdE<325XUrF$@5v5@ZhzL>PW_u-}6^5Z1F7wv}+r0 zjI{^yjl9`|ox45f{pFL!0zCl27TkG>&+wC2bplXCUt7d#x39YkTNqoGY$n}HC_?*X z3-vr~df%D4iAt0l8M5~Svr$lr&s_wgLjrYo@v5F1Ghe>q=@;44Aq;BWmdLSM?)Bjqh|LUY+vvH3-VP9K74{H@5urUm3PULc}fiLb)7!$v% z2$I?uyfsF4u^H4+0LQjV%rKYh<@AuUgOwYU=4?2qe9zY>VPV|lnReU%T5E9PM)8ev zG(AnVCv)S9H9-%D(l&^PggdL_9x~%S^Njb$zB=Uz?xdQdKB)kH{SViAq*v8Lb6Al~ z@`oM5nF5sXjPhz$&8Y=^AkmTGTVwx&lI$TqEVE#;P41yjGYBoqRBvQM$& z>(|Sh@7bTqfAoKK@L>^mwt#N~!NcPsTsHe+ z?Z~Qq(kzV!h&t&@93~&{I|~%cWT55fi_st}_K`QN_Vo8sbpB+1`)y+FmG-qeJ2w^* zCzYmE-meKQPbnq2RGfEjTHcg!Zu<`606}4K_qTw@00i79KY{KH$OsB>v-ooI*^$AZ zTzm_l$s|fRrBvi!ti0AvdNL=XA+sa6W5a3;29SJbv^1W{J!WZb-frA+4fCFk&Vqjb z5^CVUc6p)t#IqEuAoYgt*EDq{Co&j@lFxlUcTk9z~RE{d*4aiTd9XmyPECN)u(Cs_+lw znFFJDztNRm@CAzCsG!>S>m0L&&9ArOtC?;^&CDD5=kG=5hTSs}GZBn3-^^+L)9*cJ z&1XOJ%~PwEfI<}OBKL#Vq;v*6lHE|P!L_FqCiI<*+efJ=Z@H~zmwS3*Z4QUr?+1U| z`0GhHz*mm0C}nji1?0wOxAbYkCN>#kX7%i5>h4RAUC^Hh&Cg^FEE17X<8ROQ5UfW} zyrrM;<4ax;F@d^1mXu+j#!> z(b+ke7XQ9@t;Bz$Bu`gfu1}d};qQ1Qd*Pd2la%;`VYqWB z&%N3B{pRyK!A(Hoz4D_^@=koy`~dWquIq!X)5pOd*_U|0POu?CEJgN%B2&x3JHHoW zUT1bc=`!dL<-W%g!iLOhcr(6MuG}Dprn-1Q9V?Gb1g_RwPTAFT)4f)5WRg%*SmA1U zECmybN;|ckl2#=oYBhh_)2cIeZ$Olvec?HhFNF!e{draU zDxvBhkhW179QG~zP^l+j;{i3iWcJb*P{+*+$s@3pK$%H9yinOLasC(K9ud57lk^|` ze}+wK@l0yMyhQj32K}fgPt66Kll5<^oeCCc@F7M_U8}nv8rQtBT`D`RmBxZvX529MTeU+;BYY?{gQmrL)!Iuh3xq!xYwk7a+eI#2l4Cf6(Ko zodk&4Pxb{t=wR{^>-a@T)N8JjDuRYI#JIFY3MxHdeOo>@sWw;XfRrqb7nxWq=_`apx1@u5`SoAh>HQ$QwU}6QRa0!y zU?_Hy@bRjq?gTL`9dn=4D)i*?#Y&zj?t7^TcM1HPhO34iurF182p64LC(lYLsB6jE zSpl+aMigh}@MY{HB)^=Yea7%ECQ&wHSj5M8B*Sj6j)a^nHRv~A(6WB$$qzol{%%K# zQ>_{y99b`}qEMS#Cls79%>PI(k)PKM7M^?~r?!)4Q%>Oi!7twVM+_`Km-SoH`!3p_ zeFeSPZ72HRcPpAapOD)^&cgyekOK0@5LCe^j?X^cv4PDCN8`Wg-#bhPg<)+2ygZ8A*LU15j5b@*kv1d;sHQzJe? zVrrq5mGby!VQiE$-QA)|q_^oyM^_&$^A{L&8J?7lsdl_4Ib3Kv1kydnm6?OHXqc?k z0*+#^(!%faUd!907HJzDNbLkaX1T9kV=n&FWmqVRvqN|Zl~s$? zCFwczN!ezz1tWXks^JcFJxRV8KTdSJQFW_CkN+}kkZ0qFPvg7Uk;MJ?pvCO1IJNoR z07i7U93P7MVxg)SO25^1nP4q5Zd=UbLvgG;-WQx!Uai>Ym)5<*v?R|PH^;6K@2&;@ z6i&oD7wD&}Khlb=zx(L!^}$~%?(ivrR&nlIUxb?Z3xYjs9w$ZonMH_a!QeqdmjS9i zn;cz)ZU!qi|A&xc=kSiv7Hq2o{{T~%?oO^i-i^8|y(6;YU>9j^2DoW6$Ni)IWg0C1 zZtGg!STYDQ3nDd={qc%8!m$~^`lB+3`ntHDOCM+8=OOa z(msPLxCB%VL+7VLl2=|oEIPyY{m<+a%`<0NN6p#QWR@xn40*KU#WDcSfTi@L83vav zcSNm0L$D#ow52CWVI@EDn}Uyy3?LGiv$FWui{ku4rhgQClhE8cg>p$LfABMYo|$=> zhNC<;9qgqPwyzH)P{v}o_jpYXdCFI5dnpYUhi#)RQx@33`@Q9G<#tOrX4)P;LdOv%NYgvescj_iCkYpe=^XfH7DwH}LSy$m?&Cp8MDQnqikusp_f zwZa7i>&cA&^*&VwRqEoyES%Mh9Oj?X6OGM9jK=1g2y}!InF^eAxqmFOA-_uQw-w4XOjFre?;%a? zk=7NDEN>CRQQJsxS}k7=&bpU6B*#ygN)grcaEGB>q*r(4G~^3os$? zuGp7m5+`HJ^RMj=N&N*5rPzD?pOV4AziC_rY35p3dZLtUIdrNvgpnrU1E`c%%*QZjB0ysZ~B8 zr3snNNy;FCY<*PiazA01S9nwd`wY)bsr)0bpxNCyrhH(>z141=XEllU=?2igQ;A1a zV9v_3Sn&qbjhN9FGlqt=4gQ9!F4KMHVC{KH4pTNRw;HwL??&F0@-cW?*cHF%I_LZo z=XlvQHe;UwX2JEg45FsmNM3p@i#OyuX&*NLs}sZd)@d5rLTxIwurEQ7k_2`JdhMIy zajFfCy{~4-I#?ORu!tCOsEvdK9||wK$}@|eKM0DKkf{EZ_%0uLTG*S}4ukrh4_lpv z94v05_BA)!Ys#dMW}1k;Nq(i@*Yo}ko0ka#Zr=D|RHNlK!4k#GJsf33pyU4 zdu?tWl)oQLnAg&W9)|EW-Ve#IlqB%5J}k)2@IX^3J{Vf7E^Cm7S*XELI;Yy#gja=U zUNB#U_rF~5e8#NiI1{*52wYQpAIaWD5gomYlOh(AM1-kpv8YC8GMU-`H z+&Q{q79ystWCc({QIf?7ljE^v^kBBG^2(JDT72XWVKsy|104o@me=IKJ4Ee-PgGO} zJ@G;px!5vaLFQf?LL1+7-%^L#z*bOB2@AgiHx+;AG3}zTO=#H>BEe)(qxHyC(!szFE%2ijm@J^AYdeVk>v$tOm;TvU3&Zz;A4Dunh?@TE#=la- z*|R_O>3k2p4&*s9s^6bJ2i>yT9s`?_DAPaWKGeG9RvYvN@oj^1pL#-#Tga^F zia_}HQvX2$l$?`PVVML9c3D5bi^Z!Eg!@{B=?MTqaC$P%xFnWL>=dm_twyaM58X?C zxSS4h45(2O*!tJ&J+gfid?;Oq{4oj87{Edm4SW;I-CXy&q9+^m{`g48(-f0U2cTlA zsU9q_D>>djbLZa4X6TO4j_nUM+Kkj{>Z;(XV2N12Id{C#Ls1iBO4X~t1X=939*raC z#sHi!${m>A!l9yiwREGPnOhZk&+wkt^RZpg1xwlvrQ}uMl51ZnKHMEeK1O^7nGgSM zkU7WR_@MQ%qU^ZTgh#LTY-W8`$dJoX=vSOQ8}MRQ;-Hhbr=)cE{*J)aXNVGHRusdz zPUrfWjSf{;@EK!ViDj8S{8|8q-V)tws5G*ek+6(k0$SSP&C?;5D#P%5Rb9vfvNw@J zyS^;xeE-Jbkl){_eV_XrN%;$>`Fk8HjpmII>!03|+bZoU_xd5Yv-x1*T)E;SxZG4w zS_{fTyU7F!y@J;vld2HN(PcWe~^&MY7Oog?4{bF;#gK)*2tEnItOqnmUeG9VOIfwOw)g8_(FJ^ zWtx-5GVKQMG}&9|w7=*d>)Jkhuk9e}m(p+-zDE!2efS>{dabv;C60Ajw;bUs!TX`` zE-UmP{%tWk!UuyIO274h3*RWU#}0j|RL90JMpo*m)Qed^t{R6;YXYCl`ubnh{O(qz z;fO{Mf3^@r(Bx}8#j3^_b_=G>0ManLgb0$uX&?t*UO)4~#f#ox-MG{&hN~N{NQtbn zay?G7N&+#ZNSI!vr`t(cbPEWOa(Rj_alyHpmo6Neq!{3QjYsgeHK|wtMR+mnYxmHz ze^#T$vbu_^zZB12W54p8Lq&Gdsjm={O+PRR_NCfk{^?))3O=0l$Ku2c%VTSaX?Eqs zsL;|}Zq42q>(G0l>;Y7~V&5pWQI}HOUvXTC5J&yQ3(D@&gfA3}d_IYB)zR~YyFP(z zC+{Cjzi@=D)^@y@0Hdh^kT&g?KfETY^FXG=2ROXE%N3`QJ?2Uhjy1>)GtU`*je5BZ z%rsWchZ``JrM*@@fg5Ldjq8SnZXVAr#jl|7vrm%>`bknyghHIL`G~jFTjCw^CA}C~ z<)cz^AO`P7b){1T21`TMP`kRVO3_rLnc>W=GyCmQe64#frotr4r_QMgRp+A4{I!4M zNQhDO4H0BTT>G_(Yl2RO3Jxhej!+o9NrtO%kh}Ke%O7doMPGf6j2n zXC3zDCrF>^F=CugU_O&~nUY(P=A}itVwdIAzFnBm#ItM#O78p`xsN~b-C@jf8N32H z`Nl+<1#Q&n>`=zAI*&1IGOXs$!i5zs`o@*v?3V%x7<&PddmF0+;El_W#fik~dJO&o z-v7b`BS3^`!Li^Qy|QiAq`tJk@{}mXmEkP)L-khUb~THIfa~l{&PuRI;~M8wj;b_zp|kiVp9q9NmHK=ds@LjVXWd$xI8&$;Kr{Ry?^>y zA;o8HXb0ew79QdazHNc#lszbY)2E8{t-Q8UAbg27dJG zs^M<2cRB~b45==}mRDuXLHyIwI`jyq7400~T^hneAUmA41>#?>3^BX)(KI!21yreE z0gLrc_nhXf!2&4PJzBTJQ7F1rhB#pvVsKi)M%me5VK+3J`JL+m% z?~10{cJUdq0@0t-l@5%4^fh^_z!V@~GKyIU>^Xl_s#Kw)_rltzx6HSmYYWW4{uU91 zLDMolT{O3@F>E2Q9K>5eW>%H6t8r7a_=1g*6BVv<_8uZ35p}I$nFe=M3!wx&^KdTv;c6e3*IOu?H60^e; z_nh`(2CS{;1Bx97I&L`laC3QJ%fm6chGuMH-3b38sPAxjdgZd!+_k0n<9#Jp1-FuB zw?PEEb-uCNhz|!?*7)Uvvp$1vO75u2v;JtGde%)(;{#g58{d?CBf9N-^1W!Cvxo@M z!0&9tGi^XgDOwj;T<}Yq0m?nv@mdt|uj3;`H{uXg>7cRfxCs2k>+Yv3C~UNjrePfZ z#`)OA=cP0$s8i)({0HKSCKBx}W!L}f98LvkB@QBuW;^tRXhA#;#jm^Dym~d-21uR9 zHGQl9-Y(acfG0k>e8Pc6Zw|q3iWzQZlMZ5gf1REI@^8_)YTbxDREq(Y5@yUaOZdZ* za&-qhZTtp{ zRiGoCn0~phM1>yNO~r$C4N|hi+7t;+ZCj{TmqYH)U+3ALHZY6@di>evJrTgb6vTWl z>W{{Og+A$*I~DS|X0hn(_eXx1hT0Y3y>Uxk8>du|N*RAE%gbpo?9=%RlgkdSAI!kk}e@lC7^4vW4377$LJKgI2iP zMYX*1!DpA08=@bD^?axw2mKt}Pn=rUnz;>L#YPg6l?Q-9Wmsr#8`$AshG?eH(~)y< z`^qDH!EY9ycI*4`KaDQv>)r&z#rhKp7+M>2D?X3gxCt?^$jxN$zbP4uZn?U8sO|3K z{e7V4!&vrx-tG@q$K!piY4)fBj5KjVIRweGa}{>Oq@#za14q(dmKl|He~=jh=Q=`% zn_RjMo?Dg|T_fRp2n#kzvue@8KSRsvwIS;dr03Ap0_f6hsw9STU?ON~!R0_L#9Dul zm<9J@7vS(H&&=#K&+cj^gtS3=7nK7YpL2*}VA1F}jF`Sj&xi0%0EfbW_tkCQELFAd z?wdtq5aIF~kt^4#1uU)7X{}jwk|N;>e%Z3Gv~G3()I0(OMbUwfDdGvUkKh9~p@B8(-p4W4^u1c;`(*xlU(ihIlclF+vW1M4; zjg^zApi+>iJDxq@e~Wpitg}05qCDV*?ldj~J~@?*XtKMh@{88RJ-5vaCdvx`knFpn z8nQdHH@|FuJl0@@tjzgCQH@(ZmJSSp?J+Ah>gA?hvWB07 zmqq-gL>XdLZlKXWrQ&gUli?JDwjKj^Ru+*6tWFlO;*|L)LUW^sa=#&0fsYq+Y`ubf zEL&t(%jZTW@i%hUH-IOY^~p?v*c}?O#Y5Etp06Ja@T2ws@qF9bV1oiOhUIW4-oQ82 z&qOI6<_TyW`;9vj-qGZ6$`w+}wXL5UqD*@9C%SzB0Vp!iOnV!+TUCPadDDfJco0i0jy14jRBneawCaca~>NIscka3l9|?LiZt-u zV-%aL+P}4p5e~S3+5>|TO1DKkCFM{fnE~s>h}|`J_G>+{g@qwkPS#nusrExo1`c_@ z@({d~q&(peEze@mt-Q=vqgM__+%&rXIk)VKUZC}&`rAI zv`}u1vb(_c4ln#%l$M1H0m^zaLrz7(8C)p5Hn#6R? zC&TFi?MUSx8uK3>)|x8+t1%zwkXS}EM{_+UrHh%L{f1&G*YZ9M^#90?8CLEOZV7(e z`Qw@JvSMalCx=Tw*4Gt;h^-Y{3$^O?z5kFjekG11ajp2un;Vopjyf`IzoB34l3kG+ z-bCWQjg7+n0T8-hqulv>DSR`rz$`!X`?qqd0~IUil#y4ImoCWzB30l)AE{vce}`gNuY*@B^+ zgm+Kez*KF&rO$M&YPrB%l;hd6K*myq>WRx(gE04zmxg5;M5H}XW*@0O6UWROkym2K zk`4B`IO4^ zwmIC4#|^_@C=EVx*aw9|cAZV9s3pfng)!uOWj$sp<#EaW$d{4xb*qXabJzls%o^4$ zN`oTCW4o67k-`S|G{Pe)HhLN4`WxUK!g&kRQq(>gN5L zdZp85#2T*I7?e`lbuwjn#XA{ZRCZQ@Qco@Vv_(>{ z+cN+#7LYR9-S40(J+b|b?Ehx#pi1zg_(!9#OO^znb>ghq$9S;sB72NVHqa6)mP3^s zwY!Ox9Oa<$i3?YhdrxQlGk!t(gJEV#pV6GX3fj=aDWyCKfL+LFYlBKE3clG+#~4QHv&|DNAL?$p?)CNh3wBvS z+n|?O^DBD5po**1uyUKHtqPyXFtk@+Ug=UdQhk{U7Q&n~7?Ta(*2uGd3qM9IH2dyw zle@#`QdD(`j`Pk1%oV$ax%9{0#;$G~gu-Y0nVQY6pgNo6&`CBJpg2HCl39ro+W0}U zJJ~ory+^aVkvC)3=cc-7@=oVQ`K7aeMAFE*tdkC2EE&AU) zkl(>#fUKYD?>9wqO8+aSJabt>$0=y!XyayH+EXLwO51GY2!{ufK5PCs4<`nv*H_xa zjq%A8<~Lv88iI}Y77cs7*T7+6U;lCY9K~i~RdWCt*HXnH_qPO<&V&V5^SNQ~JFkbqy55o?eAYV; zLl!mymYVV5eR1x?q}eDqJ0ItJ2bP7TQc5lbY(!vGWHI?x&qaMPEPrfq#V_$?>w`a! zh7uDe&Pc)Qs+RJVz2soigP|>=V;CGBTs5^FFckl+m+RQL4!!T={DT0suQ!PWSs+(g zT~jC6rev~j9VdE(Z?B=)_QBbZfR*gb#Xkrb6=cixqUl{+L*@)*3Z|L4_DQy~1P2v) zx*Z=VXPJ8e+&Y=p5|~QQ@sm91OJNHD5&PySksPC&n{oZytLP9tJ$dPIuu%PKluuz# zK-YQi5oIkx;gD?7jilM;Z9iqM@b|v;t{N+i%QD#a!Rff-pg}uGA-`~_bs};F^AgH8 z3Y)^VWIiRevS&+(XXA3w%%h?)Da_-KVvaeCiv-4mLPWtnV+X$29jKpf4d}%ccjpS^ zQ9%V;e0{!$5_LB%nfV~a{3i0quQ!pfou5qy0%!7iaHUsq7hIa6*)$jv~JX zS^I56mpIm}PgNcQ9;l>=9#|MQSl5zDQR9UH5H|p5$%0D2_=LdHI&)fbNK+xRzs~na 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 z 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

o~{d^oLfKGQ}@M(fAwtvpo4f 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 z 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%0DLTX15G^a1w`s9QTl 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%0D?xH%iZ&rh=H^RA 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

=kEyeKWkA72VU$TkQr*c$>WB^|>Q4=UzS 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

e^WoZ>@Ba(xf7Wt84IUH+DEO1 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 literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/LuYao.Toolkit.csproj b/LuYao.Toolkit/LuYao.Toolkit.csproj new file mode 100644 index 0000000..e0085de --- /dev/null +++ b/LuYao.Toolkit/LuYao.Toolkit.csproj @@ -0,0 +1,107 @@ + + + + + WinExe + net7.0-windows + true + latest + App.ico + + + + + libs + + + System.Data.SQLite.dll;SQLite.Interop.dll + + + + False + + + False + False + + + False + + Error + + https://gitee.com/liesauer/HostFXRPatcher + master + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\libs\AxInterop.MSTSCLib.dll + + + ..\libs\Interop.MSTSCLib.dll + + + ..\libs\LuYao.Common.dll + + + + + + + + + + + + + + Always + + + + + + + + + Designer + + + Designer + + + diff --git a/LuYao.Toolkit/LuYao.Toolkit.csproj.user b/LuYao.Toolkit/LuYao.Toolkit.csproj.user new file mode 100644 index 0000000..4ca6ea1 --- /dev/null +++ b/LuYao.Toolkit/LuYao.Toolkit.csproj.user @@ -0,0 +1,344 @@ + + + + <_LastSelectedProfileId>D:\src\coderbusy\luyao\src\toolkit\LuYao.Toolkit\Properties\PublishProfiles\FolderProfile.pubxml + net462 + + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + UserControl + + + Code + + + Code + + + Code + + + Code + + + Code + + + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + \ No newline at end of file diff --git a/LuYao.Toolkit/LuYaoCommands.cs b/LuYao.Toolkit/LuYaoCommands.cs new file mode 100644 index 0000000..49a3f77 --- /dev/null +++ b/LuYao.Toolkit/LuYaoCommands.cs @@ -0,0 +1,12 @@ +using System.Windows.Input; + +namespace LuYao.Toolkit; + +public static class LuYaoCommands +{ + static LuYaoCommands() + { + CloseDetailCommand = new RoutedCommand(nameof(CloseDetailCommand), typeof(LuYaoCommands)); + } + public static RoutedCommand CloseDetailCommand { get; private set; } +} diff --git a/LuYao.Toolkit/MainWindow.xaml b/LuYao.Toolkit/MainWindow.xaml new file mode 100644 index 0000000..812a6d1 --- /dev/null +++ b/LuYao.Toolkit/MainWindow.xaml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/MainWindow.xaml.cs b/LuYao.Toolkit/MainWindow.xaml.cs new file mode 100644 index 0000000..380c595 --- /dev/null +++ b/LuYao.Toolkit/MainWindow.xaml.cs @@ -0,0 +1,199 @@ +using HandyControl.Controls; +using HandyControl.Data; +using HandyControl.Tools; +using LuYao.IO.Updating; +using LuYao.Toolkit.Behaviors; +using LuYao.Toolkit.Events; +using LuYao.Toolkit.IO; +using LuYao.Toolkit.Rdm.Events; +using LuYao.Toolkit.Themes; +using LuYao.Toolkit.Update; +using LuYao.Toolkit.Views; +using NewLife.Configuration; +using NewLife.Reflection; +using Prism.Events; +using Prism.Regions; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO.Packaging; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Forms; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : ViewStates.IViewStateHost + { + private IEventAggregator _eventAggregator; + private IRegionManager _regionManager; + private IDialogService _dialogService; + public MainWindow(IEventAggregator eventAggregator, IRegionManager regionManager, IDialogService dialogService) + { + _eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); + _regionManager = regionManager ?? throw new ArgumentNullException(nameof(regionManager)); + this._dialogService = dialogService ?? throw new ArgumentNullException(nameof(dialogService)); + InitializeComponent(); + _size = new Size(this.MinWidth, this.MinHeight); + this.ViewSate = new ViewStates.ViewStateBag(this); + _eventAggregator.GetEvent().Subscribe(OnOpenTab); + _eventAggregator.GetEvent().Subscribe(OnOpenFunctionItem); + _eventAggregator.GetEvent().Subscribe(this.OnRdmOpenRdpConnection); + _eventAggregator.GetEvent().Subscribe(OnPreviewFileAsStringEvent); + _eventAggregator.GetEvent().Subscribe(this.OnThemeChanged); + this.Width = _size.Width; + this.Height = _size.Height; + this.EnsureFormFits(); + this.SizeChanged += MainWindow_SizeChanged; + this.Closed += MainWindow_Closed; + this.Loaded += MainWindow_Loaded; + + var cfg = ToolkitConfig.Current; + var themeManager = ThemeManager.Current; + if (cfg.Theme != themeManager.Theme) themeManager.Theme = cfg.Theme; + if (cfg.CheckForUpdatesOnStartup) this.CheckUpdate(); + } + + private void OnThemeChanged(ThemeMode theme) + { + ThemeManager.Current.Theme = theme; + } + + private void MainWindow_Loaded(object sender, RoutedEventArgs e) + { + var ass = AssemblyX.Create(Assembly.GetExecutingAssembly()); + this.Title = $"路遥工具箱 v{ass.Version}"; + TempHelper.ClearTemp(); + } + + private void OnPreviewFileAsStringEvent(PreviewFileAsStringEventPayload payload) + { + _dialogService.Show(nameof(Dialogs.PreviewFileAsStringDialog), new DialogParameters { { "Payload", payload } }, result => { }); + } + + private void MainWindow_Closed(object sender, EventArgs e) + { + System.Windows.Application.Current.Shutdown(); + } + + private void EnsureFormFits() + { + var workingArea = Screen.FromHandle(this.GetHandle()).WorkingArea; + if (base.Width > workingArea.Width * 0.8) + { + base.Width = workingArea.Width * 0.8; + } + if (base.Height > workingArea.Height * 0.8) + { + base.Height = workingArea.Height * 0.8; + } + + if (this.Left < 0) this.Left = 0; + if (this.Top < 0) this.Top = 0; + } + + [ViewStates.WatchViewState(nameof(WindowSize))] + private Size _size; + public Size WindowSize + { + get => _size; + set + { + if (_size != value) + { + _size = value; + this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(WindowSize))); + } + } + } + private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e) + { + this.WindowSize = e.NewSize; + } + + public ViewStates.ViewStateBag ViewSate { get; } + public int InstanceId => 1; + + public event PropertyChangedEventHandler PropertyChanged; + + private void OnOpenFunctionItem(OpenFunctionItemEventPayload payload) + { + var item = payload.Item; + Services.TongjiService.Tongji(item.View); + if (payload.IsNewSession) + { + _regionManager.RequestNavigate(Regions.RegionNames.MainRegion, ViewNames.Tabs.Session.Index, (r) => + { + if (r.Result == true) _regionManager.RequestNavigate(Regions.RegionNames.WorkingRegion, item.View); + }); + } + } + + private void OnOpenTab(Tabs.Tab tab) + { + _regionManager.RequestNavigate(Regions.RegionNames.MainRegion, tab.View); + } + private void OnRdmOpenRdpConnection(OpenRdpConnectionEventPayload args) + { + var id = args.Id; + _regionManager.RequestNavigate(Regions.RegionNames.MainRegion, ViewNames.Tabs.Rdp.Index, (r) => + { + if (r.Result == true) Tabs.Rdp.Index.Open(id); + }); + } + private async void CheckUpdate() + { + await Task.Delay(TimeSpan.FromSeconds(3)); + var config = UpdateConfig.Current; + if (config.NextCheckUpdate <= DateTime.Now) + { + var package = await config.GetLastVersion(); + var root = AppDomain.CurrentDomain.BaseDirectory; + if (!await package.HasUpdate(Assembly.GetExecutingAssembly(), root)) + { + return; + } + _dialogService.Show(nameof(Update.FindNewVersionDialog), new DialogParameters { { nameof(UpdatePackage), package } }, result => + { + if (result.Result == ButtonResult.Ignore) + { + config.ResetNextCheckTime(); + config.Save(); + } + else if (result.Result == ButtonResult.Yes) + { + Notification.Show(new Update.Update(package), ShowAnimation.None, true); + } + }); + } + } + + private void Settings_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + e.Handled = true; + _dialogService.ShowDialog(nameof(Dialogs.ToolkitSettingsDialog)); + } + + private void SettingsButton_Click(object sender, RoutedEventArgs e) + { + + e.Handled = true; + _dialogService.ShowDialog(nameof(Dialogs.ToolkitSettingsDialog)); + } + } +} diff --git a/LuYao.Toolkit/ProcessManager.cs b/LuYao.Toolkit/ProcessManager.cs new file mode 100644 index 0000000..6cb92b5 --- /dev/null +++ b/LuYao.Toolkit/ProcessManager.cs @@ -0,0 +1,79 @@ +using System; +using System.Diagnostics; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading; + +namespace LuYao.Toolkit; + +internal static class ProcessManager +{ + private static Mutex ProcessLock; + private static bool HasLock; + + /// + /// 获取进程锁 + /// + public static void GetProcessLock() + { + // 全局锁 + ProcessLock = new Mutex(false, $"Global\\LuYao.Toolkit[{GetUid()}]", out HasLock); + + if (!HasLock) + { + ActiveWindow(); + Environment.Exit(0); + } + } + + private static string GetUid() + { + var bytes = Encoding.UTF8.GetBytes(Assembly.GetExecutingAssembly().Location); + using (var md5 = MD5.Create()) + { + bytes = md5.ComputeHash(bytes); + } + return BitConverter.ToString(bytes); + } + + /// + /// 激活当前进程并将其窗口放到屏幕最前面 + /// + public static void ActiveWindow() + { + using (var p = Process.GetCurrentProcess()) + { + string pName = p.ProcessName; + Process[] temp = Process.GetProcessesByName(pName); + foreach (var item in temp) + { + if (item.MainModule.FileName == p.MainModule.FileName) + { + IntPtr handle = item.MainWindowHandle; + SwitchToThisWindow(handle, true); + break; + } + } + } + } + + /// + /// 释放当前进程的锁 + /// + /// 小心使用 + public static void ReleaseLock() + { + if (ProcessLock != null && HasLock) + { + ProcessLock.Dispose(); + HasLock = false; + } + } + + // 将另一个窗口激活放到前台。 + // Win32 API + [DllImport("user32.dll")] + public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab); +} diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml b/LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml new file mode 100644 index 0000000..011ac95 --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml.cs b/LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml.cs new file mode 100644 index 0000000..ec8a1af --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdmSettingDialog.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Rdm.Dialogs +{ + /// + /// RdmSettingDialog.xaml 的交互逻辑 + /// + public partial class RdmSettingDialog : UserControl + { + public RdmSettingDialog() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdmSettingViewModel.cs b/LuYao.Toolkit/Rdm/Dialogs/RdmSettingViewModel.cs new file mode 100644 index 0000000..7efacf4 --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdmSettingViewModel.cs @@ -0,0 +1,147 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using FluentValidation; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using XCode; + +namespace LuYao.Toolkit.Rdm.Dialogs; + +public partial class RdmSettingViewModel : ViewModelBase, IDialogAware +{ + private readonly IDialogService _dialogService; + + public RdmSettingViewModel(IDialogService dialogService) + { + _dialogService = dialogService ?? throw new ArgumentNullException(nameof(dialogService)); + } + + public string Title => "远程桌面设置"; + + + public event Action RequestClose; + + public bool CanCloseDialog() + { + return true; + } + + public void OnDialogClosed() + { + } + + public void OnDialogOpened(IDialogParameters parameters) + { + LoadGroups(); + } + + [ObservableProperty] + private List _groups = new List(); + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(EditGroupCommand))] + [NotifyCanExecuteChangedFor(nameof(DeleteGroupCommand))] + [NotifyCanExecuteChangedFor(nameof(UpGroupCommand))] + [NotifyCanExecuteChangedFor(nameof(DownGroupCommand))] + private RdpGroup _currentGroup = null; + + private void LoadGroups() + { + var groups = Entities.RdpGroup.GetAllGroups(); + var list = new List(groups.Count); + foreach (var g in groups) + { + list.Add(new RdpGroup(g)); + } + this.Groups = list; + } + [RelayCommand] + private void AddGroup() + { + _dialogService.ShowDialog(nameof(RdpGroupDetailDialog), (r) => + { + if (r.Result == ButtonResult.OK) + { + this.LoadGroups(); + } + }); + } + + private bool CanEdit() => this.CurrentGroup != null; + [RelayCommand(CanExecute = nameof(CanEdit))] + private void EditGroup() + { + var p = new DialogParameters(); + p.Add("id", this.CurrentGroup.Id); + _dialogService.ShowDialog(nameof(RdpGroupDetailDialog), p, (r) => + { + if (r.Result == ButtonResult.OK) + { + this.LoadGroups(); + } + }); + } + + private bool CanDelete() => this.CurrentGroup != null; + [RelayCommand(CanExecute = nameof(CanDelete))] + private void DeleteGroup() + { + if (this.CurrentGroup == null) return; + if (Services.MessageBoxService.Confirm("是否确认删除此分组?") == false) return; + var e = Entities.RdpGroup.FindById(this.CurrentGroup.Id); + if (e != null) e.Delete(); + this.LoadGroups(); + } + + private bool CanUp() + { + if (this.CurrentGroup == null) return false; + var id = this.CurrentGroup.Id; + var all = Entities.RdpGroup.GetAllGroups(); + if (all.Count > 0 && all[0].Id != id) return true; + return false; + } + [RelayCommand(CanExecute = nameof(CanUp))] + private void UpGroup() + { + var all = Entities.RdpGroup.GetAllGroups(); + for (int i = 0; i < all.Count; i++) + { + all[i].Rank = i * 2; + if (all[i].Id == this.CurrentGroup.Id) + { + all[i].Rank -= 3; + } + } + all.Save(); + LoadGroups(); + } + + private bool CanDown() + { + if (this.CurrentGroup == null) return false; + var id = this.CurrentGroup.Id; + var all = Entities.RdpGroup.GetAllGroups(); + if (all.Count > 0 && all[all.Count - 1].Id != id) return true; + return false; + } + [RelayCommand(CanExecute = nameof(CanDown))] + private void DownGroup() + { + var all = Entities.RdpGroup.GetAllGroups(); + for (int i = 0; i < all.Count; i++) + { + all[i].Rank = i * 2; + if (all[i].Id == this.CurrentGroup.Id) + { + all[i].Rank += 3; + } + } + all.Save(); + LoadGroups(); + } +} diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml b/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml new file mode 100644 index 0000000..ca0345e --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml.cs b/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml.cs new file mode 100644 index 0000000..7224d3c --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailDialog.xaml.cs @@ -0,0 +1,66 @@ +using LuYao.Toolkit.Helpers; +using LuYao.Toolkit.Rdm; +using NewLife; +using System; +using System.Windows; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Rdm.Dialogs +{ + /// + /// RdoConnectionDetail.xaml 的交互逻辑 + /// + public partial class RdpConnectionDetailDialog : UserControl + { + public RdpConnectionDetailDialog() + { + InitializeComponent(); + ComboBoxHelper.BindEnum(DesktopSizeComboBox); + ComboBoxHelper.BindEnum(ColorDepthComboBox); + ComboBoxHelper.BindEnum(AudioRedirectionComboBox); + ComboBoxHelper.BindEnum(KeyboardRedirectionComboBox); + ComboBoxHelper.BindEnum(AuthenticationLevelComboBox); + DesktopSizeComboBox.SelectionChanged += DesktopSizeComboBox_SelectionChanged; + NameTextBox.LostFocus += NameTextBox_OnLostFocus; + } + + private void DesktopSizeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (e.AddedItems != null && e.AddedItems.Count > 0) + { + var current = (DesktopSize)(e.AddedItems[0] as dynamic).Value; + if (current == DesktopSize.Custom) + { + WidthNumericUpDown.IsEnabled = true; + HeightNumericUpDown.IsEnabled = true; + } + else + { + WidthNumericUpDown.IsEnabled = false; + HeightNumericUpDown.IsEnabled = false; + var arr = current.GetDescription() + .Split(new[] { 'x' }, StringSplitOptions.RemoveEmptyEntries); + WidthNumericUpDown.Value = Convert.ToInt32(arr[0]); + HeightNumericUpDown.Value = Convert.ToInt32(arr[1]); + } + } + } + private void NameTextBox_OnLostFocus(object sender, RoutedEventArgs e) + { + if (string.IsNullOrWhiteSpace(this.NameTextBox.Text)) return; + if (!string.IsNullOrWhiteSpace(this.HostTextBox.Text)) return; + var host = this.NameTextBox.Text.Replace(':', ':').Trim(); + if (host.Contains(":")) + { + var arr = host.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries); + if (arr.Length == 2 && int.TryParse(arr[1], out var port) && port > 0 && port < 65535) + { + host = arr[0]; + this.PortNumericUpDown.Value = port; + } + } + + this.HostTextBox.Text = host; + } + } +} diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailViewModel.cs b/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailViewModel.cs new file mode 100644 index 0000000..a8e13f4 --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdpConnectionDetailViewModel.cs @@ -0,0 +1,122 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using FluentValidation; +using LuYao.Toolkit.Rdm; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using XCode; + +namespace LuYao.Toolkit.Rdm.Dialogs; + +public partial class RdpConnectionDetailViewModel : ViewModelBase, IDialogAware +{ + + public RdpConnectionDetailViewModel() + { + } + public string Title { get; private set; } + + [ObservableProperty] + private IList _groups; + + private RdpConnection _connection; + + public RdpConnection Connection + { + get => _connection; + set => SetProperty(ref _connection, value); + } + + public event Action RequestClose; + + [RelayCommand] + void Save() + { + RdpConnectionValidator.Instance.ValidateAndThrow(this.Connection); + if (this.Connection.Id == Guid.Empty) + { + var e = new Entities.RdpConnection + { + CreatedAt = DateTime.Now, + UpdatedAt = DateTime.Now, + Id = Guid.NewGuid(), + }; + this.Connection.Write(e); + e.Save(); + } + else + { + var e = Entities.RdpConnection.FindById(this.Connection.Id); + if (e == null) throw new Exception("数据未找到"); + e.UpdatedAt = DateTime.Now; + + this.Connection.Write(e); + + e.Save(); + } + this.RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); + } + [RelayCommand] + void Cancel() + { + this.RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); + } + + public bool CanCloseDialog() + { + return true; + } + + public void OnDialogClosed() + { + } + + public void OnDialogOpened(IDialogParameters parameters) + { + //act=add : 不去数据库查询数据,标题设置成 新建 + //act=edit : 去数据库查一查数据,标题设置成 编辑 + if (parameters.TryGetValue("act", out var act)) + { + switch (act) + { + case "add": + this.Title = "添加远程桌面"; + this.Connection = new RdpConnection + { + Port = 3389, + DesktopSize = DesktopSize.X1024Y768, + AutoExpand = true, + ColorDepth = ColorDepth.Depth16Bit, + AudioSetting = AudioRedirection.PlayNoSound, + KeyboardSetting = KeyboardRedirection.OnLocal, + BitmapCaching = true, + AuthenticationLevel = AuthenticationLevel.Connect, + EnableCredSspSupport = true, + Username = "administrator" + }; + break; + case "edit": + this.Title = "编辑远程桌面"; + if (!parameters.TryGetValue("id", out var id)) throw new Exception("id 未找到"); + var e = Entities.RdpConnection.FindById(id); + if (e == null) throw new Exception("数据未找到"); + this.Connection = new RdpConnection(e); + var g = Entities.RdpGroup.FindById(e.GroupId); + if (g == null) this.Connection.GroupId = Guid.Empty; + break; + default: + throw new Exception($"未知的 action:{act}"); + } + } + var items = new List { RdpGroup.None }; + foreach (var item in Entities.RdpGroup.GetAllGroups()) + { + items.Add(new RdpGroup(item)); + } + this.Groups = items; + } +} diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml b/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml new file mode 100644 index 0000000..2701cab --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml.cs b/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml.cs new file mode 100644 index 0000000..6030e0e --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailDialog.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Rdm.Dialogs +{ + /// + /// RdpGroupDetailDialog.xaml 的交互逻辑 + /// + public partial class RdpGroupDetailDialog : UserControl + { + public RdpGroupDetailDialog() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailViewModel.cs b/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailViewModel.cs new file mode 100644 index 0000000..c2274b8 --- /dev/null +++ b/LuYao.Toolkit/Rdm/Dialogs/RdpGroupDetailViewModel.cs @@ -0,0 +1,85 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using FluentValidation; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Rdm.Dialogs; + +public partial class RdpGroupDetailViewModel : ViewModelBase, IDialogAware +{ + [ObservableProperty] + private string _action = "添加"; + + [ObservableProperty] + private RdpGroup _group = new RdpGroup { }; + public string Title => $"{this.Action}分组"; + + public event Action RequestClose; + + public bool CanCloseDialog() + { + return true; + } + + public void OnDialogClosed() + { + } + + public void OnDialogOpened(IDialogParameters parameters) + { + if (parameters.TryGetValue("id", out var id)) + { + var e = Entities.RdpGroup.FindById(id); + if (e == null) + { + Close(); + return; + } + this.Group = new RdpGroup(e); + this.Action = "编辑"; + } + else + { + this.Action = "添加"; + this.Group = new RdpGroup { }; + } + } + + [RelayCommand] + private void Close() + { + this.RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); + } + + [RelayCommand] + private void Save() + { + RdpGroupValidator.Instance.ValidateAndThrow(this.Group); + Entities.RdpGroup group; + if (this.Group.Id != Guid.Empty) + { + group = Entities.RdpGroup.FindById(this.Group.Id); + } + else + { + group = new Entities.RdpGroup { CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now }; + } + group.Name = this.Group.Name; + group.UpdatedAt = DateTime.Now; + if (group.Id == Guid.Empty) + { + group.Id = Guid.NewGuid(); + group.Insert(); + } + else + { + group.Update(); + } + this.RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); + } +} diff --git a/LuYao.Toolkit/Rdm/IMsRdpClient.cs b/LuYao.Toolkit/Rdm/IMsRdpClient.cs new file mode 100644 index 0000000..169e503 --- /dev/null +++ b/LuYao.Toolkit/Rdm/IMsRdpClient.cs @@ -0,0 +1,18 @@ +using MSTSCLib; +using System; +using System.ComponentModel; +using System.Windows.Forms; + +namespace LuYao.Toolkit.Rdm; + +public interface IMsRdpClient : IDisposable, ISupportInitialize +{ + void Update(IRdpConnection connection); + Control Control { get; } + void Attach(IMsRdpClientHandler handler); + void Detach(IMsRdpClientHandler handler); + void Connect(); + void Disconnect(); + string GetErrorDescription(uint disconnectReason, uint extendedDisconnectReason); + ExtendedDisconnectReasonCode ExtendedDisconnectReason { get; } +} diff --git a/LuYao.Toolkit/Rdm/IMsRdpClientHandler.cs b/LuYao.Toolkit/Rdm/IMsRdpClientHandler.cs new file mode 100644 index 0000000..6489820 --- /dev/null +++ b/LuYao.Toolkit/Rdm/IMsRdpClientHandler.cs @@ -0,0 +1,15 @@ +using AxMSTSCLib; +using System; + +namespace LuYao.Toolkit.Rdm; + +public interface IMsRdpClientHandler +{ + void OnConnecting(object sender, EventArgs e); + + void OnLoginComplete(object sender, EventArgs e); + + void OnDisconnected(object sender, IMsTscAxEvents_OnDisconnectedEvent e); + + void OnConnected(object sender, EventArgs e); +} diff --git a/LuYao.Toolkit/Rdm/MsRdpClientFactory.cs b/LuYao.Toolkit/Rdm/MsRdpClientFactory.cs new file mode 100644 index 0000000..aaadf1b --- /dev/null +++ b/LuYao.Toolkit/Rdm/MsRdpClientFactory.cs @@ -0,0 +1,418 @@ +using AxMSTSCLib; +using System; +using System.Windows.Forms; + +namespace LuYao.Toolkit.Rdm; +public static class MsRdpClientFactory +{ + private class MsRdpClient5 : AxMsRdpClient5, IMsRdpClient + { + public MsRdpClient5() + { + Name = nameof(MsRdpClient5); + } + public Control Control => this; + + public void Attach(IMsRdpClientHandler handler) + { + OnConnected += handler.OnConnected; + OnDisconnected += handler.OnDisconnected; + OnLoginComplete += handler.OnLoginComplete; + OnConnecting += handler.OnConnecting; + } + + public void Detach(IMsRdpClientHandler handler) + { + OnConnected -= handler.OnConnected; + OnDisconnected -= handler.OnDisconnected; + OnLoginComplete -= handler.OnLoginComplete; + OnConnecting -= handler.OnConnecting; + } + + public void Update(IRdpConnection desktop) + { + AdvancedSettings6.BitmapPersistence = Convert.ToInt32(desktop.BitmapCaching); + ColorDepth = (int)desktop.ColorDepth; + FullScreenTitle = desktop.Name + " - " + desktop.Host; + AdvancedSettings6.ConnectToServerConsole = desktop.ConnectToConsole; + Server = desktop.Host.Trim(); + + if (!string.IsNullOrWhiteSpace(desktop.Username)) + { + UserName = desktop.Username.Trim(); + if (!string.IsNullOrWhiteSpace(desktop.Password)) + { + AdvancedSettings6.ClearTextPassword = desktop.Password; + } + } + if (!string.IsNullOrWhiteSpace(desktop.Domain)) Domain = desktop.Domain.Trim(); + + AdvancedSettings6.RDPPort = desktop.Port; + SecuredSettings2.AudioRedirectionMode = Convert.ToInt32(desktop.AudioSetting); + SecuredSettings2.KeyboardHookMode = Convert.ToInt32(desktop.KeyboardSetting); + AdvancedSettings6.RedirectDrives = desktop.RedirectDisks; + AdvancedSettings6.RedirectPorts = desktop.RedirectPorts; + AdvancedSettings6.RedirectPrinters = desktop.RedirectPrinters; + AdvancedSettings6.RedirectSmartCards = desktop.RedirectSmartCards; + AdvancedSettings6.SmartSizing = desktop.SmartSizing; + AdvancedSettings6.allowBackgroundInput = 1; + AdvancedSettings6.PinConnectionBar = true; + AdvancedSettings6.DisplayConnectionBar = true; + AdvancedSettings6.ContainerHandledFullScreen = 0; + ConnectingText = "Connecting to " + desktop.Name + "..."; + DisconnectedText = "Disconnected from " + desktop.Name; + int num = 0; + if (!desktop.AllowWallpaper) + { + num++; + } + if (!desktop.AllowContents) + { + num += 2; + } + if (!desktop.AllowAnimation) + { + num += 4; + } + if (!desktop.AllowThemes) + { + num += 8; + } + AdvancedSettings6.PerformanceFlags = num; + AdvancedSettings6.AuthenticationLevel = (uint)desktop.AuthenticationLevel; + if (!desktop.AutoExpand) + { + DesktopHeight = desktop.DisplayHeight; + DesktopWidth = desktop.DisplayWidth; + } + else + { + DesktopHeight = Height; + DesktopWidth = Width; + } + } + + protected override void WndProc(ref Message m) + { + // Fix for the missing focus issue on the rdp client component + if (m.Msg == 0x0021) // WM_MOUSEACTIVATE + { + if (!ContainsFocus) + { + Focus(); + } + } + + base.WndProc(ref m); + } + } + private class MsRdpClient6 : AxMsRdpClient6, IMsRdpClient + { + public Control Control => this; + public void Attach(IMsRdpClientHandler handler) + { + OnConnected += handler.OnConnected; + OnDisconnected += handler.OnDisconnected; + OnLoginComplete += handler.OnLoginComplete; + OnConnecting += handler.OnConnecting; + } + + public void Detach(IMsRdpClientHandler handler) + { + OnConnected -= handler.OnConnected; + OnDisconnected -= handler.OnDisconnected; + OnLoginComplete -= handler.OnLoginComplete; + OnConnecting -= handler.OnConnecting; + } + + public void Update(IRdpConnection connection) + { + + AdvancedSettings7.BitmapPersistence = Convert.ToInt32(connection.BitmapCaching); + ColorDepth = (int)connection.ColorDepth; + FullScreenTitle = connection.Name + " - " + connection.Host; + AdvancedSettings7.ConnectToServerConsole = connection.ConnectToConsole; + AdvancedSettings7.ConnectToAdministerServer = connection.ConnectToConsole; + Server = connection.Host.Trim(); + + if (!string.IsNullOrWhiteSpace(connection.Username)) + { + UserName = connection.Username.Trim(); + if (!string.IsNullOrWhiteSpace(connection.Password)) + { + AdvancedSettings6.ClearTextPassword = connection.Password; + } + } + if (!string.IsNullOrWhiteSpace(connection.Domain)) Domain = connection.Domain.Trim(); + + AdvancedSettings7.RDPPort = connection.Port; + SecuredSettings2.AudioRedirectionMode = Convert.ToInt32(connection.AudioSetting); + SecuredSettings2.KeyboardHookMode = Convert.ToInt32(connection.KeyboardSetting); + AdvancedSettings7.RedirectDrives = connection.RedirectDisks; + AdvancedSettings7.RedirectPorts = connection.RedirectPorts; + AdvancedSettings7.RedirectPrinters = connection.RedirectPrinters; + AdvancedSettings7.RedirectSmartCards = connection.RedirectSmartCards; + AdvancedSettings7.SmartSizing = connection.SmartSizing; + AdvancedSettings7.allowBackgroundInput = 1; + AdvancedSettings7.PinConnectionBar = true; + AdvancedSettings7.DisplayConnectionBar = true; + AdvancedSettings7.ContainerHandledFullScreen = 0; + ConnectingText = "Connecting to " + connection.Name + "..."; + DisconnectedText = "Disconnected from " + connection.Name; + int num = 0; + if (!connection.AllowWallpaper) + { + num++; + } + if (!connection.AllowContents) + { + num += 2; + } + if (!connection.AllowAnimation) + { + num += 4; + } + if (!connection.AllowThemes) + { + num += 8; + } + AdvancedSettings7.PerformanceFlags = num; + AdvancedSettings7.AuthenticationLevel = (uint)connection.AuthenticationLevel; + AdvancedSettings7.EnableCredSspSupport = connection.EnableCredSspSupport; + if (!connection.AutoExpand) + { + DesktopHeight = connection.DisplayHeight; + DesktopWidth = connection.DisplayWidth; + } + else + { + DesktopHeight = Height; + DesktopWidth = Width; + } + } + + protected override void WndProc(ref Message m) + { + // Fix for the missing focus issue on the rdp client component + if (m.Msg == 0x0021) // WM_MOUSEACTIVATE + { + if (!ContainsFocus) + { + Focus(); + } + } + + base.WndProc(ref m); + } + } + private class MsRdpClient7 : AxMsRdpClient7, IMsRdpClient + { + public Control Control => this; + public void Attach(IMsRdpClientHandler handler) + { + OnConnected += handler.OnConnected; + OnDisconnected += handler.OnDisconnected; + OnLoginComplete += handler.OnLoginComplete; + OnConnecting += handler.OnConnecting; + } + + public void Detach(IMsRdpClientHandler handler) + { + OnConnected -= handler.OnConnected; + OnDisconnected -= handler.OnDisconnected; + OnLoginComplete -= handler.OnLoginComplete; + OnConnecting -= handler.OnConnecting; + } + + public void Update(IRdpConnection desktop) + { + AdvancedSettings8.BitmapPersistence = Convert.ToInt32(desktop.BitmapCaching); + ColorDepth = (int)desktop.ColorDepth; + FullScreenTitle = desktop.Name + " - " + desktop.Host; + AdvancedSettings8.ConnectToServerConsole = desktop.ConnectToConsole; + AdvancedSettings8.ConnectToAdministerServer = desktop.ConnectToConsole; + Server = desktop.Host.Trim(); + + if (!string.IsNullOrWhiteSpace(desktop.Username)) + { + UserName = desktop.Username.Trim(); + if (!string.IsNullOrWhiteSpace(desktop.Password)) + { + AdvancedSettings6.ClearTextPassword = desktop.Password; + } + } + if (!string.IsNullOrWhiteSpace(desktop.Domain)) Domain = desktop.Domain.Trim(); + + AdvancedSettings8.RDPPort = desktop.Port; + SecuredSettings3.AudioRedirectionMode = Convert.ToInt32(desktop.AudioSetting); + SecuredSettings3.KeyboardHookMode = Convert.ToInt32(desktop.KeyboardSetting); + AdvancedSettings8.RedirectDrives = desktop.RedirectDisks; + AdvancedSettings8.RedirectPorts = desktop.RedirectPorts; + AdvancedSettings8.RedirectPrinters = desktop.RedirectPrinters; + AdvancedSettings8.RedirectSmartCards = desktop.RedirectSmartCards; + AdvancedSettings8.SmartSizing = desktop.SmartSizing; + AdvancedSettings8.allowBackgroundInput = 1; + AdvancedSettings8.PinConnectionBar = true; + AdvancedSettings8.DisplayConnectionBar = true; + AdvancedSettings8.ContainerHandledFullScreen = 1; + ConnectingText = "Connecting to " + desktop.Name + "..."; + DisconnectedText = "Disconnected from " + desktop.Name; + int num = 0; + if (!desktop.AllowWallpaper) + { + num++; + } + if (!desktop.AllowContents) + { + num += 2; + } + if (!desktop.AllowAnimation) + { + num += 4; + } + if (!desktop.AllowThemes) + { + num += 8; + } + AdvancedSettings8.PerformanceFlags = num; + AdvancedSettings8.AuthenticationLevel = (uint)desktop.AuthenticationLevel; + AdvancedSettings8.EnableCredSspSupport = desktop.EnableCredSspSupport; + + if (!desktop.AutoExpand) + { + DesktopHeight = desktop.DisplayHeight; + DesktopWidth = desktop.DisplayWidth; + } + else + { + DesktopHeight = Height; + DesktopWidth = Width; + } + } + + protected override void WndProc(ref Message m) + { + // Fix for the missing focus issue on the rdp client component + if (m.Msg == 0x0021) // WM_MOUSEACTIVATE + { + if (!ContainsFocus) + { + Focus(); + } + } + + base.WndProc(ref m); + } + } + private class MsRdpClient8 : AxMsRdpClient8NotSafeForScripting, IMsRdpClient + { + public MsRdpClient8() + { + } + public Control Control => this; + public void Attach(IMsRdpClientHandler handler) + { + OnConnected += handler.OnConnected; + OnDisconnected += handler.OnDisconnected; + OnLoginComplete += handler.OnLoginComplete; + OnConnecting += handler.OnConnecting; + } + public void Detach(IMsRdpClientHandler handler) + { + OnConnected -= handler.OnConnected; + OnDisconnected -= handler.OnDisconnected; + OnLoginComplete -= handler.OnLoginComplete; + OnConnecting -= handler.OnConnecting; + } + public void Update(IRdpConnection desktop) + { + AdvancedSettings9.BitmapPersistence = Convert.ToInt32(desktop.BitmapCaching); + ColorDepth = (int)desktop.ColorDepth; + FullScreenTitle = desktop.Name + " - " + desktop.Host; + AdvancedSettings9.ConnectToServerConsole = desktop.ConnectToConsole; + AdvancedSettings9.ConnectToAdministerServer = desktop.ConnectToConsole; + Server = desktop.Host.Trim(); + + if (!string.IsNullOrWhiteSpace(desktop.Username)) + { + UserName = desktop.Username.Trim(); + if (!string.IsNullOrWhiteSpace(desktop.Password)) + { + AdvancedSettings6.ClearTextPassword = desktop.Password; + } + } + if (!string.IsNullOrWhiteSpace(desktop.Domain)) Domain = desktop.Domain.Trim(); + + AdvancedSettings9.RDPPort = desktop.Port; + SecuredSettings3.AudioRedirectionMode = Convert.ToInt32(desktop.AudioSetting); + SecuredSettings3.KeyboardHookMode = Convert.ToInt32(desktop.KeyboardSetting); + AdvancedSettings9.RedirectDrives = desktop.RedirectDisks; + AdvancedSettings9.RedirectPorts = desktop.RedirectPorts; + AdvancedSettings9.RedirectPrinters = desktop.RedirectPrinters; + AdvancedSettings9.RedirectSmartCards = desktop.RedirectSmartCards; + AdvancedSettings9.SmartSizing = desktop.SmartSizing; + AdvancedSettings9.allowBackgroundInput = 1; + AdvancedSettings9.PinConnectionBar = true; + AdvancedSettings9.DisplayConnectionBar = true; + AdvancedSettings9.ContainerHandledFullScreen = 1; + ConnectingText = "Connecting to " + desktop.Name + "..."; + DisconnectedText = "Disconnected from " + desktop.Name; + int num = 0; + if (!desktop.AllowWallpaper) + { + num++; + } + if (!desktop.AllowContents) + { + num += 2; + } + if (!desktop.AllowAnimation) + { + num += 4; + } + if (!desktop.AllowThemes) + { + num += 8; + } + AdvancedSettings8.PerformanceFlags = num; + AdvancedSettings8.AuthenticationLevel = (uint)desktop.AuthenticationLevel; + AdvancedSettings8.EnableCredSspSupport = desktop.EnableCredSspSupport; + + if (!desktop.AutoExpand) + { + DesktopHeight = desktop.DisplayHeight; + DesktopWidth = desktop.DisplayWidth; + } + else + { + DesktopHeight = Height; + DesktopWidth = Width; + } + } + protected override void WndProc(ref Message m) + { + // Fix for the missing focus issue on the rdp client component + if (m.Msg == 0x0021) // WM_MOUSEACTIVATE + { + if (!ContainsFocus) + { + Focus(); + } + } + + base.WndProc(ref m); + } + } + public static IMsRdpClient Create(int? version) + { + switch (version) + { + case 5: return new MsRdpClient5(); + case 6: return new MsRdpClient6(); + case 7: return new MsRdpClient7(); + case 8: return new MsRdpClient8(); + } + return null; + } +} + diff --git a/LuYao.Toolkit/Rdm/RdpConnectStatus.cs b/LuYao.Toolkit/Rdm/RdpConnectStatus.cs new file mode 100644 index 0000000..53ccbb5 --- /dev/null +++ b/LuYao.Toolkit/Rdm/RdpConnectStatus.cs @@ -0,0 +1,3 @@ +namespace LuYao.Toolkit.Rdm; + +public enum RdpConnectStatus { Pending, Connecting, Connected, Disconnected, Fail } diff --git a/LuYao.Toolkit/Rdm/RdpSession.Designer.cs b/LuYao.Toolkit/Rdm/RdpSession.Designer.cs new file mode 100644 index 0000000..7bd8e4b --- /dev/null +++ b/LuYao.Toolkit/Rdm/RdpSession.Designer.cs @@ -0,0 +1,70 @@ +namespace LuYao.Toolkit.Tabs.Rdp.Controls +{ + partial class RdpSession + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.ErrorTextBox = new System.Windows.Forms.TextBox(); + this.tConnect = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // ErrorTextBox + // + this.ErrorTextBox.AcceptsReturn = true; + this.ErrorTextBox.AcceptsTab = true; + this.ErrorTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.ErrorTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(227)))), ((int)(((byte)(227))))); + this.ErrorTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.ErrorTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(157)))), ((int)(((byte)(0)))), ((int)(((byte)(51))))); + this.ErrorTextBox.Location = new System.Drawing.Point(243, 243); + this.ErrorTextBox.Margin = new System.Windows.Forms.Padding(4); + this.ErrorTextBox.Multiline = true; + this.ErrorTextBox.Name = "ErrorTextBox"; + this.ErrorTextBox.ReadOnly = true; + this.ErrorTextBox.Size = new System.Drawing.Size(403, 113); + this.ErrorTextBox.TabIndex = 1; + this.ErrorTextBox.Visible = false; + // + // RdoSession + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.ErrorTextBox); + this.Name = "RdoSession"; + this.Size = new System.Drawing.Size(700, 400); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox ErrorTextBox; + private System.Windows.Forms.Timer tConnect; + } +} diff --git a/LuYao.Toolkit/Rdm/RdpSession.cs b/LuYao.Toolkit/Rdm/RdpSession.cs new file mode 100644 index 0000000..eace5bf --- /dev/null +++ b/LuYao.Toolkit/Rdm/RdpSession.cs @@ -0,0 +1,186 @@ +using AxMSTSCLib; +using LuYao.Toolkit.Rdm; +using System; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace LuYao.Toolkit.Tabs.Rdp.Controls; +public partial class RdpSession : UserControl, IMsRdpClientHandler +{ + static RdpSession() => LoadVersion(); + #region 版本识别 + public static int? Version { get; private set; } + private static bool LoadVersion() + { + try + { + FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\mstscax.dll"); + switch (versionInfo.ProductMajorPart) + { + default: + return false; + case 10: + Version = 8; + break; + case 6: + switch (versionInfo.ProductMinorPart) + { + default: + Version = 8; + break; + case 0: + if (versionInfo.ProductBuildPart <= 6000) + { + Version = 5; + } + else if (versionInfo.ProductBuildPart >= 6001) + { + Version = 6; + } + break; + case 1: + if (versionInfo.ProductBuildPart <= 6999) + { + Version = 6; + } + else if (versionInfo.ProductBuildPart >= 7000) + { + Version = 7; + } + break; + case 2: + if (versionInfo.ProductBuildPart >= 9200) + { + Version = 8; + } + break; + case 3: + if (versionInfo.ProductBuildPart >= 9600) + { + Version = 8; + } + break; + } + break; + } + return true; + } + catch (Exception) + { + return false; + } + } + #endregion + private RdpConnectStatus _status = RdpConnectStatus.Pending; + private static readonly object EventStatusChanged = new object(); + public RdpConnectStatus Status + { + get => _status; + set + { + if (value != _status) + { + _status = value; + var handlers = (StatusChangedEventHandler)Events[EventStatusChanged]; + handlers?.Invoke(this, new StatusChangedEventArgs(value)); + } + } + } + public event StatusChangedEventHandler StatusChanged + { + add => base.Events.AddHandler(EventStatusChanged, value); + remove => base.Events.RemoveHandler(EventStatusChanged, value); + } + public IMsRdpClient MsRdpClient { get; private set; } + public IRdpConnection RdpConnection { get; set; } + public RdpSession() + { + InitializeComponent(); + this.MsRdpClient = MsRdpClientFactory.Create(Version); + this.Load += RdoSession_Load; + this.tConnect.Tick += TConnect_Tick; + } + + + public void Release() + { + if (this.MsRdpClient == null) return; + this.MsRdpClient.Detach(this); + this.Controls.Remove(this.MsRdpClient.Control); + this.MsRdpClient.Dispose(); + this.MsRdpClient = null; + } + + public void Connect() + { + this.tConnect.Enabled = true; + } + public void Disconnect() + { + if (this.MsRdpClient == null) return; + MsRdpClient.Disconnect(); + } + private void TConnect_Tick(object sender, EventArgs e) + { + this.tConnect.Enabled = false; + if (this.MsRdpClient == null || this.RdpConnection == null) return; + MsRdpClient.Update(this.RdpConnection); + MsRdpClient.Connect(); + } + + private void RdoSession_Load(object sender, EventArgs e) + { + if (this.MsRdpClient != null) + { + var ctrl = MsRdpClient.Control; + ctrl.Enabled = true; + ctrl.Dock = DockStyle.Fill; + this.Controls.Add(ctrl); + MsRdpClient.Attach(this); + } + else + { + Status = RdpConnectStatus.Fail; + MessageBox.Show( + "Unable to find compatible version of Microsoft Remote Desktop Connection!" + Environment.NewLine + "Version 6.0 or higher is required.", + $"{this.Name} - Error", + MessageBoxButtons.OK, + MessageBoxIcon.Hand + ); + } + } + #region IMsRdpClientHandler + public void OnConnecting(object sender, EventArgs e) + { + ErrorTextBox.SendToBack(); + ErrorTextBox.Visible = false; + this.Status = RdpConnectStatus.Connecting; + } + + public void OnLoginComplete(object sender, EventArgs e) + { + } + + public void OnDisconnected(object sender, IMsTscAxEvents_OnDisconnectedEvent e) + { + if (e.discReason != 1 && e.discReason != 2 && MsRdpClient != null) + { + ErrorTextBox.Text = MsRdpClient.GetErrorDescription((uint)e.discReason, (uint)MsRdpClient.ExtendedDisconnectReason); + ErrorTextBox.Visible = true; + ErrorTextBox.BringToFront(); + } + this.Status = RdpConnectStatus.Disconnected; + } + + public void OnConnected(object sender, EventArgs e) + { + this.Status = RdpConnectStatus.Connected; + } + #endregion +} diff --git a/LuYao.Toolkit/Rdm/RdpSession.resx b/LuYao.Toolkit/Rdm/RdpSession.resx new file mode 100644 index 0000000..b341343 --- /dev/null +++ b/LuYao.Toolkit/Rdm/RdpSession.resx @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/LuYao.Toolkit/Rdm/StatusChangedEventArgs.cs b/LuYao.Toolkit/Rdm/StatusChangedEventArgs.cs new file mode 100644 index 0000000..e4e17d2 --- /dev/null +++ b/LuYao.Toolkit/Rdm/StatusChangedEventArgs.cs @@ -0,0 +1,12 @@ +using System; + +namespace LuYao.Toolkit.Rdm; + +public class StatusChangedEventArgs : EventArgs +{ + public RdpConnectStatus Status { get; } + + public StatusChangedEventArgs(RdpConnectStatus status) => Status = status; +} + +public delegate void StatusChangedEventHandler(object sender, StatusChangedEventArgs e); \ No newline at end of file diff --git a/LuYao.Toolkit/Resources/JetBrainsMono.ttf b/LuYao.Toolkit/Resources/JetBrainsMono.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8da8aa405130e21ec0ed889de44b43ef51bea914 GIT binary patch literal 203952 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 literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/calc.ico b/LuYao.Toolkit/Resources/SystemToolkit/calc.ico new file mode 100644 index 0000000000000000000000000000000000000000..d21f3ec901534a72b51f4f88fe0e6ba95f040fde GIT binary patch literal 1150 zcmbu8Sx*yD7>0-F58%pcFZ~bR5K$40M5D$S5@R$jA;hS-$B2;xVxnv*iiWVJl&v%p zB_e2BN<&+qv_&LHV3xMDP@&Uhy3z9bwIerey>ce+yeH@6`Ia;1FiZixg@p`#4>Gs* zGt2>oVGfaKie}__GNy>u{`DAI&(&!aXT+}!W%&H+6f`xZ7J18QzFbyLh{(sal~xi)OHbJb{yR3 zBlvt8H0AA|VYwd-{ zsv`BtnpZUbO^9o1lF{a`x~~FM-dP#=ze%Kho4tn$2!&SGPgl6z9YQ_Z)gE$P=M1n zgVi-*P1gvX{zLjqWaqc_-6Vbp$yf-fL|9fljAT3{D;7jD8USzZfa=-t9Nykvk>OJb z38{!5JE9Yb%_YQ~7DT9aX=#LF2fByVzaPW*L}^<d4I*L zD7^F1FD+@0Hx&7iU)eswu^zzTg%6tN3Yy!8GmjtVEIk-PAaoC>Cus7iKIHpj}OJGC^M3MxOBgvvCg~!vYhz#zuJz@P!dKp~(AL>x#lH~{6S4W>`(|4%6fy6HbT7-lay zdO>>7_5X(gZ03QaK;kfft{)~3Q-e&Svq5|iMz$YWKTIA*BijiR!>1o+7CMcr7hOMy z4+H4xVCJBUBfB46ju<|*^q)O*>OVOcX8(hmm;V#O6Du>oYLID|eoAOyI1MNOr)n}> I0MZA-0A7i%7XSbN literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/credential.ico b/LuYao.Toolkit/Resources/SystemToolkit/credential.ico new file mode 100644 index 0000000000000000000000000000000000000000..72e9603cce2e5008ffd817a250fe9441d871b0d4 GIT binary patch literal 1406 zcmZQzU<5(|0R|w+!H~hqz#zuJz@P!dKp_SNAO?wp0V9Nhv!Q&8oO%Y^qIL%Jiir%? zRZ|&^YiBdq*3MwCYn;Vk*1m+ndeV9Z*Ou7~o*nZUTv`_}cy=#gaPC{d5Yo4VA$Qo zdX^{>Wi-!+UG82=vlFeVZpjh3@f+nV3@f5 zD8sx1XBjr0y28+K?kPj#g%=D>SKctpyZV%2-i?av&gU0^>^w2@45x t3Q3BA-NUc1qo=2%r=y~z&jt1p&^tf~0$?sG0SbZx%%tN7>|SOi$fxj2&9iIVC?IFd)yAc&xaa?0&bTJlM|zu zatyC=Y^kHXyxd~wY=z(B#_Y@tLcsvK^?GF;PrD+EtymA0H&qt}L2BlJIv5gF1d2t@AtE-rv_7j{L zcH3u;V`!k4%cV$^4%Ne>kYyZ3UP?65hz5#RsZ;_@eH~`}PAn~iiH={;YPDGUv4~IR zel8c9ty+?Zy24{n=AFQYwn|jyp9jU$K{&*egX*Anp?*+LX)ZKdbww(4vN&i;V$s_q z#$3n**8XZ8|Cd8h|Dp!ekE*IF&|KuQeCXuYpjVtl^OIB1mK?`mYZ<};Bk{C}BiS{tn zxAfhCpFddmENZ;1K8;ruC(*7-fp@$eJ-V{6V^~9fuT6s;eI4U>zYEWJ4VVua@s;f$ z+T-xPHU+G;5tRRh^z!=mvx$H-+_omZ*V(F`vNeW-9s_jM2^cfhvYzo48QI(N+^u;2 ur>D=iLmb-&W_JUaNP>tU#oJg9y2Ly+^t?NmMtIiwN%)kBXip1j}1w$ctygoRFhVabcfX!|fa!3-Mb8Y2e znx?f-C?K_%LvnfsW8nxCw;Ph8KpP$wEayA6;;CLN78|3{s8tIDFkrLcVShh*`}&~z z{ezrs+{`AXrg~z@Bwi*Gh)l!~8joT$9ELGE3f&08$9*)P4<1#6%j1UZQXo0y(p;X* zm|0AdGFiM^Ffo-`z+0~5dwLEO39gr`kMF>tO`c*aiE{ndMtuSIdW1@Bf> z3^vrF>iuEt&sQRC^y0QH4mD&7Hrh~uv8p{Ad}uF-OJ(!Ir*NeeXVpWfEL7q_PceT7!MPCiwI`-#0(c zS{{-t3yxTl)!QQcs9&JQg6lU{ais1$j@2)tyW%PaEwvbblYu{=^YQcIKbF{1`=)3C*cr|Aw&HGO0sP8 z^SGWd`jm-@0prg(6T`q9g8c;r{9o++kB?&CMKK3UM2tm{ok${FUYx^WG+JkUHcqG0 zr}20koFozn2nK^te|adg_3PrURx1Yr0n?%0f=0!i|JG`(^p)zPtMB(a>PlaIeRAdN zy{6?yAY#p5t3A8&2mQ9?FV;@mR-@v|AL`vQJ#+LQvUJp{D}OS07w+$F@T_uB$Ynv| lui#de0QW^;_blnjz!E}|9y>o?LS_~xF!Syq`^YYG0KZl|<%<9S literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/disks.ico b/LuYao.Toolkit/Resources/SystemToolkit/disks.ico new file mode 100644 index 0000000000000000000000000000000000000000..ab34a8bdf75cec3210e2c6a817a3f5a3f4b66cc5 GIT binary patch literal 1150 zcmcJOO-R#m7{`CMh>|SH=!GymbQpq%x^@^s;2{*m*g-JR%fy$|IS&qzk)o0>WB3Nj zP$8YR4V|0mn2J+SQ_+z*rVT8HGDBE05O-+bp63^Os7nO>#%F)_{Gadhd)_8Q0)3K` z1%0Q9;>$wZ5ke>lGLhw%ogV*kD4MuUJR~^mRpM_B``sg+5hlV*mGVrWq3RuOiWCmtgH;Fsi{8{3dJ|_{XldOtktEbr~Avx%VVpntJvGygWvB*Lqh{9 zD=Sf5U5$~E5zNlcVrgj!?d|Qz%*>3FE~3$BUeoW`_VzY*cXzR~vjd;chmDO5)YR0- zd#kFdke!{4qM{-gjYiDR&tq_K5Tu9O?M5IF0P9(|zP^r?l@%;5E~2)!7Q@5Cc;~Xi zY&N5@u@MCY1<1+Ckx$k;olb0RZDDO~P1edfj?Zy*Ivx7@`e1Qbq3O`cn4_bkXlrXj zNlA&k-)^@{o!9Hd+}xbhO-)V7yeldyWWF|=4Xv%M7#kZyPfrgzJ3GPe`2O?0%*@Qd z<#J(sd>mG*6&8yHrKP3PmwRtAnPiNnrY33Q-m-pZXh_y@uH$&D<+<@Jy1Kg1-`|hv z>1kO@cXu}o27{an=_6bp=f!>Enz{eS$HzE0IKck?K7zrZe5cpz!E@;C?UniQOiBNS z=fM3Ahr>8IIYA^6k@};fBOD$cA`}W;#M#{3gjTDCTCEP`=H~M5Bo7P>7|H&X{bR8h zPESt}jYcoxa6Yt);g*&bTV7t?OQlkIpLBoheqmu@8s(y;9dmL%4u``{`&*|{sh*Pm z72>~~_)Q_s62!GHLOd`C@mz?z^nZOE5TcIy^PUJ2pNRnBCq6+aK4L-T17N^UbTI|t literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/env.ico b/LuYao.Toolkit/Resources/SystemToolkit/env.ico new file mode 100644 index 0000000000000000000000000000000000000000..26699955c7c590919f440f8c408a0b30080d3910 GIT binary patch literal 1150 zcmbu<%_~Gv7{~F)c#FtH6iSj}MVTzDh^#C`Sy)Ud8%yOSWkK24*(iU8jjZG?EG#HH zEB^q0f|u_%Gc}!+J7)UKJ@+}!@7#0mOcPPVJD(3e`(v#xqAMbXL5a$5okIk3>8nsE z1aeg}Tf{kTaQ#R2nlbxlN3UzV;|p_eFIku|`-$mNcAVony3vb944@CK*u)sT zjv2F>fwdFZvxO%d;1!4H#14*NubIkxGv~K(-63q_8IN!eW@d2-d((UiwFgYW-X7e+ z{4%_!N!-KUG~Yn&3`^*M-^Uw{@q!IFcZzzXd9S$&@4X2lm_QpwF$mXOfxVS^_hqdX z?WM8jDd+65Zl?VF_8HG(5eucG<5YRhUNh#u|H0q) zBF4X$S!*F<7a3z$IXK0c6P^$3Hm~J+CLfuQ545%X8=vk=l7yC~Cd}K-__ZI;iQ~Pv z@X_?H=i{I?$ot)Z1uLT+n6UPu=H?U(#cyD&aADA56Fk)jG*{D;R+eSqzc|#2pUeN_L^nd7A*?7Pkec0SuJ@v|L4i6mEO@FBGX1slS6zL&PawRB z{+E8(UZ`kSKI8G44+Clt+4`TgwZS*#Kx}bRz%u8-rRX89_>;Ks;33Lm$0&QHidv?> zcK$*4GyL2=`TyI=D5}2hqk88ErScFezx~G3jc`u?(CcB{pZ0P0?HaB}5-`-(!RSk1 zeqkE%56YSTHUEfbMDL$+=m|$~Z9RtSz!n;pgZRO-M|}GJwfs^45%1_J{Slwvx*o!f y0?1OA;ayU8rCzXT@|y z6z0Vm3PY@!Auhpg%Ji-n1oK8CiU^9qtZpn!&(k;Mz>syQ@9>`I$NRm{d)^PeLr4aF zghE2!JITd$glr{*NNLa%&8+09kTSaWKda5MG5cTYbMqXmq|nLcN}S;1{Ni(Lx_;uK z2I#7uAWzc+K2{mKkj^jN*8*d81V#D>;Nw#B{j`3K;p!5jsADTn`*ocay@)C1>4GNpF?f##!=T8_*iCm zh+!Xt*&1fyF0-kG>%k~osIYk8epMIo;k10P$e2l3V^MdVr$9y`Sd6bl{68PrF*aHche{k91B*y99%&L=!L(QZuowVW?i`)l*%ssZ7*n_s<%%}?W9^fu;R*zqH5#Z1tN z!6sAMZ>RPc@|xuB9R-QD5$o^Z_*uLTl;e}vgh;D48J^VIzj61$909#wx?a!ac%ZQ^ pKGJgF2KAPu*0c1F@MNWgfbv>ekwKLT7vCv!@r&*)(i)c5{sGgFiJ|}i literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/gpedit.ico b/LuYao.Toolkit/Resources/SystemToolkit/gpedit.ico new file mode 100644 index 0000000000000000000000000000000000000000..36ff7c895e966eb9cacc0525470d0bb1955936a7 GIT binary patch literal 1150 zcmbV~OH30{6oxNqbm4}TYnO(FYZEth(~XH6s$ruh-C!R96XQZ7i?T4rlvYeMKq#6h zXtBnI+DF>7wzeQ8Z52q+h-iflp-L&(cV{}kXG)t4l(=vv-<-*r`Oo>!y_c~zy4%|s zJx{W0M;JT77&}E!iZZ)-3QR%Y_FvuI-Dfo#&9qLZi)*#oxqqQhC^Q`%9mnJ~dY-%v zIg^_(e_F-RVycCE@gxQZ2l4Jh6n%YtNu^SGQLgW|xkDR;3f6LEeBUYVLCOWzwqQ1! z@yz9ebvA*nuC8IZ{+7*q=8@-p%IFAe4>$t(2dq&I^hY!0!+J$PvQ)#jhL>gXvs4fzy>Q{C;j~h7<4|+$r8qM)!)+C-$O|HD)L-J2Nkn%hfnY9(Mcg$%E?ytC;_|=@At7@9Q*GZj3w+BM-@UI&IDSo=d4b{+`x>Cwc;pOeNpz zcA1Zu^-kW6n&1&~MwpA_`~4op;C(L<`=oW?iN3%iW6W0amSt%^VE(uMQy%*vdE0*9 z@;<>Mm9A%-3G%@G*fGfu1_O%Yh=KsT@Yw4GJoZ%bAHyN@al#9aq=qC9@Yr?9k47WS zhe2@U0e&`{kzp8G*mcQ|$K!lBtM-_2_C2ey&w-{in(C6*bm#bH@v3@>>^{*B4gYxGD;n5$p3w@d?Am2 Ivo1XP0e<4PsQ>@~ literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/ipv4.ico b/LuYao.Toolkit/Resources/SystemToolkit/ipv4.ico new file mode 100644 index 0000000000000000000000000000000000000000..ec2dbdb2beffd90bccd2c10b658922ead4fe6a45 GIT binary patch literal 1150 zcmbu9u}%U(6h+?>69g@`(EttFSrKYV3-}K!J32lB<3DU-=+Pgrv#_Bsp|H_dn9x|z znAqsKz--3NEG*ee4sUpK@9fTI7PE*?92?(fc70%WYGxNei_W@FF=H;E7QFk@bCyYSZdnmeptSj#g zbpc;6h3x6uc75#DglG7L2iP}H#4ce1dJYxvNAUcP6)0d6iK%)p0t?3=a7(*+BWHKij2UhyVZp literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/ipv6.ico b/LuYao.Toolkit/Resources/SystemToolkit/ipv6.ico new file mode 100644 index 0000000000000000000000000000000000000000..3f9584e1a43a6f1157f9b4435a21d18bac2d80bd GIT binary patch literal 1150 zcmbu8y-EW?6oqf1g&`p8FTu((h3{aemAz$1l`2@I7cB!R71Avz_!5GRSlNi6g;kzF zFc3*0`W@VX%d)es~4J@(pyUt+7UV(O4OW^}P zD^-@tSW-!Or9 zcmS1@S1d2j3Cv*(N6>=2%JOTNuR-s=gHzDGyvp+O>3{6N4O~DIynMc>euB5gLs931 h`dPGoQ_f$ce?kw2UI;Z=Hp;8_DqBrdf0FM2l0Rx;U=#oV literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/killexplorer.ico b/LuYao.Toolkit/Resources/SystemToolkit/killexplorer.ico new file mode 100644 index 0000000000000000000000000000000000000000..be59e3d4e5bafe72e27ab4af337dd3bb0cd73293 GIT binary patch literal 1150 zcmcJOJqp4=5QRtZ0I9UK^Z*{f(#}G#u&}TYu@Da+=o!RL)T3Bx6~(`x5F_LW9^g5P z3|SgK|wvi>7q3Dot#bhOFgD|k8^`| zRk(iYS;Ta#1_QH7u;6(zAlHFH6Xk$l>vLpvcOA zG9ea*cIT`Jk+U4cq1T~ zJ-i#CcLTs@GeXuOejd%)>5$9iJpbBT7x#22h)1-C8ZU?Q%?fzEUi2mlU=zf_Uyy~+ zgdXb?I;@TK@H6cfo`g!J;`yQ>H>dEgL;7r^AxeSX% z=<4d?`K88Lt}_6%EeFv=H6AYpAZ%>GWtkFcwHkN#3eXr&(3h5o;U^DZ>Q?YRG#U-h zzy0AWrwIZoe+ca>>u9B3ST99w&){%4ph-%=WCHb(pG7^qLU7_G0>eGfYPCGSYQpD# z0ic&^bkjc6fe@5j5XA~LTrL-{VYl01wOTPgJ`SVN2!p`@yb1VQp*RLQP8``$~yyk7MZ027+aT_~Yn%>;_nVt3~&J1Fj8lw*UYD literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/pcname.ico b/LuYao.Toolkit/Resources/SystemToolkit/pcname.ico new file mode 100644 index 0000000000000000000000000000000000000000..bbfe444a51defc41820d6d20c477975c76efb6d8 GIT binary patch literal 1150 zcmb7^%TE(g6vnU7l?#I|T~$YDh!@VR3Yso?w6ASKNp-Jqsj5e~Tx}4Fl?MKJ@#DMshXM@C6gHj7`s>uEUN7qM~*HkMtItzuC%N zsA%JY`~sF&N&hG5%dnPCL(}8Jz2_!0zw@G@+lkZHnz_8PR&K~W1LtH6jtMygcmoNj z+HEkp!idhN5QrurY8RC2IQLW>)A1#QVvDjw=TegXdq)W2_#(!sW}Rth99uE?H@^BV2S)s}QjOO0FQoj0X`dImK|e~X`q0$p uMjqAf%njZB8oed0?y^Ho@yYRo&TDC%5y}@9={u--X-$j1oBs#@`~DjWNgNLV literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/performance.ico b/LuYao.Toolkit/Resources/SystemToolkit/performance.ico new file mode 100644 index 0000000000000000000000000000000000000000..e4e42dd84b21e596f8e18f6db136a360b36e1d41 GIT binary patch literal 1406 zcmeH{`%jZs7{@1bVH7X12!z|fAX-3*BBg@CUc?q!J6wXNW6u4uzd)aJzUR4|@00VK zCnpCqV#LNG)@XJ{z*HbXK!o^IAQb;wG^6TY`yW3`&LVrSiR}G*$v&`;aS>HSN7ND- z)j)VmBVl9iFm`++lcKAcHmM%nCx0+^ZZosySy`cXkiMmfq$De=*R->9S2w$}tQhz7 zu<~Gl4ac6d{Z}^`MK3s*^AkBaIsBY|m_r4*?FQE^7V2v%C@6Mu>f|%Q>%mgdN9k=JmZ~bQ*9z2Gu{7MHvbu`O zni{H`YN@-^LS0K6jrRpw+qm2MfF`Sr=5_&_jk_J)SZ$r$>+HtX^^i{cW9mBHv_G;_ z+u)_S#YabnpRQg9wkJ+HdOdXY576cCVs|*OKXvic>7wVEhd$>3{VpeNj~lzwN3Y9E zpJ#}Ej~CCtApOpl!Vcgb_!H-gK|Efs(0-o#{CEd__=X0B4&WUMFcb*j^9O|v;tviJ z9Dc>{tH1v90N$JLdIv^EMn+p8X*C+H^rjtBc)YZH#ZoDJG@^@NygF_D#teOiPA4eR z%vJ0323b*5d52Cg!qT?M!Zj#jW`rZn%S>KoRCi7IQvEndktA)hVa5-tX=+T&md&wB zqE?ftpP`z*8xu2GHBM8$&}h;Ob5v7YRGiUd{7C*>qfJrf@AxWmyg^knr|TDLr3Lb) zZ^nK2y-8IP)}@OBwcn}}BUdWQrX>kKt_>6QByJr$WzC{FpDod+&kR*8rF^ZbvMgt= spB<_f5~akH)YN1t?ClNT-ZvNz_9&?Q01k-%Foge;H~S%OC?}Nr8gV*FQ2+n{ literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/perfsettings.ico b/LuYao.Toolkit/Resources/SystemToolkit/perfsettings.ico new file mode 100644 index 0000000000000000000000000000000000000000..9dca6315ef2942fce0ffd83f2cf99abfd02b22ff GIT binary patch literal 1150 zcmcJPNl(H+7>0+$AHd18C*!`b+X8K&tYvFi1;h=FKf|Mc?LFdw1WhztU2X(SN;1xj z2?^){n%L%P`+d`=-z@16;$o-UP1tpV+^rF^P6*jzuoTPu`322ak_O5vjo9QD-&KlalE$NWnl zRtDm!HD3!kA-(ez#$SbSsJ3gooRM2wdOL(160iLP1ec5lTu* zMBRXZ0C1#1(#fQxq`va<@^sRB|MJcw*SEK~qqVhF(A?aN`ucjIk5$GZRvCjhb=)Mq z--O9z>aD7(%9`%q>2#v2t4q+)(IK=cCCNDQ;4sQMt;n_JeJ6hp<#PFWX=!N_H%>mp zeo7<~756ZeM7s`|7t*ooRtB_fanKcSA0l5TWilBo7E7mF%lC2?;iIk758Oj94!RCt z-}3@wcBf%y_YNd?>anqD1LS#%kF?IhpJB7v&d{7|y$NZ4ety}G6Xp+GU*WQ$=vh9@ zcT$mYCk4hE35YzqUg)Evqlc+S&g$ywY|`;QgxKx&I;B$iGN&=mbsu+;*O!f?t2(I8 zM+>4(ha>EGD8kG#7xnbE!{OLPIv-+bWo6|twOaj_`hEXkgTsZvA>bRe+4Tt+a0w<~ zzr#fTTf}E==ikp_Vh%BrSgTU0`V9udqp`6urK6zm8a{uaw0pSge0}0X@1-lS#Oq(s z9SI@!oMNa#q2ReK#EQzj1v0D2e67)bm@a>g@fZErwr1T(rXsEn0rCWSmFz^^h)O?zxNvDUlEMKT7S4(Tf`SMtL0l*r zClpZ>=UJPZIu(?}MIxk{({=ma^VMy-su_DDu9p`k?jP8fcZ|JfjJ*npl*s(bi-|E& zdmKdc)@HMPv{)>P(AOuWfB|c_+h08%PrOhloGO)yS}vFWDtO=p1J>no8LQRmwcG7d zr_=dEyPGfvMGMl*weIg!jJA%>xE(C=}xDcANVBz7$x$ z-%nbtmUKFult!Z=pU)@PxcR_<4Tr-V%y2lQ(P%``XjC$(REpq%5M!-KBqBZVf&nZ1 zd@vZ$cs!Q<6-A*~EJoAmROXOJ9FNBdHS|Xg3|Nup=nGG?*(8(6BxgMTuE!b}u!%&1 zPbL$Z&*$>n8;wS4G#a#AF6DfS>-9Pr3rd-_!AUB354D#ktIw-%QR={X3kA>(_ZxlDh(oh zGeioU!7+&pE!Q8-tkle@YiZ_M(-!XPI?vN&eS$jUI)`)iT)+FA`@R(=jX#}E;k;Kl zy<1WCD2lR=;t@}@b1q5-|NGy@Ok<93t|?c{H|L23>XY3l79B>hcl7L!=HWD=iS z^F^4Ft5l-9xHS2W`KCOCTJy1Tr3`~j$1!9*gts;WCeLT%MO_v~Ix66AE61R-9R0Qu z+$-A;asx^K`wKaN)wTjeNA5z7!2LVutH{7>`oj-<)w9&;agQ7HfOnATRT#tj&3zPW zo)T=$jH;i8=cmzEcMRiQR+SMN>cO(V2f@MHm}ozN@w1uIZ;}47Gntkz&H}8HA=ili z`cAk9gqEc8nMXpLUCU^n7>hZ*ZGjj?*867kTi$_Y-5 zVc^t3ysFQ_1UZa{C)F8$<$yH^#5ygAw43pjjIc8wtG)HAe|s~EXSJDl(_qjTwHjmg zVlIAq3e_AutC)In$9&}@k zb!ES3jOG*uYbzN+hjFJ5rfr4*Yl6gp8^8Kp_`$bqxXqBgAsIo32_MP$zggQxf0|Feka~F<_PwSpij(E>{mgb+UM+TpXUB|Gx!22W!E32aZOP(x2YQD IUMlJP4H~EKiU0rr literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/program.ico b/LuYao.Toolkit/Resources/SystemToolkit/program.ico new file mode 100644 index 0000000000000000000000000000000000000000..84f3edaf8daac5575e5f41a459ab94a779982707 GIT binary patch literal 1150 zcma)+Nla5g7{?!kgoK2o2V#hFkP9(fxR5AbIM}GcNKI4>3TiM$QCvYlK*FMtcyR$- zN^NObs@1ZzNL#j6;5{j=fQW@s@hQOtOhM!(hrcr)#zf=6_wv1&H#5Kg%(r9&A%wjO zg}}ZWg_B`|uuc$!P0ZL38(AA?%|D;`_;|1h#Ky)VCME{a(b0&CilR0$G7=FH5eN?t zM_5=GLPJAw=yr6Vr|TJ9eO(X-T&St3CJla$O3ek7tIy$j zT@me{l$1n#`ISO=+#*IthS1w%gRRqwLB_rfOyPy-LVjK@`EpH{hsuW+p)uSeJ~=s= zc+=x%O!~$cKa7WU50G;_llk!glK33n;Q=%?>A~Ysr7yruLj{aRBk@Y55*s$GhsDx@ z_p%>uw}cDXM{rQ3Bn|hF1o_=0EbT2&C=|HSScC?X4knX{_>`0s+P|&MjD`6*eE1+k zt5K5%KgYzxDC2!Fn;%nNPB(R--rULl&BUuzD&nguiV+MhV0HBeW@lx1y+fFse8u{H z1OnqIDaxmuZf_1^yWtD&Jn17oEiH}s!tDKMY%pMH=_?i&KVyFWJwAO3K$hRIINZmf zy}PJBQlBnjhcO6M<458%GBSw2d_o1TQB_%jj*d3i?N$~OGpeqZA}f72(pB52#?soC zpkf+39|eie%E}_1pM(3tVcRlp*QMWgp$jqIJqNY z;L5daTI1+_Xfrq3o9#B&x5Wp&nGqOF55>8RS8ytB6|_E%_mnQ2Q6c5q!{h>$N-mIG zt@2!twiQSXbm{I$5&mq5;c+;?4tk{>%EHBH@UuZnAdk){IR?^IXjVNx7wRH7A0!hu zE8Tdv(NA9XN7p)BD3Z+_RS}CPv?>YhY67Qu7WxQ6b0DGKm(b|H42F1LR0l|Bd|wb6 z)E>fo%b`xUZ@B&FxEdDT5KAy^X38K?K7oIeU`!-dpU}ec>XN*0=#BMAliOYk^$;Jh z@HbjtYd~*0#8Y*G@`vmt~LUgJ%@=|#y$6vUZgG1VUrbg#wy!RIhjMF{?opeSH@*nX1JBoEZ9g?bA=Q7Ou~T||g! z_k{LJ5oYh2uxq>w3E%Dn%+(7yp41Rt-%C)jy*!ggcsEXXDQVW?cH^7-k2O(A;Fda2B2)5K=2-$cy0hxf@@MU!;k~D@2K>_8{u$2J@_2Yq24jKbnkDv|nxI-ugk-m6{JuHb3*|K{JF)jdoqJV}7yhCsd@uTu!=bJHtl4AsiEm|Q`ch~6PY#EM2XA;TXY0e6 nj?8cMXZG(O=Xd7**f)fC}m-SxR*K!tdO3&i8je=N!)YK|o}&Sg7>$^o=ab zW*~%;NU-5>ST!{@g~!Lod9T;&m&s&qqtQ4dm&@Px_xHc8uC5kh|H4>vv%dZcyJY$C z1pP9eQm92t%ZP(x77zp;ghN3P@Oc5`!%!gxFy;bPxw%`b<^k6l9`4+-KCMZvWH?%; z1QdlK*#Q_E8v_o91B{N20+HuHTIymCa1q$1{-E|qM ziPkuV_Fld>c+l(TG*yRJT_Q;^K?#$RG&sMYFxsQZ zIhu~V4cbNugCC|PS~J4fbf>AM)Ka=LBmq>_G|; dFbVPR++T_GN+62x#t{Gj002ovPDHLkV1iJ{i@pE= literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/regedit.ico b/LuYao.Toolkit/Resources/SystemToolkit/regedit.ico new file mode 100644 index 0000000000000000000000000000000000000000..d47a3f9e71879bd5dc7e2288837eaa2a1518a12d GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x$A1!p=K{*#K44Fc)?e>n(_iQx}6 z{mA~GlFaabc|LxO&;201Hy0!D%rpcWBo5*aHvP!{2e}{QMtqo5_amzZnwx;kM^7)< z!Vjh%sCPcpUGrgL#Oep>T~o#X|I<;A{~#K~2bqEFcMuzg{}Vv=g7kvYI*5k4BLU_P zLNqS>3F$+Y2blr27w&&#d1BZ={Rt@Q*n|Evu=4{kFkP}UoCjhCBs?F;e$P-2lmq4q W21iy<+Wr6kAP_$`{{R2G-hTkKa>&*I literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/resetexplorer.ico b/LuYao.Toolkit/Resources/SystemToolkit/resetexplorer.ico new file mode 100644 index 0000000000000000000000000000000000000000..d41628d2c000758a292c99947bd0c8a76fcc9ac2 GIT binary patch literal 1150 zcmcJOF=_%~5QQh;0j!eNG6#?#9zg6YgcK<(QiNb3Ie?&@5Nr%dnqVw)ic~305jH`i zlHg_)kB|dAXOPGK1pke&ILo(h_nVnrwpft^J+fKRb51TZB8MV!tf*46@fv%tVJ8pr z_hs~!ZZH1|kf3`4LdT@Hq_ZpsG1FcF#PxPfZ|U|b9{`!(6+!5j^pUQ%d^jzx94jtpQ?%2jJs2t0BJa%0%^FI0cmK4fRDyEQ2$CsZfDrW z(ICWC@Qd~jyxgn+d5rw@qjz}-?Kkw-U;)|Ai~8hU|5JDFKx;MB?+}Bcqrzm%)eMzttTdxqb;Vu#^94F}^DIPo?AR&l64FLflM-?L7u3F@Hyn*2Vx)*P;^`$c4h|)W%!*ql7jtecGTr%jic^lr zWF^Mj0tCV{h}i7BtYaziGhE)E%9kpa$eTytoP%e}D6F@L3-IMV>CrpGS3Dk%yMM9V zf>~@Mzt)6RxyNSd8XM*n%GLu`^ZOWNUTEH7XubfnA-}{Q3cLB4hyk&NReF^g9oI1x z*0E(D!>M*qt2SU)I&kb~mzwkB=BJG$1fpNnN_ThKsM&9FUF9iN&!5c|@DpN9!FTg2 pZ#moO1(mz67(`e?gOLU%a8y7 literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/route.ico b/LuYao.Toolkit/Resources/SystemToolkit/route.ico new file mode 100644 index 0000000000000000000000000000000000000000..260b5f8170aa29280ea42d61972a81946e0b685a GIT binary patch literal 1014 zcma))xk>~<6h&(s5Cf5p4BT*6#C=PQ1#v}D%)})zFc36R3=}kU0}~TL@WcER&(V5J z2M){~&h+Kgy)#|aol=EQ(U$n`P2bg&+EYrSP(T+rSGTMcBY*r3YF|Cr16Zn!>N+!K z?I{1|3clbSc44Ouu9^7+J9gLL5GG&>reQWS_m5v-wgsoK3Y)MFc0%kjjl&|$z!=Pf z8D}4G0ru?gK_7Tr-7r{U053xskJkMi!v=J~9o)k!oWK#B!(&G8%(WLVFLssp@eJ2c z0p)!>W%SB5GiL3CJO_XK461qP^YMQro|S86%-RVpW89PTrabg4+@t7~Yi7*a2~A>d zU_S<2Tfs9HeaMViJE39B18m2DYYSXv^dU25?Sy>Zo`0i#vvxxLm^bjf3N>RqYte_y bn6(q~{#Kwf2Knl{DrK25Ti#Q7y&?Yt0%9{3 literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/secpolicy.ico b/LuYao.Toolkit/Resources/SystemToolkit/secpolicy.ico new file mode 100644 index 0000000000000000000000000000000000000000..a5197c8831947595b351d63275e25286775063e3 GIT binary patch literal 1150 zcma)*OHUI~7={ngAHa&mEQ}kCnrJj#xiA`|MvV~S+Qg;kqF}X`AlN_wwG^9Z1BhU4 zfr3M83oR5%Yi}^NMO=6bQ4B>eLT#yuTy*t%W?&|yq{2*|c{AVS`ObGvGK3V+yReYZ z=U!5_n~)+x$N>s1(aL(A202B)<+~m>R6$>(!hNj*_o~Y&aujH6|7CM8*4hdW`xLI8 zCvbE&qtEgfrHNG($Cgnx2b>M2ag?2s;CpZOhg>#{I4u~ocVM8m4bJWs9O`_BedbA= z@XmuVMZwheN#y!IH;aJB2A|6cufq&C+m3Ug49-Wgxb_V=?O()^o=+0FzTfLaWTX$l zpj!;qZ~-UAe0GGrFV<)2??iD$BaU|j zq`ekZcj4k~qx3GGK{zmscz6J@S1yc?zC?6mmJ)?wNB&r76p64~ARg?OW|7yMaORO6 zr4}zPn1`@O*UPW}Q(RX}E*gT#phNv#71TFxK%=-0ty+#6Z6&U%>QF-Waj8NtxR;g2 zgQ6#9jEmq`W=>!!J&R0g2I+-qq<(ycu}-;VzoIARL~LC0vx1+b{#U^_J*eE?kH3cX zSu6AnHPGBDN0m~J+B*subZWF2wcGk{5;3eUr?K*T5!p-<3*SFre&#KbUlK4kH|)s& zyOzbDwI!^qq^Li|@jYgzCtz!D+L8Z$as*dO_6x{l$H2qaSo$xC=aet``FRp?4qP;d gu-}W(K?gi`E9_k@dHqlUAzP5q8qcl`PSVW7KkiKB^#A|> literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/services.ico b/LuYao.Toolkit/Resources/SystemToolkit/services.ico new file mode 100644 index 0000000000000000000000000000000000000000..090f687c97a90e22eab209020bfa4819523a64d9 GIT binary patch literal 1150 zcmbVLT}V@582;>s>Y}g$yC|s3=+28SBZ;6WN+Bqrurvt6vJ_L4oGwXnKk7FBmu|M{ z-0|ex+|-(*8G6?q9h@d!=um_Rz?Fa`O(2{}O3YS1&e7vxi6Q z7>w9zHcfQ`sN%i+!cV*x9_W|9dwS;mo0uasCrFNz@RK4l>6)8(H*~zG4!T=qzlN+> z^_W97+J@xrTfjA zGObN50&(W!a>lPNN;+!($QyFC%b>qW1WWcxAWdapsANMYo(<)^beME?ZWwC|yhOW_ z?D&|!^}doHf3m*tmCW8KRL)Pe{@(OiVZ&pDb+-;y$LqjH$YHfz1bsTuCMM>VD) z>Ov?@f27QbiwJ8hNjYY#&;LF*YJkn@I8dL;oV>oiqa`E1lOABpqTjqvGx5feyvu#=H@x?Nw0BiVI^j z8v9K${lY|x*T3ihz4`+PU&mew)ajZqN|mc*2h0wtKrhX3m9V07m>xneagq~ySSGtb zhlwFC;ok0COpjA9uJ+BEU}iuCCY%F>=`jV2M&pm6hSzJq`e1@+22MuGfFSPn?))v~ z>7gT?wQeu<#+Y3J3Ssj8K(7Vkh7bnH$};H$zi$+pm3hErC%X$%qOMi4qGOH9+|?PE z349B^Ko}}OlJlZ9(BFacPWKrqZ0^Bkt$*q3jQ{5tm|Ij})s#_tDuOAZ1$-U{j9BFE zt_FdlniG!)`UC4}LTB_&+F^}!!N$TjSYL9%;;a(}&2soG%Vr1m?yVh7#rvGiVjJ

?)D{k9Z6{r$o&0{5>Z8&lLFg}B_uEha literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/share.ico b/LuYao.Toolkit/Resources/SystemToolkit/share.ico new file mode 100644 index 0000000000000000000000000000000000000000..781efb28351d7892195e7ab980e97d0f3a33cac4 GIT binary patch literal 1150 zcma))xk>|36o#)Lq)aNo#AxiS#Xh3Z%n~0%@EL4u#08Ncf`~*BAHXPfcAClN7QuQ# z3N@SAR1kvtd(MOu4!NTGY}mc^QU* zftU}2$HVYijKCM~Fcc5KyYB~oBMUN36T#CU!pSfcB9sVW{ComxN`aPAF?}|Ld_FJr z?YWVR4*$vMzrVNpdRnvAZ|}?Am2?$KszU20j55NB5@s)%B4#d%-P(}(YNm>45!ieN zHi-2nV3k;YgynXt)X%$9ct{GZ-?V`Ij+BN4-M#vF|s6E(&x086ZN*LekAjhkzY!rSXh6)e1i2E^@k znQCBBBP{;c%P?xcm#~bjm1S!sD9TA2bSd-CQRmJjO*k9SW0=KY@j&c-|Mf%CqnKO67AA@9y$c&NW#QP{sZ*tc06bCTxu WF>$QV%dk}H%9u&^M`4Q0w7viU%TO2q literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/taskmgr.ico b/LuYao.Toolkit/Resources/SystemToolkit/taskmgr.ico new file mode 100644 index 0000000000000000000000000000000000000000..dd14d1339024be23e6d4645eb3ea9915e46e44a1 GIT binary patch literal 1150 zcmc(dO>0v@6oy9-T-ueZA}$s8T?=;6zo9FCf<@ePArcfS+?s_Y&38g>5>lHKQ{zoz z^Lf9Ld%F~a2w4agQINRu^_*!Zodl^%Z+J6vXU=ox+%vBbm*}^&Bu^K!X7 z4T1oa2S@GplfzaE7UkpG-_+}czc?(^HQsW;qn%d!j-kB1}TbGe)hoVYuf96groukVv{_-w{}iE7pF zGYF669jRch;p9U@z0Qq}=gVGQ#Loc>FMPjzSBpIRTZw(be&ISRm5PjKKe4X{jw`*j rz(3?~P~v`!f)MNrpS1&&O6K(4Pb&mB1TfTVe literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/tasksch.ico b/LuYao.Toolkit/Resources/SystemToolkit/tasksch.ico new file mode 100644 index 0000000000000000000000000000000000000000..4d896c63b7f514c3007fbe8ac89cd22820ee67a9 GIT binary patch literal 1150 zcmbW0TW=CU7>1|Odwb=zcltB@5B&>XsHJ!Hrna6E>nUnm)I?HZywDb7jD-Ty11*PA z4hzUG2yEm~XiKRSv7r^AhJ}{&T=apWI4o^8qPF@>gI%h<6w$06=TH4^53#fj{LiVpf zH#v@5S1#c0=wMfqu_{I^VR0^<^Cf=4Xux4PFZ}BV73>!?BFFg1CEN=Xx;lmz`DMwC zjYNp^2SUw8UGR6VUdChjD;|V)g|0i(xNnoX`8)N?rBy7=8_+yzwE0?#=lj#1k0N_` z7%pMhqF}}q>ei3WfX+fqCZGh@kc#>FS=EK8j+B2Qx-WRzdt&(`Twb5(MPjK3sDHG) z_X=BiDAF1hO|#-%h`;I1;pwbbi%+;e9gF~t4^ D{mhze literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/uac.ico b/LuYao.Toolkit/Resources/SystemToolkit/uac.ico new file mode 100644 index 0000000000000000000000000000000000000000..05867aecd30a816adc1146a18795872389f55427 GIT binary patch literal 1150 zcmb7@yDvjg9LIkRiAgjax)^jY7z_-Qdd4F+K`>E4Td8L}7LS$KBqoDI#G_%UNV-_0 zxJ{@>4ecLbuo+1#rt|gtRj*vPRdJhd&*{0p&*z@=YfEI~m)%bM?xN{JA}0}5aCnJV zzSep8_oZoCK=NOZ89PVkAQPF(cK*D$u8Q;8IpBk5FNI^T1A|@7;(3*O`2+^rHn#@% z**j{Z3O7DNbfgdqz14Xg-|XTh>Mj-B7wU`mQ`&JoN?7Tu{MEsHvU79>^;as*8;*E@ zd6UD}?GZ=Pd=CCBeMVFG2_9YjaKy(5X2Ip!@6 z^I43ZibHx}e*WVE^En*C=Wkqj gIsZFqRpF!T1#cx9o{NZL1riNwHp-jlBH}sr!wIea9;lyqOT`^53 zN=G{rrNbJwbVNg!INGyWYjY+66Ers<>S)E<=rhE}I}jUb!{+o0?6|ae=g~pBU_o`j zgom?6h-Z3G!E~c+QVWBnImOoqm{izu)7W0`LYc) zp+P7Y?Wp1P{3aO8jo2Z)C0h%=ZuyW5ns5{{V?SsI^l+GGZye92m@Sh7JGc0jp0 zg4Xp(Y$RilOpu;Kgiq#{wONq&$c)8T797p@rXfv#P>HW!`e3{ZRTD#K9GS=CK_?_` z1B~n-6LcE6J1PrqNc(ZEtP70Ym?9e4X)f~|G$8K{pg?6su4(C-ZyXvCL?z+a>vcb%%%Tj>`wZt!>fDO~9&>(Fgh+riS zL*cKrAMztI6I}&|5@%}~q4CEkQ=pT^P}t0F{FtF!(m`^`+HdD7H2u|d-hAGD_q_Xk z=iEEzJjQ0xB^EQf%h;xe7z<^LEhET9o(Fy!{>x_3OFv=`AtD|j78A<}-83s`R1*p! zoCqcY2yXw@E~L3yvQ)G#zG8OMx^i|}o}{QGUq;xP^@1w5syJZbA_L83goNO+XA|>? zFha9HA+;pFYwAqzjPm6;7-Du9dm=Y%>(ICK515V(x>wY+HO`Sn#?jix2-@-eJovVi zL}Fr9)?w?}t#@m zW6T>bAIlof?Tkad(}247EXZl?grxU(%)RPGQ12ZCem@D(=Y1FbBjgFB;m6GLh+X}J zMtFaJ;boyk`q$b|83a4S(V`UC4xWeZ%ezn?zlCKV{ECpaaj>pI7t7AyNIHIA%k`SY z+1-tAUFh#9L0N+c&yl{SJOoEx5m55sb)+2kB6*(&38kZ0Su_fX{o1f!R$&Ec6;esi zn)dqQQ^U@B479$ArbCe^wfmuYix&2Z2IM$y;+a!kBs6&tw|flwO(R&6eQ6{>_57Qp z*Y4SxR{i6N?UMta6l35}0nQzWfunLhj&4aq>48f~IWvXijyo_nkK@VOF=&fNpiJ)l zEmXd_(X5jve%m12xZYTR-uhP&9A>x<%?X?q@BOagmq!;D}id{2?$BRaw zTJJ`*W$=&i*u7`ktDoI-WnyF9p(F~eBQ0LjqG$mY=|{`L*>5J&7PYE`)#Z& z8-+UWXDHK1`vQ^aMx^oMvlr`3KV5iRHPuxip7`Q5|Eo=fY};B5>a-sV;e>Ei$hRyZN>w=%;a!7%cLJUZT{`8o0(8#zF$AQu7imAMChVan^Cvxhi={L zL-$m9L;q-_GhIHpxuZ2n`>@!oV!^?IERfdoTH-y#>zR+dKSIKvvgx(LHxAWHu1RHv z%g1w9rr+?$Oec5HdtSdBe}eZBXQm&ypMR6*5+;AzVO?tJze2J9j7sf05fqWc+x&l< uI&a8Nnc>z`d@I3gpY5E6KTq3C?3teA{{o6r(!y9h7~4%$5jMb`kG}zBQ-iAj literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/SystemToolkit/wallpaper.ico b/LuYao.Toolkit/Resources/SystemToolkit/wallpaper.ico new file mode 100644 index 0000000000000000000000000000000000000000..9819d73249392f1b1a7df72581e3f2afeac171bb GIT binary patch literal 1150 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 BN8tbf literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/Update.png b/LuYao.Toolkit/Resources/Update.png new file mode 100644 index 0000000000000000000000000000000000000000..9e473517f54cc5b6ef7759ad22504651ab442690 GIT binary patch literal 10155 zcmV;cCsf#pP)~u00001b5ch_0Itp) z=>PyA07*naRCr$PT?trJRr`O>9T;F1P|4j~bH&}PFSisdH>_Mxkpap6YKg+&o?1}m zmMH^>DOw^7f}v%Knj4yCo0e#qYwr8P;>-ZE-SdAg2m;M8_s-lq%)q_R6``$IsY#pZK+V`L(n*JzlBLmaFW8drrnr4|;_yd%PVU0cS=4aUJ}+Gj~Wg zk(hNqN49>wN*Oh49@p{n_IU&x9Rb$KRldOiv!nVAeLwOz7a*KFapcOH&{1u)&fV*j|J!f7Gj^+TbF$0rg|xwoExVWhCN9X& z!`IJc-*|ZQ`gbWG$!C??E49BqJaiCKAG|z|Kutz~6%tSSOc6U^d}uh^K%G6h|L@o- zkEVXTA|-m(hiv=f?ePdWBLb|D zIPjyD@)w#m52@R*aVxe!czEl2wmSF8ab?u(kIUP?bNQdl+y{3Sf4h3=4Yqvoc6bDw z839&E?92f0vGWKxI|4k3oxKP7_-j1^Jc(=l5a0oDb_945J9`iE@z;6;coNt8A;1IR z>*~{h@Pl> z@@YpNXnbtkAfT4ZE@BrnM*2m{-`sd$&ni!1QzXs~+5vz@13)V3u9UF{H*d)q5Ku?R zG}sljl75l$&>7<8NnELy@M&2eKyae$|2Bxk=;g!$XXs2mM%xik%Vh?MLg`|=CHq<6 zNelq^)Ko8U)pP`mIsyPS^ZJ%`0ftY2K(~M-FTlN=Q)u`;t^K-(_he55RC1Y0s!&Sp z>5~m#wVK5Ev@9ABL@@>uqj9K5N(N&+Ucn&|xIZUYEHU7V5{0svLk4Ies9H^83LC~m z<_YYKS0+E{oJmy$SJ77qY3%mRsE z0P3dXq&S?loo6q-&7q-nZt1a4ff2VaB%w_aiCPq5+@z314U0(dG5~lKVeFwLkx++0 zP(Cgncl>0_j^r2Y6{{sb8hP+q62m2FY)YIZS!ek>PvTM%pONhX45i;jKLdtE&sMGn zmWZHfsC!DHvvjPraUPix+WpTWJobSezy8FC+TPdU7akZ;1!6L>-OB^t-mpFSMJ762 z$*SZ*I|UfhM6s#cxbjgQc6kz)&BVc{0B{Zfjzis3%Pv0P>>z&tG#@ZJg?gk!R!1js z?K3|j_*DYoVFbX?%{j!YNl(}t7JVf6Lfp1wYX7}jAGKU|5|iXSY24N$)fxx~&e`iN z4uZ3nNqj!U8?=VkQTMIin)8XXgC?WysWqn1TY2JQfLF`6J1K_%wun4P0w-5(+wzLN z`qGpiwOn@BRe%S(txo-?I^*EVH&0@&kaa-2RS~yxxNH&mO({OSEIoN}b-|&Q%P=W0 z*7sapa~CCf5?9ygvZG&hM34+2G^6s2YbgXai0to4?ubrHsg`OT6oDlQWsM)>HNJu7 z25NM4bRDr+++QRT^{!jDZcl^3P*7Ad-HmJE@IcXPku)OlQNtEkqt&2d`L|nryd{J5R$xypbz;L8?&J zXQS=TV53%%I3Xe7BR@aCh3(t7cc;@id-m)(=kM>|nU1U@$l#eX-83#ak$@3Z5|-6L zY%P%k>X38hr>5BD%|<;-)(uEVktmd19icz$6+^8d@scG=TFGRxi!EEWbY%kWfddDw z3>h+{EfbyUkbU;u8;JpWa^>F|B2R08-;2#G@ZCfB|k&3>&R z@!q|A{~0!Hm{t3giHV6Z)22-;D|qfmotPgPP|pS25;2A`_K1rqkrfS%9r}H(yvSv2 znh4o6jG&K1p`65}AGU4d(-T^v9_iO@wOcDlylT~|QFG?ZF}nwB3B;Q>Z|WaCdZeM` z^7Hfa@87?FHa9o-cePrbwP3-5pDpQg^>@|GpiUq_i3p%CS3XSHrAuT_0YG}Q0%?PF z8EUTL(?kX>!5D-RMe2O6d~jtKX9sOY-BWE|cc~R5PD)BrPMS0+h>On1%F4Qa`t<49 zw){v~6PIdM$RHreoe03w8hu-J=n%P;5aW#Rk_lUVnbTLxWl4b18A)tP3|Bt5vP;dv zfLyKtHng&JHm(&UK6vopzk>%4Zp~GPJbn5U@7c5Gz{H6YhjQhkyj`_i76<@at?`B2 zML;xd0mO@~fN0eoaNc7uUcU_Z&J7?R-eY9a5|Mj(fOf<7EwmO9894?3b%g8?CeS8n zOiDUaT}P0oW?=vn3V@SrosDZ8iKzuFkx0~6B9Zj0SFc_Vs>52fYSq10uU>Vy?!5i` z_g@-1bZC1n{b=N}C=3wI)Q8K<{lMilUm%*d0U%6IjyUHL7%!Xw{k|Q53+TN8S4Ct$ zDden7-{Q?QR!j2gh~V=W;SZz= zjUn;!<;&}~ZQFMDm@#AQ`h8d#^t80J{anq+YI)EP0B8uKj&>D-+oYKw=-8dM8bx6J zq3^-);}5iS%n^BX9ejOZYH}-DMraDD<+7))0+(0ZRwrGcsZ#A?__SZr!r}{riV^?%Y{i?L7tnn>KAqm@;LG`Mb$h1gVnC@|k}BQZuh` z?DKV#TpfnL@{RCRk0FQpr^VnQKv2&OK^<2FjocA*@p^v#g}i$cidHY86|E^E&v=2% z4Bf(B>Kp19r4ebpy<#$QXa(g!LikK@XTX@cv;ORAtBK$cWPkw{qF%}?OhR{h60csp zdd$?RQ!^wIiNmyoTI}-k^J8rWQp;sjMiEA@rRar*;PK%XWnfzB^ zOu*=7&$rTz7tew=aTTpGRhh_NzDUmMy`G&#rtyg;3wEWO!&3KL_K*zi8=~5?Mk3?0JdoEsjY!MN6>?p_)M8 z(&pi8**F0BZ&Csbqfig!PHV7oY7!?UC8bQ7G|3^$tSnu+wB_Q(i*H!dDWy7UxokfG zFg}6g(swWjN0*#?xU44O`#XBZVNkExVK0^3AHcbfp>WlQ0NNs2b|@mBEd=8RpF$Ce z&d||PG9jdyH=zmExty0MlwQ`_a5O!f9UKRMXPTIa7ol#-W!A*&)FeK5@ZiSNpAv&ssg4{p^Ps<6i*KLO?L5 z`1KmWcGOK7V2xd;Ch_gtxAje%Hg(9lIm?zUYqDt3B4!(}&w5ZT4_XF*th)K*(tijD z-zj-Hp=MxeCbs1Xc+nMFhzP*BPoVHKIc-xI;1j7r$#^S_a-fQkjX?-zN)$@7i$EHA z&@izgbsz1397GUj%Q69z8&Qv~W#`FpcE}(=q#SiqzHLpIJc+GA&4SK_3l|DIcI+s! z#6FM}3|C;fEhCFu80I5D+cAsrqN|%TgEbsK&%H5dl`$1oHTB6`&Uy!Gj_UDL1Tt zl`b7fFV_>m!1^UGJGyNf!SMSri(?D{{3cc?|7TIq3W4IoE*PsNv8i^s-e^ULc2{v~ z5-wS|o|Pjg{@GdCDf*ZQvm zB=rK1=(WXe&*mB7zypKL1FEfrfVZ2LY&jWz&H~*I^ZE5lo!Rm#T~)x;Dm6i%aiTSR zF}w0OIW>uwE?wGqNQTfS>x%d51h z_N!(F)JFohhXjFN6Rn|tlF1eZsS!0?xmpH27nrVGxzevwr%tQ= z{r$UfVc(q1%J+!}jSCx&2%rjey;fBmdR-Avv+yWySBPxFUQ$Nap<}@HjdzM&@4Taj zD=cj>0ZBsPM;`z#DyR}(wqB)G5waNw;U*GA>Oy<=r!)GhF(fVpf5nOw-K0|KI}N-WR*L7GQ*I|2TZ+psLIsz7wXe0YJ1$y{K{@ffpFy%Qha+Sjb*C2)eusZlMvy z(cUW}A@v6H(^{oi`gjUpSmTm61oHZ2D2o5oF0ayRdGJaM__|b~{L&doW$&2T8$I@p zyb6Cg;la(_1o#+2Fj2HdX_xdlzJX!i00vqoZnT9OC{*Xe2aSXfSf5eeK3XWdhb;o4 zb%$cvpPv}u=f})9i-iP0c-!X-ZMw7#U^w;s3aqI>Y<-o+7$dbjcq;~+>KXgI9u}=e z*J7a>N8)E`OZNjdzA1@Kqb?6{{`gLqz83%uqvHsZBv7+(2X|aN3vs}m1M2CqHszW{1r`K+$A?`8 z1TWDwMJ;4e3tDV0W|{IW44ej3HjmQhx`u=w?i)aDsCuERcRc~T{_Jo^scyl7_W<;k zR=UX$iDGLCT^!2GJq-`;M-ce9v)&ap)#jP&)Bb4g)3s~8M%*0>&bfcbaP!>Rvo(gq z1+!#hND@-S0%LPTqj;7oV&VXT5O|4WQg&N2@F*SM31N(ueo3PNp5{CRKQ9-EYHr(} zFrAo1t1EI!W594S#|Za}Fx)R9p_I?12?1J52W*FIiQ(!x+Ak#wthC ziK(&-l`jkd3=}Jr)2z{VM4fR9m&%5`8)nrHnlws1P|~W>pq2+y83s4oMBu>b3c#pj37F<%H0X=Jg@fw5!n8*0 zZ7I=lPc&=_)Yg-rYj4ZqIxXlj)4_1!kY(8ti7zAyLm*`@!-_rZAcDv;E_f6oJz zTZ_(v0RF|;*jEypW_h}PX7J(k0EtNGrow>yq>7ZP-_z*?;h-|1%hs;1*QBYRPv1eb z*Grf-<=lxQS90#&Ib1!XiD|SZ{Gz_zBD#S}MFq{?eSz=@sqe!6o|2UfBAT@XoSzF=#W<}~u}6f^2jZBN z^-SDr^tezP)) z%IsqCaas~vY*{%0O{6RyWB6I3P^K}_t1Rm~VR|$GimJkf8ZbVD5b+lPc@`O6em|5E zS3Iq0IcB8 zadlQ#a-yoMkhMc;bmDk`5b|du2_7A1HC-k=G5t)pK|_lVy#JWC`HSR_BN?qR)L0VZ z$N&!wb}L}(EU&3q7z1n}2)yO+)^$g!8fa|K!g>s_r@##k6beB_B1mcQ)UM;4KzOt$ zCiOeJI<3LZKK|}#Zi~*{iz}3z+_&@S`tZ;}OqyFGNvxSSxe3r7t!uWZBG(krH7*`aZRZ#8bk3PG7Z#wbD>n-a&G z!CGu6V0KhLuO?0By!O_(vfNq^uV2+(Jo!^n(!%if=|WTENUV*VG^fi!;e zBf3CTCFeI`#(Nm>rV<&HgN*wAhch<(L&r8-v+zl+3v5xj!%aiQ!x)M6RnSOaTQWR4 z?RX|*)pimC`%WcFElf4<*v0C)(9Jsd)Df6j=e&FQLcz`RXAf+gJ#|!hP$-{`TetJS zelB}O+LHOj*;H#3i3?^2_rpd!TU6(E0E#}!+DGD`3DY+rK<{CIpN^y_^k*{C*qDVk zsoY_g=D#Pr-t^GH46i~a;aD$=&>xbRl$WhHP_s0b?EO{Kq-_VQk|8odf+F)r!~a)Y zo~W|VpTFCx{A%9x;2J|>O=R#$06a<@qnykHBs#Lb6T<$cpv z1*KovXDPvJ1c}uVvJeuWyJxI&mMvhJ()A0P*$ErTZ~O1c??VO6>G4%+k%G#Kc5}kB?7apFVx6{86Jar5rzg z{GTgVuB?;G!<-UFKTDtZ%yNADz5mdO)?jm*rq!9vn2Y|ds0M4uUZCl>< zX{`%bLEZC<^+`e>vk1F@cj*JzHi?{R2`@DAM&-EJBll9-OUV6i6Nvw_x ziUo{*mnf9<3k0zQt~oR6%;8i5stSY6y}lF#Zst!~8m?ablGce_M znr9)55Lvq0YkNa6#$mP`QKcf-uwlcRsZ*!YN>^klVk)1vNF;LF@oK4kw*1{GK~c+t zlZ_;#d&Q+xoj=tUWEkqI_Y6M+7)sJiK6}JX>rw}dX<5qq6M;NS0=Eq2uPDAP*1~&s z*%L+~5=Dwl_hIAXUz>JVU@~NL;*K18|o#7(05dO}pSI zJ*eJ2d?g^5S3VxMx?-RfvgkfLPP)Om!{%#}5A@K(EU&6l#nSavh1@YjlC#8dTmP`t z*4C|Ce+Uc=eQ(ttXsFF=1pE+o-sc^U-$6g!}DOp#ADG$?=IXgp zM8c*AdRY5i25aNsv(G+jx@gfNdi77aYFIhD$B!Ssck<-P$l0@JZ?l8DYH`6@=W!9e zCL+imBQ#c`P*x~V#)U7YHrbekPv3BXIcfi$wY@|b?u}d}1(w zpr=HU!par}>+xj{TLFOPm$%Dw7GAtv1ixIVI13NzsD}^yiojb^a;ZU=4WQ3vFZz2r z44WS4;9#Bs+(Z)a5PPb#(i5cCcv!u9^?0#Z{IWWLF1JiHeD-Q%PZS(VrtS>b* zf~=1g`nRuGb_Hty3U>iu7T&5e9_wM-V?8{oKeOiOr1g=ruX+3SZ9{5m>YxP+7F1o6hJDwZS#&58tK~8U5crg2 zO{$W!7PDYjlR11n2B?tiT-3BKl{k*J^|%8bFtDQ@y1r=n#w3|nG8+TKYs1vSRr(`6 z9LO_(i>n*BiNxS4th8v1(B!PNwVSI7+>vTP(+0Q-!2<^lTp2QC2%|h!Z20BM2K`aT zRRquMQn|25j7K^{AuV<0@Y4X$y%Z9{MF1X+yf{Uu=(rJ#|C+xvQQo=Qh>K_5^v8P8 zg8OKl@C)!svg4qbiYjW^oR?f?fCtX2}MBLW)&65Pi|>?4g&rIqfc zy0KL49y$;qqC#Rkri)tEw84;L0PQaGB*p-V?_bk}o>%LIu5KR1-@SyO>X{n>EIOQ? zu*_6ETppdYru|&#AST~GTm-<9&1xg@)7gO?2&3RU0%#&uDDSb<9?s2}A~Cg~MUo_7 zBMI*HBp~o$zf6lZR|AH9q5{yN3h%`fc?ptCq>fAW9y(s@A@&ryxYF{kaWSGU2Qt>0 ztRAUUD!&g33VMrkK&#QgvSrJ9ELyaP#SOgbX-u_{xIiBA8VTgjkMdkRTG1$gRz1*| z_G*g6rIK8I8|zhtpvx}=_)~fpa$Jk^UY92?_1^&j0fHxj29{UJN`pnPDJv~uiaBim z{PWNJ9zA+^IuiD5$FgS4n&8>9XFK#FDxEf03yD>;gE~o9JICvDWe_P60}?z2SN%ij zkOL1jnIkS^z{T};gkBvQG<4dCBrG&X@O#lD~SxH1eR5Ne+ z*aioLHzx(g8+1DT*^j{BBk2i;P02?`N7sppiee?77TtKNLoOyJCUn-USx#Tjty)N2 z9UaDnPtC4j!!Uu$?ld#GKTJ2Cg1fnZ$!E7Cas?A5!MjbCqVWq1dyOhpL(}fotn>ua z^-clc^UpsYK6mciJv41Ot=P(yEBn`k{bHWPHVi?{?%``Of-uSi7mHhk51#_5D|tgk zfR~E>_boOT?x68ua}feMsdSzqMD{r)S3f1Mymp53ra3L$X z$*Z%$Jc(^UUzIsL4*?W!5VQFzjSVCeJyro}D9fXjC-L7~x2jP60>gg57%bl5t!hQO z)IOC`cEN%LzuN$f!>jUJOb*{g+y|)HGu$6zD7$!WDG>lQqteOrVJy;vHb?#Z6`DGz zg~>jiBY!ZP$z*xJJbf7rtwC_A_h z^`7DBfMI-Tm~QnX;3E3(){arD2feBYsQ(o=t!K7X#zGw!sDA|&&rl--JH;dRR(XYP z(6|{x5P>aLeZ&~vIkGL`dpgh_K79C^udi=QI{-WfP>U^8cn+g!Z->$H_U zsm>fu?JssKRj0CAQd>;aD=@WRjExwKIs;JTEdHi-AwblqxbR)^Lrrv8Zv>;(P)uA> z|KHsqjA6ZW+YAW62nc3~N9dfJ0vSR(m zU=je(&P;*;elr4^<>|kN)^?Hagz2jQ&>XYPKrkgME#X;3M`n#(wrtsJqeqWE+`fH# zhf3VetQF6tGcz;Kj2t<#?Ba^Gb{tKQC$SYhf)9=I))Z+USE2dzTRGLgwZjroA#%AZyYKN7;X><-NFF3CH{N%TkC$% zgc%bN;Qy4cK^S%vkiy_!GGbWIbGvu%-oFP77|_WXW@U=J$B!RBe(BPs$eM7;p{jAh zn8cG;By4Hh>$UOrs0e2+@cUOU6<+=8bmmucrq#+y00RSObRaN3UjZKk7lDM>tZfMu zsxeyoBVkT&<;sX2HIK-Xp?x4*2sD7z7aB8Vz+9VGAXr+8` z$g~(o!|A=Yb!fN2(PC#BkMD#qYVqq7#`us(5n8ZSe9n4*}W)2$&n)edtuV z*@SA<0Znb0iTwg28j{%1+1&l#>cF1&={N|`CNUNAtj*tE^y%l@&QZdzt>46sf!6zTIG+%sk$ z+PA7m^K@Irs%WQASjGe!UY19IEd)3varq!W{_bdQi_YDjU*iFQ!zmjVZ2ffZO12uq z+u;$YjR@F{#1lSR{{9;wACw(LxcJ*ow?CKpzgQbV=iAI9z$OBABQX{9SC{k3ZvLFy zxAW-w@X#7{C5+9E;cf8<&_%#*Bp$bLscgu*VJW47@iQ^qF5=~Q1gb{BZX`B!WRw3U z=7%Sbfb9ryO5)Ph>DJwQFKyke*MG8L@T=3dcOY+pN1&L*)RD>#uk`!0SqC3(OZ!!U zch3DghMVWk{uTdzV9)Ym)UB!3J$jF8+`64RC3ElJOV`(gj;b-WW%(h;J=A&1dvzf5vXni_|@s^?g8FEkARH` Z{6F67eC|p3|EB-|002ovPDHLkV1ntyk469h literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Resources/find.png b/LuYao.Toolkit/Resources/find.png new file mode 100644 index 0000000000000000000000000000000000000000..92669a5a41ceb58fecb41a53225fb15e1898145c GIT binary patch literal 13922 zcmW++2{e@N_n(<}7R)flI+JDWOUPKt&Wwc0)+SVpU8N`yg_$w7EFsw{nM&nX%Cw@y z*p)SHlrj^dh(VTNmj8VJ?>X=LoSAdpbMAYe=YHqtQ4Z49_2R2!B=_92=L5sH@9wtRc8xxaG!`(}GL1&m7Dq@@9{yNk@z;=z7 zpv>1c%x#5;d(o*rI$UlnK|*TDtfzM`p{AyX3Y2AK<I^NJCFg0_Ed-qme2r zi@|`DgT|W$3P9HrIiHzfa;_{D6oO-G?cS38hT548Fs=8e_3#m{RBHmHn)Vz@udbE_ zl$8;O=AeqF=H{YNK`lZy;^j+tcsd9w+Y54m*5nnzT%9{aB2hHWLU z#f+z3GPAG%$I&h6w{C4ISCVDldYz@KlTLFuuSZVj1FrBpmP7dqjCSK>VxLThC^icA zqP_)Kj5OFp6V9jHeYpvOWEUxg`ZF%87A}E*GQGO|p*K`!Ky=yz! zkh{57g|dh|9kR~l^qNLQboCN%c@J@vgUJ`u0PIK6ty9Rp88Uet-m$=F3L^61*&=7{ z-)PHv+O^?@Tk9t7Xv0n|B50q3GqosKrg}f^k)8wDp%wav}YKmL;Pn)wuDbYJ#eq+>Uax< zzI6{d!$kVBM0|WBSeh@w>dHV3fK6*Hx&5fB7JfK6!gK%%mr-lJ+rhpjJ9@~ z^c~VhORAuYJNw0y+`Vkq?oCclf$d_i;n~?2S0`Z~x(ljs3>&yUNPMQGw0DBtJHfen zXz~d%AnjRx?F8fr9MIR_q(bczz2u57yM*(QMqZP-C9YJ2+@ zJm+)~>A|3AhGTkuz9Yf; zAlA>{e@2NlxdlM_DMj?8e_C)76{3P&Tp)X(nr<=?^Q6QK((y|jPvL#^!()lK$@E7 z#GOBRtXIy82VMLF{s3{A+Y(Vyjed-ijAF*3lR|sfC6ZxzrJ7$4Wdq<4ZdoxIMeRM= z>dFT3Qsu~AM=YjYBCk+{iV19iy?iMIT_26ECwT@Z&qKvqtEH7D`SoqDNGMQtilPpT zjzY)k$icx{TeXD6J~tWnt#AAi=xby6h{K5TP9?%nxya)7wZUxn@a*9nOrv(1Y$U(n zg*DK*e3*=!{m^YnIPVBrB?;Ma;-GvYn~fSOJgG|f)+yLn$pS3xrYAySH>+5sM#AEv z2e(Yz8uW$2&2}z&uA!y}U>hck;xN@$ldN@x`s8MKQ0N*eCLBEEs{8ZagE zpl{TVhFO|$vi89}DRt%#Q+YQy zy|ZPgmgZD&X=fjcB}Ck7baBBo?CQiNc6Q)gKAyuu!xV9ey5YD6any9m*vp6}+;w~| zk{apx`9+-B^X{K{gV}fAZsPwJ4nxOHeoTLTGZ^H$KJ8tFYX#6KEOhB(yAEI`#;-n&q})=D3o;P^Z7K+ z``_BA`h-W3iSYs{Lg6@Yz`>NB{Xhe#7nef?vKBy=hCHC6Oi&-uyagIY8h2t-Q+R{i z+2x?j7`(_L`64=x@x=+Ju4>o8WzUe{m?>%0S*2Cf*2_PL&z`erOVjv>7A{_A(HTO8 zmG7mlD>IR;ecAr|NPkpaYdf(obJX<)py}fJBVwJqDBqxrMjh~(U-vX{{_jwjm{(KP z>x6>Mdc&xuu1}xxTKhcY?Xv_6PA4$Lvzz!WxR}#H;SJ9d!0mSqxM7=H1U)R>zIMhh zooxxav1 zXw0%7%6^RaSS#F^LN@e-WGYB{XJ7iSAR*_ z-ynU~A()T-s4wBPJ*`0D@lGM+kjQYKr^R7~!=aJv5;FW3l+ip+tfWu{5b~LSh%k;* z^~Wst3#dHSXElT25vs}Q1b?#2J0`*X#1r$T#_m?`B;P6%jmDebsC2r-`Sb#b%6wme za$b7JQn!f!(lOV3MyLWzW*z0pW$LXp?)y0Ov*S+HUXmZxeaTP@3p3};FSsIYwv+w- z!i}8rzcH?JkDi$ZwSdj6or!VUb=kWIL11XDNP*aY?<~187kp};Mf zHIb9&)RJm`^r%AthyQexxatHqJeCUgG!2B4Y4M&4%>H{y=h?yps@fSW!u7&nTM1*9Pmp8%QtqwTpqF3W4PRzu_o3fy&)mEi``c3sR(VPC-n9;F#4#fmiBKioGZ zV$LcXy!`Ov2ixuz0g%w}kul^gPghykF~cV&!yuPYT)qzOfGE2IjAH^Ty4xOK>y16b zQzcjQw`oMa8)QUxzXe6(3H($MGFmdxdQ%h>yN$=og_YB-am|!)SOk=uerB1pm5m?A zm8YgglEa07M?VEyK1wlTE(3qr=?cf#F3U*2bWr~$x)zPKF2_|%+h7}@e%N`{kdVZb zHN*BNZ%t5nN%5$sUB0LmA*0lTkyEL7w1BbFA=3UMan*xch3O`mKcANQx4F_Igf zES6R>yoI4{qK1T%!CU^}%XbQe zJXrL;H?WtJRTj*qlvdX2It)NeAmD*T<0xa6FRo`m#25j78TdTriK=kr2mEk;jg2_$ zd2{ooSBrU^$=cKKfp_ZgV3>PlTb{!DjT5Yv!B|@7eL|w9 zOT7@ESg7F*mTfy6i(|1wf<-I9qQ-ASbe;1}d0XaM^cGZ*!V1=J>MGVcDG6)sH`-cW zaw!Asp60MtfKlk8U{l`;L)Liq11e?eQk>%pt=SP#I6?4|klQPe*&4Z0LFQInm_M=pr_-rK=Bfz$>)m(0oA=|M`YRsazIY{m z#{1#Yl=t2fN2>F--JtI}a?Rzg8gL)n_|4A0>>pocl_U2O1_XL#U3<^idPc_|vQHPX z4ND4d-D6l_s#jz6Dz+l`q;^5di_4XP?Gfgg&&stA{bOzK#6!Y!m=anUUawS1qq2T7 zct3A9Kj{k}n{8WxqBMs+it9fU@pbVS<5#y#b1*R>`kNjVyh36)V<8o`q(JQ3Ts^g( zG&7XZ&HDO%{`+h18w{$C?-fW{|H!phBFTT-i4*yUtxQ52-kj71?C^Hp$klH!pBM$%nBTxu$>oBNv= zlj%LEZkBy~i#azZr}cnc&6sFK<@werba}p`MfQ6jxMQBuqhPAt{y~2br|tlWcMv*3 zN{L6PiW_brT4Dl$LC2yF(=uy8`9E&jozLfduGB{{9fv9KgLx;9s!W>sl94m*#aXEH z=xCUd8U?HKyaDSHR*n-kZNN@F6^12tKW^vxZUlYu?Gq9{dl#rTldV(vTN*yKbx^l(8_uF?YBn~6Chd17HgTybo3Q8vh*1!y+aw`j#|i`?vPWAtcuv%-I~ zxcdUDIJ5G4J#sr-d)SKF%n6?IjM5qD1i1Pc@`sJ~i<#XlchbvJ#W8-yM^eq=B0i2P zX96NO!gb&$e3C`0YI8ft>GqoUvSa`;2a?_gHeo}yFkzOz&aKYHXI@+jOfx#}e6Mxm zc-`Y;kkUbKtTogcn@$bi5oMi*!On;%=7eN9%kXurd#xJpB#qbnZE&fO>rY!m^c*}? zC_tx+w73*(*TGyCrFC7O`Ke1P`p+H-(5%y5^0wg8h;<(P8iQyfHNxYI{^9{7LYrQ0 zi)bj`;1BN>m!&?r30^Wv+;Ww!Fl>M^zgztJhLLNF%>aaVlgqEM1!I|wYC{wJ08|w<9&Tl!vm$_g)-Pm<0QAiG%sSp2U$crw zX=f;6_mTboArNy))~9+7*ng3@ z^Wn5tP-G&1T{^J=xVTC^cym0kC2Sos$2gM{YaV;XBF*hIj#RQu+o?S=H9oV7C8LFm zibeZz1RDs$n;M-8`!OpEcvU)N-AaKzLZKFIs$_~Z6=Q~aHi0e{6m-oWs&ouh%K{;G zJfx($Ui%7*|Jfo4Cr<^3vE{Yb1wD8^3}r@iZ)w*ees%bZE;A)OsE zt(JgZ67YcsRn-3D3EML9s?KblV#7|7Ln8TY7rd{tHrfLvqRvA+(R?@DMli&8zK{Jr zs5WJrPPXHuOu#(gUns4_>mzE3=_x(P(h=H|SZZEKiqD9317$RiZG(h*VuSaX#P!M-SHm|^- zS)&NFV`0!q0>0gb7XLP=@PZGJc0_grv61_=2=psK$;%ZUL2jA&QZ|Tka!g6zOPh5e z*Tlv>qxRY+ey2V7au{~;x%U*QaeSWcT~W_Lj#ZBq{$YQw(z4}F}b*s;hMcpt<)YOURVm@Jco zHV$f~NurZ|9thC|I)3bSGlSb~%s=#Fgo2?H3#+vXY$>Xuc6KWJVEz?I`nA$aR|z4P zEkS@78v=RA=tKg2_06-V^vca?{L%>pJ#Ha?yv48A_=e3ds~QQRt7?Z=I$&rz-SA^g7Gc8!YUkdOP_TD5m{0Y;H@a!qrLGs$vCIa^y*a7yZ!FE{G zNCcC?nSgxz5pseM)u+qYqi$KArMg~7b^WQ$8F!Zk`RNGZ72qim48C-pJfDc3(-a91 z{WXlcH<*Xc5m3iwR*^GZPOMiM`PZ{(`B~^IcZ6COelon&^rLL#EY5j?FDwAPd}z&8 z(3cV?R%IK$!+4W~0D%n}(^TOkjRx1y2Z$As=}hj|>p$|XLZfL{2Ij7?_U(4Jj-`#N zMU-V2sXP1lomrbSm0I{>jMQ3x;Bn6kZJ9UhNlyo^K6iVq&D!%d)_LCiSIrBB53O6j zRQg7r_&s|7oiw+9&{9!TLhkPG8^)l#&swbYw{U_NzRwQi2z+>F6E_V}_#S3@!e06z z9$(4T1=EZ_SUboh{LneEGMV9*PF${?psV?Oo_;(TzKJ9@Do$!h0ImLM64^x^#g1Lw z@^3bzy%YBvpOTtCeXA=fWUldd__vDrfj+1CwM?@YW?kxD-4+R(k1{tS69W%!SI&^+ zCy*$3<~#Yyb)}cPTI)K_#1!TXcVzr&z@}Q(JUw_jkYt45E*T#f`mBG;cmw!-Z184@ z!=R6$%eMSmdeMgKv6na}c@0`cysK6GV-i-)C#TMD*BJlU^I7+X^g-=97n`%`ueR*f z6#nRLLP+3CKh(@DfqgmqtzHLp{fU`11WovUNFz$X#zZWmH!ME`(4vY7I# zr$bIIpNqFU=g0XDZTZosqN;en4x%enY`e$s(^T?Z`NI8&GOqk@bnbZL_oDYQwEnqK zBgBh0ijUsh!;RY|70JjNvGWdh-2y#Rl`)eFxNR>ZsfcsfSs9!j4mCU55NKbkjf`){ zhnue?6EbH|pH`KE?uLc;1R`DyFV7PXAp_LDhFPF4O|>`Zt)~Bp2yCv+cig1dpib*A zo7Ct~c8UvnPwg#R>1xGc!Idk}?!PHx;GQ9s1xNrR)orFlIfMpSIC4$F0?D zkHe&>l%dns+JJnr3-(3}wWxiGw;jMQBN$j@Q$q;!-UV`HFL!Db&A6V3gDSpY&khhb zh((h7W#Rw?LOv0?{-us0QLo`9_4S>rj~WEl!thkNA`Z=WkI1lKY^I}?>2szRlEn^}_daMfG=C(vb7+sJ(lUDM`Dp&sDXa+nZRFW4$_Rd4BGEJjz&R z>72})(c1_2S}G&HNuPCZpMZZ-W6(8~iuYCSUf1ynGL4lVmEANjIrX)ufbAZD|J!BI zSQ)?f!u79j*p8ve*DQFu99p#_J0Bd#zwMI#aM4)V=5e=v?V`c+%z#IjAJJK|X_qw3 zqo<(#aUP|DSyN%uN$d9(yK?(YofMsV_kzrd9)PiiWz^Cb#Jvv6;cer=iA$5x1Q_W` zTFpI2pq^>aK8+s7IW`H9qt_Adz<70Y1OBUCRx9XFIK7l+PCKBLEkvMw^kT`>052!n zR98&TQ)BLr{2-qvLF7e|>>J_=I|qBvLlBxi>_O&dVMcyl6r_{>bjQbn|tLM>?3^JcQ}Uj}Ea;v`$DNOA@mczhRpcM3ArMxg4a!x#2TtPYKv#$eN(#zK68 z6X7!aadtNKqds}VNnWdjz9GYiH)Li*-qNl1ncup!^OLh1m}N6%S|dY-f9+*yEdR3x zoMsPm&uaML(0e-Zfx?LO^`BOW6iImtmG=5IJZ@x^mM^!>J&K=&+TRYSD@Y!_Va#4> zVW%nqf1tQO*MiA1yd}lw`+u1lB2@~-^m37+CPVXr#)~T%6;lh3uA{N)4v8|O2M~RR zXA|a8W6mKc{11LeB9Ctc7$GeHd4i-cDW!@u+pP;XytjsO5fcD^OwbW1mJ$K5vkJ2Xzf{6rRUw52-Z)w-Yt=SAf_X!l%;o|9 zAK_0+YCrrD*ZyOw5QrW1FYkKcna3wtFV~!6**Q^L%-py5)7H+}C!sv@@gn*cdx2=9 zl(yIz4}V5c#_3SiMyeRMbHTo=7HPn$>AAmu$3>{vMUklJtjs~ah~g(hbCIk4vEJI( zufhEXp|3vkMBV6fVucib(r48GiYcrM*^1(%Z)=Z|`>Klah;G5%tQ1cnoNiUf)UM>A zrXvz8np)zrXc#QAZ!S9?!f>DB1jEqRgl_8Jcg;Q!0biE|o9D|x{@spXD0}SdAz64D zd-Cj+n(AzZ!K5-oNa8=|Uv4RS=e0jOM*^-Qc|yYV(qwpo^oig*0$;n==dG+P9?ZU? z+~QbIyq@N*C>Rv)O;)_>Fq!wNTKS8_EvKFP@d*FNjL1FDN9sx#cYZPR;mC|GL?uuvudga=`2$vm-Qz!Ytx^+6?rgg ztT`TW@QDcG+T$p0nYFfifFXrv|Jq7GNU^foi!`Z#-Ka_!p5yc_;A_COs7Q}wOQph{ zQ0WT;XS+tWw6J&By|%Nv{zib5bxhPZs6Kk~!NG`&bjLJSS*Od(V)?Nv<@@T}bU!V1 z%e-mMhm#ubOP*+S9(gzPsO+GR+SZzgT|MYiHv&uU<%H*NT$P|STkQT|2T9jcZV1nt zv2=T0)%rrt-gvqlm#{tM)4AKKmy1jkEQ*vK$9+9Gu60Su^LkWWOel7T1hw6`=8lie z!1e7iy|Aa{7a}ZOKP;c=54QbZ-OIkC1A67Ppl^S@sD?kj&36Z-Y{*fsKK!kTmALI) za?f!qMpY-BZLs)(rzj(%du9ekO4f02DZHn+-Qv_(=W+D)xznqE`z~78RkVP1KbrJ- z@IWmy*i=I6+-uL@{I}J|R8VJ}@Z`GE*cA6KYIm+Gu4UZM9csK?^yK|JJA<0tB?%s2 zPnV89?VzTfV41TDj~5S3bt+GQK7E0yMP7a%ocHS#eEafk-q@F|)&h(yXx0H$;YCS8a{AL-j2~YZhq614zuElMeJ1#4nAdKHH@Aw(m*O&IJ#Iv3 z%a`3{Eho>tya?~O>!1hi85C*a!S0Qvis```*4s;@LKN?=*Pxq{xK{k*t#o|>uuryA zdFyB2BYPgcu$D}VTm;&#REim)E0Zxq?7!VU$)``V8_(}ERt&Z>(Iq{D(MyKim_eME z{;cKghhTdB6;198T};Rt1Y^y-qr2s;QatDOo=(4eMV24zmIAW(U)X8l(C(EGg|IkR zC;!h&+j2l2Yxe2xz+`yG{UGl1D{E?H$<3+khQ*?!&g|P+<`13Ao{WA#K?+MUe{GU| zz}jw0bMoPP-R|zZwmqrAfY?+?|9dWvOPIFZ-D{G4lm`FzzhCgDOOtD!c%n1JJnVGp z&DCa@?2CckS5ObZYl?tBpThg;2|u*mpS))x7?f!R)Tcw~Ui;Muou1)|=Ms_af{Tpz zKI-r!pV9uoK2|?`t~Mp5oh$fog#2dt2I=aQIo+B-rC7wJ#l6G(q;Qo-V%9fvX@W1x z@KsR|P6)DdEPM|pdxeD1&uw5ek>8098Xwq2Vm-pejCXr9yY1j-Pa1{f<b{gSrD3!rToj~ z{60V)0DM*3PS~QZVR)z<^?j(c2d-?br4M)PP~#MkiZbgJwd^{~{y9WtD=DZE{5Z5( z6v_szUV!bQ+8j}c(zg@q=7+~yG5o1kUAPkY^hD`?xb3B4PUo{}lxZMUUy@Y9iy$`? z+J8mL5)WRIjXJiZI%0WMv^-s~r6#fPaA7bxOC1m{C=(bJ*4Xt!(qb`v3Y*$=LBjZY z5IC3VMC=1?8~3ju<;wW6F7}a%fPg3#^hXZzYaTFn^eJ%?OGk=cjeN3O33(11~aEIqpvGo%`k>AhBGo-C5;BL!*3sgE^i z!9E{B+>Iv>Ou$z^XSh&{3_8GbMHc4CNvmm`iNDWKE#pq1>|)=L^?$iE4)4Iw$M+PU z@aEidljs?c259#4wq~q;p;l{Wv zAxZZRFS2`~`l4O2`-g=GoUd|H9+d75Ryx$SBzfn=2Me2<)r>79f&Xoxn1>M}m8j*!Y4A|vwXoxp(U;(GG+Hel+$J^RV8ytdc zmmD3Td47s%Y3+6L&(OhLZO_40NAt0PH%7X+s~d)ygWmIIO<*Nh-8j)UTO)-*+Uu2| z)Fb0R#6-;egL9Ae;Cn9n&y>SnGbEVPkKSrLh-}x0nCoD53?Sx8fY60C)9O@6RMk*S zCWR&C-{q*_*AYt?3$UVdCSKR04%Z1oefDv}WR){&OLzNyJM!^kwpx}lQAg_;R(zt3(&}>Ziswo%a$Pk>n-B*%a*ina4s(5%s^e6-~=wd3#GRWV|`;+Rc_Cy$c%G7yL(UaOKo~b_?s(^xBs} z6s08v^4X#QCrlM|aA*HoWQtm-kFaFj0X+jTC#K)W($nf>we=6OAjWAUiHWRTpX%zI zutIPgG|^BFm`_5kYr)CYu}f#onqHqx=X|}gja@x2(!<3wPjvsozH?NPm>%`CwgXk)wbFZ;s zy(Uovv>#NEX{?s9aIE{~E>J`_r6W(rz?pcYH7R3+YBQzK-Z*N4T2OZ+vz27Yg~b!$ zvcG^+m7CJhWPW?N&Yljcay5`!r(Y$su(w{pjpT{Y!=g*P4_TwEgpIE~z*;IsK0z!% zbP!dTXe@D!=vE!rau(sYO1BM0v1ztL|C5ZG9bjxO5rfgjw^LIQpSM@hQp#gkdffBm zT~c###KD0LWS^nN876z;+a-qh6^dZqzueVlTY)GcC8s1`=#vWnf!7_x<27O5W9>m9R{{4od> z`!rW}C{037uj`Y>;UBLz3pxF>=h-31gM2z#db8jq38m{wDC3DDSx=v#BZEc)=li$5IPP1X_H=F^RNt&+>wn^Z~3TEd*$pYR@ z&f-8PDkg{mE|ATY*!jz^Sr{C?4jk;0wvB@wUdCFUhs;erP2qR51`z&FcvTqeqa&J@ zwT8$w1!Q!p3RZGlD4r&_Ye$fElKJbvn2pO1Hrn=y#K8{QOCPE$gJdahq(VL+>w`-lT*#BnhP3S9%9=^JB?xxl25^%pi7tc^-T0ZEGv4c4ictp5BN} z&#=ZpX_6VaxoXL5=^4vJCCANvp2CC2$TxyF5*me&m;s=NEcP4_c8q}FHh))jWZ8rSnY1682=hemI@x8P<7g+w4 zwA@EQ6m|t2V|aIG<`WzXxI8ykJ5-9fy+6}L09D@G$2bKN;eIsn-g1TCtu%xK+`ql1 z+|Qsw8%B!y*jO!ltfLif_>*X;zW*xiqab8`X+{6slxEc8Y7Fcc%QnP z1-Ow*>GP{FQ*Fq-XWt4a=JprY3TV8+xR-|NxA`$fC@l7$|nH~5s0n@Sj z%zG#HqzEsNbS~3UfIV>`<^Nv!c2W7(!{P((J+j+4$A0u4n-4nlRnBbb*5rxv9u@&H zrCaZG7fz4g6()mV$5m+#y}uO^`8A0d2n!$iLlc_j=KphQxPcE_)|c8P*GrcEIikUN zdhmdm@^}smykXlvES;=J9}j{$Xm2%j$* zJ$sdV+GU`_vfxA$|3mNE)ni8Q7Pd$di`)Lf9$yJUtzd}fF3Apg9TXoV5Q?nrGj%%T zK|jm12jTUbag;l&EZ^|7X)B>;LLKM5O?Vh<;;%i`=HDYEg8UY=W@e zK82WAi;?jViF_%d#WK;S*#*>YGd$VkU zb=BPDXOH%6-!=d$>tI^i1VW`pvhvQ3%Z4z*~8Uqjg1O#laF zs&UV`Y{c(1<*vCSzix&1^mQvPE`Eq1r-`7Wr%;tTz@yV(6FGz@nyUOp$P;8Pew+5p z6AA0G$1dj1gx>{$UCL~s@PGiNBe_n>{dXqpBil1(p_j)I+)vBLG$Tux`M6{jX*jC@(|?Cbc48#&ASuVbNkrNX4chMX;BHzkdyb^-##^9;8`%rVk# zJ|0c^LhbvbnpX!Y{QHADx2a7bgX^UvR|KG%{1=(ob<>TY)1#e#f zVth(bp2sNpmTm^Mq<%_WXB#r72he%x-Qw^45t_I$32Tsi*Y$3dURn9qoUr&8xYzVy z`}RdN7LLjO3Y;?r+QR}W(6YpHCQlijY*jK+pH^0e7%>hHP2BwD07SL!AjmmF;yP^@ zR~|9Kcd?FgF9$;*RM3{}+1G0z;K%fbX;UrAxB&e3!}`0oZ=a}H+M+rR(=dz0!B9Y) zFfYo`eqFKEn3CwYPD|95b%MBd#ANPcfn>>`p;K!XM~iB^K;monE-#nI&g8WJ137A# AQ~&?~ literal 0 HcmV?d00001 diff --git a/LuYao.Toolkit/Services/IGrowlTokenProvider.cs b/LuYao.Toolkit/Services/IGrowlTokenProvider.cs new file mode 100644 index 0000000..d3fa229 --- /dev/null +++ b/LuYao.Toolkit/Services/IGrowlTokenProvider.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Services; + +public interface IGrowlTokenProvider +{ + string GrowlToken { get; } +} diff --git a/LuYao.Toolkit/Services/ServiceProvider.cs b/LuYao.Toolkit/Services/ServiceProvider.cs new file mode 100644 index 0000000..de2394a --- /dev/null +++ b/LuYao.Toolkit/Services/ServiceProvider.cs @@ -0,0 +1,128 @@ +using HandyControl.Controls; +using HandyControl.Data; +using HandyControl.Tools; +using LuYao.Toolkit.IO; +using System; +using System.IO; +using System.Net.Http; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media.Imaging; + +namespace LuYao.Toolkit.Services; + +internal class ServiceProvider : IServiceProvider +{ + public static HttpClient HttpClient { get; } = new HttpClient(); + private class OpenFileDialog : IOpenFileDialog + { + private Ookii.Dialogs.Wpf.VistaOpenFileDialog _dialog = new Ookii.Dialogs.Wpf.VistaOpenFileDialog { }; + + public string FileName { get => _dialog.FileName; set => _dialog.FileName = value; } + public string Title { get => _dialog.Title; set => _dialog.Title = value; } + public string Filter { get => _dialog.Filter; set => _dialog.Filter = value; } + public bool Multiselect { get => _dialog.Multiselect; set => _dialog.Multiselect = value; } + public string[] FileNames => _dialog.FileNames; + public bool ShowDialog() => _dialog.ShowDialog() == true; + } + private class SaveFileDialog : ISaveFileDialog + { + private Ookii.Dialogs.Wpf.VistaSaveFileDialog _dialog = new Ookii.Dialogs.Wpf.VistaSaveFileDialog { }; + + public string Title { get => _dialog.Title; set => _dialog.Title = value; } + public string InitialDirectory { get => _dialog.InitialDirectory; set => _dialog.InitialDirectory = value; } + public string Filter { get => _dialog.Filter; set => _dialog.Filter = value; } + public bool AddExtension { get => _dialog.AddExtension; set => _dialog.AddExtension = value; } + public string FileName { get => _dialog.FileName; set => _dialog.FileName = value; } + public string DefaultExt { get => _dialog.DefaultExt; set => _dialog.DefaultExt = value; } + + public bool ShowDialog() => _dialog.ShowDialog() == true; + } + public void CopyTextToClipboard(string text) + { + if (string.IsNullOrWhiteSpace(text)) return; + System.Windows.Clipboard.SetText(text); + NotifyQuickTip("复制成功"); + } + + public string GetClipboardText() + { + return System.Windows.Clipboard.GetText(); + } + public IOpenFileDialog CreateOpenFileDialog() => new OpenFileDialog(); + public ISaveFileDialog CreateSaveFileDialog() => new SaveFileDialog(); + + public void MessageBoxAlert(string message, string title) + { + MessageBox.Show(new MessageBoxInfo { Message = message, Caption = title, Button = System.Windows.MessageBoxButton.OK }); + } + + public bool MessageBoxConfirm(string message, string title) + { + return MessageBox.Show(new MessageBoxInfo { Message = message, Caption = "确认", Button = System.Windows.MessageBoxButton.YesNo }) == System.Windows.MessageBoxResult.Yes; + } + private string GetGrowlToken() + { + if (WindowHelper.GetActiveWindow() is IGrowlTokenProvider provider) return provider.GrowlToken; + return nameof(MainWindow); + } + + public void NotifyClear() => Growl.Clear(GetGrowlToken()); + + public void NotifyFail(string msg) => Growl.Fatal(msg, GetGrowlToken()); + + public void NotifyInfo(string msg) => Growl.Info(msg, GetGrowlToken()); + + public void NotifyQuickTip(string msg) => Growl.Success(new GrowlInfo { Token = GetGrowlToken(), Message = msg, WaitTime = 1 }); + + public void NotifySuccess(string msg) => Growl.Success(msg, GetGrowlToken()); + + public void NotifyWarning(string msg) => Growl.Warning(msg, GetGrowlToken()); + + public void Tongji(string url) + { + TongjiServiceProvider.Tongji(url); + } + + public string GetClipboardImage() + { + if (System.Windows.Clipboard.ContainsImage()) + { + var img = System.Windows.Clipboard.GetImage(); + BitmapEncoder encoder = new PngBitmapEncoder(); + encoder.Frames.Add(BitmapFrame.Create(img)); + var tmp = TempHelper.GetTempFileName(); + using (var fs = File.OpenWrite(tmp)) encoder.Save(fs); + return tmp; + } + return string.Empty; + } + + private static string GetHash(string input) + { + var bytes = Encoding.UTF8.GetBytes(input); + using (var sha1 = SHA1.Create()) bytes = sha1.ComputeHash(bytes); + return BitConverter.ToString(bytes).Replace("-", string.Empty).ToLower(); + } + + [DllImport("winmm.dll")] + public static extern uint mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, IntPtr hWndCallback); + + public async Task PlaySound(string url) + { + var dir = Path.Combine(TempHelper.Root, "Sounds"); + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + var fn = Path.Combine(dir, GetHash(url) + ".mp3"); + if (!File.Exists(fn)) + { + using var ms = await HttpClient.GetStreamAsync(url); + using var fs = File.OpenWrite(fn); + await ms.CopyToAsync(fs); + } + mciSendString(@"close temp_alias", null, 0, IntPtr.Zero); + mciSendString($@"open ""{fn}"" alias temp_alias", null, 0, IntPtr.Zero); + mciSendString("play temp_alias", null, 0, IntPtr.Zero); + } +} diff --git a/LuYao.Toolkit/Services/TongjiServiceProvider.cs b/LuYao.Toolkit/Services/TongjiServiceProvider.cs new file mode 100644 index 0000000..8ffed90 --- /dev/null +++ b/LuYao.Toolkit/Services/TongjiServiceProvider.cs @@ -0,0 +1,172 @@ +using NewLife.Reflection; +using NewLife.Xml; +using Newtonsoft.Json; +using System; +using System.Linq; +using System.Net.Http; +using System.Net; +using System.Windows.Forms; +using System.Collections.Generic; + +namespace LuYao.Toolkit.Services; + +public static class TongjiServiceProvider +{ + public class TongjiConfig : XmlConfig + { + public int LastVisitTime { get; set; } + public string Detail { get; set; } + public CookieContainer GetCookie() + { + if (string.IsNullOrWhiteSpace(Detail)) return new CookieContainer(); + var cookie = new CookieContainer(); + var collection = new CookieCollection(); + var list = JsonConvert.DeserializeObject(this.Detail); + foreach (var item in list) + { + collection.Add(item.ToCookie()); + } + cookie.Add(collection); + return cookie; + } + public void SetCookie(CookieContainer cookie) + { + if (cookie == null) throw new ArgumentNullException(nameof(cookie)); + var collection = cookie.GetAllCookies(); + var json = JsonConvert.SerializeObject(collection.Select(i => new CookieInfo(i))); + this.Detail = json; + } + } + private static CookieContainer Cookie { get; } + static TongjiServiceProvider() + { + Cookie = TongjiConfig.Current.GetCookie(); + HttpClient = new HttpClient(new HttpClientHandler + { + UseCookies = true, + CookieContainer = Cookie + }, true); + HttpClient.DefaultRequestHeaders.UserAgent.ParseAdd(GetUserAgent()); + HttpClient.DefaultRequestHeaders.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); + HttpClient.DefaultRequestHeaders.AcceptLanguage.ParseAdd("zh-CN,zh;q=0.9,en;q=0.8,fr;q=0.7,pt;q=0.6,so;q=0.5,de;q=0.4,en-US;q=0.3,ko;q=0.2,ja;q=0.1,zh-TW;q=0.1,und;q=0.1,is;q=0.1"); + +#if DEBUG + _fail = int.MaxValue; +#endif + } + public class CookieInfo + { + public CookieInfo() { } + public CookieInfo(Cookie cookie) + { + this.Name = cookie.Name; + this.Value = cookie.Value; + this.Path = cookie.Path; + this.Domain = cookie.Domain; + } + public string Name { get; set; } + public string Value { get; set; } + public string Path { get; set; } + public string Domain { get; set; } + public Cookie ToCookie() => new Cookie(this.Name, this.Value, this.Path, this.Domain); + } + private static void SaveCookie() + { + var cfg = TongjiConfig.Current; + cfg.SetCookie(Cookie); + cfg.SaveAsync(); + } + private static int _fail = 0; + private static int _lastPageVisitTime = 0; + private static HttpClient HttpClient { get; } + private static string GetUserAgent() => $"Mozilla/5.0 (Windows NT {Environment.OSVersion.Version.Major}.{Environment.OSVersion.Version.Minor}; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{AssemblyX.Entry.Version} Safari/537.36"; + private static string _prev = string.Empty; + + public static async void Tongji(string func) + { + if (_fail >= 10) return; + var link = $"https://luyao.coderbusy.com/app/{func}"; + if (link == _prev) return; + int currentPageVisitTime = GetSecondsSinceEpoch(DateTime.Now); + int lastPageVisitTime = _lastPageVisitTime; + var info = new Info(); + var cfg = TongjiConfig.Current; + if (cfg.LastVisitTime > 0) info.LastVisitTime = cfg.LastVisitTime; + cfg.LastVisitTime = currentPageVisitTime; + _lastPageVisitTime = currentPageVisitTime; + info.SourceType = GetSourceType(currentPageVisitTime, lastPageVisitTime); + info.IsNewVisit = (info.SourceType == 4) ? 0 : 1; + info.Data["u"] = link; + if (!string.IsNullOrWhiteSpace(_prev)) info.Data["su"] = _prev; + _prev = link; + var screen = Screen.PrimaryScreen; + info.Data["ds"] = $"{screen.Bounds.Width}x{screen.Bounds.Height}"; + info.Data["cl"] = $"{screen.BitsPerPixel}-bit"; + var target = $"http://hm.baidu.com/hm.gif?{info.ToQueryString()}"; + try + { + using (var request = new HttpRequestMessage(HttpMethod.Get, target)) + { + request.Headers.Referrer = new Uri(link); + using (var response = await HttpClient.SendAsync(request)) + { + if (response.IsSuccessStatusCode) + { + using var _ = await response.Content.ReadAsStreamAsync(); + SaveCookie(); + } + } + } + _fail = 0; + } + catch (Exception) + { + System.Threading.Interlocked.Increment(ref _fail); + } + } + #region MyRegion + + private const string Version = "wap-1-0.1"; + private const int VisitDuration = 1800; + private static String GetRandomNumber() + { + Random RandomClass = new Random(); + return RandomClass.Next(0x7fffffff).ToString(); + } + + private static int GetSecondsSinceEpoch(DateTime time) + { + return (int)(time - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds; + } + + private static int GetSourceType(int currentPageVisitTime, int lastPageVisitTime) + { + if (currentPageVisitTime - lastPageVisitTime > VisitDuration) + { + return 1; + } + else + { + return 4; + } + } + private class Info + { + public int? LastVisitTime { get; set; } + public int SourceType { get; set; } + public int IsNewVisit { get; set; } + public SortedDictionary Data { get; } = new SortedDictionary(); + public string ToQueryString() + { + var nv = System.Web.HttpUtility.ParseQueryString("si=0d558ebb1f987e8cd4ce83298458d9c6&et=0"); + nv["nv"] = this.IsNewVisit.ToString(); + nv["st"] = this.SourceType.ToString(); + nv["v"] = Version; + nv["rnd"] = GetRandomNumber(); + if (LastVisitTime != null) nv["lt"] = LastVisitTime.ToString(); + foreach (var item in Data) nv[item.Key] = item.Value; + return nv.ToString(); + } + } + #endregion +} diff --git a/LuYao.Toolkit/Tabs/Explorer/Index.xaml b/LuYao.Toolkit/Tabs/Explorer/Index.xaml new file mode 100644 index 0000000..cc6034e --- /dev/null +++ b/LuYao.Toolkit/Tabs/Explorer/Index.xaml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Tabs/Explorer/Index.xaml.cs b/LuYao.Toolkit/Tabs/Explorer/Index.xaml.cs new file mode 100644 index 0000000..53eb85f --- /dev/null +++ b/LuYao.Toolkit/Tabs/Explorer/Index.xaml.cs @@ -0,0 +1,17 @@ +using LuYao.Toolkit.Views; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Tabs.Explorer +{ + ///

+ /// Index.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Tabs.Explorer.Index)] + public partial class Index : UserControl + { + public Index() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Tabs/Navs/Index.xaml b/LuYao.Toolkit/Tabs/Navs/Index.xaml new file mode 100644 index 0000000..476af27 --- /dev/null +++ b/LuYao.Toolkit/Tabs/Navs/Index.xaml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Tabs/Navs/Index.xaml.cs b/LuYao.Toolkit/Tabs/Navs/Index.xaml.cs new file mode 100644 index 0000000..fa0b99d --- /dev/null +++ b/LuYao.Toolkit/Tabs/Navs/Index.xaml.cs @@ -0,0 +1,30 @@ +using LuYao.Toolkit.Views; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Tabs.Navs +{ + /// + /// Index.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Tabs.Navs.Index)] + public partial class Index : UserControl + { + public Index() + { + InitializeComponent(); + } + } +} diff --git a/LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItem.cs b/LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItem.cs new file mode 100644 index 0000000..aea6b07 --- /dev/null +++ b/LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItem.cs @@ -0,0 +1,53 @@ +using LuYao.Toolkit.Rdm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Forms.Integration; +using System.Windows.Media; + +namespace LuYao.Toolkit.Tabs.Rdp.Controls; + +public class RdpTabItem : HandyControl.Controls.TabItem +{ + public RdpTabItem(Guid id, IRdpConnection connection) + { + this.Id = id; + this.Connection = connection ?? throw new ArgumentNullException(nameof(connection)); + _session = new RdpSession() { RdpConnection = connection }; + this.Header = new RdpTabItemHeader(connection, _session); + this.Content = new WindowsFormsHost + { + Child = _session, + Margin = new Thickness(0), + Padding = new Thickness(0), + HorizontalAlignment = HorizontalAlignment.Stretch, + VerticalAlignment = VerticalAlignment.Stretch, + }; + this.Closed += RdpTabItem_Closed; + } + + private void RdpTabItem_Closed(object sender, EventArgs e) + { + if (_session == null) return; + this.Dispatcher.BeginInvoke(() => + { + this._session.Release(); + }); + } + + private RdpSession _session; + public Guid Id { get; } + public IRdpConnection Connection { get; } + public void Connect() + { + this._session.Connect(); + } + public void Disconnect() + { + this._session.Disconnect(); + } +} diff --git a/LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItemHeader.cs b/LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItemHeader.cs new file mode 100644 index 0000000..0928f96 --- /dev/null +++ b/LuYao.Toolkit/Tabs/Rdp/Controls/RdpTabItemHeader.cs @@ -0,0 +1,91 @@ +using CommunityToolkit.Mvvm.Input; +using HandyControl.Controls; +using HandyControl.Interactivity; +using LuYao.Toolkit.Rdm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Tabs.Rdp.Controls +{ + /// + /// 按照步骤 1a 或 1b 操作,然后执行步骤 2 以在 XAML 文件中使用此自定义控件。 + /// + /// 步骤 1a) 在当前项目中存在的 XAML 文件中使用该自定义控件。 + /// 将此 XmlNamespace 特性添加到要使用该特性的标记文件的根 + /// 元素中: + /// + /// xmlns:MyNamespace="clr-namespace:LuYao.Toolkit.Tabs.Rdo.Controls" + /// + /// + /// 步骤 1b) 在其他项目中存在的 XAML 文件中使用该自定义控件。 + /// 将此 XmlNamespace 特性添加到要使用该特性的标记文件的根 + /// 元素中: + /// + /// xmlns:MyNamespace="clr-namespace:LuYao.Toolkit.Tabs.Rdo.Controls;assembly=LuYao.Toolkit.Tabs.Rdo.Controls" + /// + /// 您还需要添加一个从 XAML 文件所在的项目到此项目的项目引用, + /// 并重新生成以避免编译错误: + /// + /// 在解决方案资源管理器中右击目标项目,然后依次单击 + /// “添加引用”->“项目”->[浏览查找并选择此项目] + /// + /// + /// 步骤 2) + /// 继续操作并在 XAML 文件中使用控件。 + /// + /// + /// + /// + public class RdpTabItemHeader : Control + { + static RdpTabItemHeader() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(RdpTabItemHeader), new FrameworkPropertyMetadata(typeof(RdpTabItemHeader))); + } + public RdpTabItemHeader(IRdpConnection connection, RdpSession session) + { + this.Connection = connection; + this.RdpSession = session; + this.RdpSession.StatusChanged += RdpSession_StatusChanged; + this.ConnectCommand = new RelayCommand(this.Connect); + this.DisconnectCommand = new RelayCommand(this.Disconnect); + } + + private void RdpSession_StatusChanged(object sender, StatusChangedEventArgs e) + { + this.Status = e.Status; + } + public IRdpConnection Connection { get; } + public RdpSession RdpSession { get; } + public RdpConnectStatus Status + { + get { return (RdpConnectStatus)GetValue(StatusProperty); } + set { SetValue(StatusProperty, value); } + } + + // Using a DependencyProperty as the backing store for Status. This enables animation, styling, binding, etc... + public static readonly DependencyProperty StatusProperty = DependencyProperty.Register("Status", typeof(RdpConnectStatus), typeof(RdpTabItemHeader), new PropertyMetadata(RdpConnectStatus.Pending)); + public ICommand ConnectCommand { get; } + public ICommand DisconnectCommand { get; } + private void Connect() + { + this.RdpSession.Connect(); + } + private void Disconnect() + { + this.RdpSession.Disconnect(); + } + } +} diff --git a/LuYao.Toolkit/Tabs/Rdp/Index.xaml b/LuYao.Toolkit/Tabs/Rdp/Index.xaml new file mode 100644 index 0000000..37c9d03 --- /dev/null +++ b/LuYao.Toolkit/Tabs/Rdp/Index.xaml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/LuYao.Toolkit/Tabs/Rdp/Index.xaml.cs b/LuYao.Toolkit/Tabs/Rdp/Index.xaml.cs new file mode 100644 index 0000000..9ca4c2c --- /dev/null +++ b/LuYao.Toolkit/Tabs/Rdp/Index.xaml.cs @@ -0,0 +1,50 @@ +using LuYao.Toolkit.Rdm; +using LuYao.Toolkit.Rdm.Events; +using LuYao.Toolkit.Tabs.Rdp.Controls; +using LuYao.Toolkit.Views; +using Prism.Events; +using Prism.Services.Dialogs; +using System; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Tabs.Rdp +{ + /// + /// Index.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Tabs.Rdp.Index)] + public partial class Index : UserControl + { + public Index() + { + InitializeComponent(); + OpenRdpConnection += Index_OpenRdpConnection; + } + + private void Index_OpenRdpConnection(object sender, Guid id) + { + foreach (RdpTabItem item in SessionTabControl.Items) + { + if (item.Id == id) + { + this.SessionTabControl.SelectedItem = item; + return; + } + } + var e = Entities.RdpConnection.FindById(id); + if (e == null) return; + var rdp = new RdpConnection(e); + var tab = new RdpTabItem(id, rdp); + this.SessionTabControl.Items.Add(tab); + this.SessionTabControl.SelectedItem = tab; + tab.Connect(); + } + + private static event EventHandler OpenRdpConnection; + public static void Open(Guid id) + { + if (OpenRdpConnection == null) return; + OpenRdpConnection.Invoke(null, id); + } + } +} diff --git a/LuYao.Toolkit/Tabs/Session/Index.xaml b/LuYao.Toolkit/Tabs/Session/Index.xaml new file mode 100644 index 0000000..75b3090 --- /dev/null +++ b/LuYao.Toolkit/Tabs/Session/Index.xaml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Tabs/Session/Index.xaml.cs b/LuYao.Toolkit/Tabs/Session/Index.xaml.cs new file mode 100644 index 0000000..e837f42 --- /dev/null +++ b/LuYao.Toolkit/Tabs/Session/Index.xaml.cs @@ -0,0 +1,86 @@ +using LuYao.Toolkit.Events; +using LuYao.Toolkit.Views; +using Prism.Events; +using Prism.Regions; +using Prism.Services.Dialogs; +using System; +using System.Windows.Controls; + +namespace LuYao.Toolkit.Tabs.Session +{ + /// + /// Index.xaml 的交互逻辑 + /// + [ViewName(ViewNames.Tabs.Session.Index)] + public partial class Index : UserControl + { + private IEventAggregator _eventAggregator; + private IRegionManager _regionManager; + private IDialogService _dialogService; + public Index(IEventAggregator eventAggregator, IRegionManager regionManager, IDialogService dialogService) + { + _eventAggregator = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator)); + _regionManager = regionManager; + _dialogService = dialogService; + InitializeComponent(); + _eventAggregator.GetEvent().Subscribe(this.OnOpenFunctionItem); + } + + private void OnOpenFunctionItem(OpenFunctionItemEventPayload item) + { + if (item.IsMultiboxing) + { + //不支持多开 + if (item.Item.Multiboxing == false) return; + var p = new DialogParameters { }; + p.Add("Function", item.Item); + _dialogService.Show(nameof(Dialogs.MultiboxingDialog), p, (result) => { }, nameof(Dialogs.MultiboxingDialogWindow)); + return; + } + this.txtTitle.Text = item.Item.Title; + if (item.IsNewSession == false) + { + if (_regionManager.Regions.ContainsRegionWithName(Regions.RegionNames.WorkingRegion)) + { + _regionManager.RequestNavigate(Regions.RegionNames.WorkingRegion, item.Item.View); + } + else + { + _regionManager.RegisterViewWithRegion(Regions.RegionNames.WorkingRegion, item.Item.View); + } + } + } + + private void txtKeyword_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) + { + switch (e.Key) + { + case System.Windows.Input.Key.Up: + Move(-1); + break; + case System.Windows.Input.Key.Down: + Move(1); + break; + default: + if (this.lbSuggestions.Items.Count > 0 && this.lbSuggestions.SelectedIndex < 0) this.lbSuggestions.SelectedIndex = 0; + break; + } + } + private void Move(int i) + { + if (this.lbSuggestions.Visibility != System.Windows.Visibility.Visible) return; + var count = this.lbSuggestions.Items.Count; + var idx = this.lbSuggestions.SelectedIndex; + switch (i) + { + case 1: + idx++; + break; + case -1: + idx--; + break; + } + if (idx >= 0 && idx < count) this.lbSuggestions.SelectedIndex = idx; + } + } +} diff --git a/LuYao.Toolkit/Themes/Basic/Converters.xaml b/LuYao.Toolkit/Themes/Basic/Converters.xaml new file mode 100644 index 0000000..d4ab192 --- /dev/null +++ b/LuYao.Toolkit/Themes/Basic/Converters.xaml @@ -0,0 +1,15 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Basic/Geometries.xaml b/LuYao.Toolkit/Themes/Basic/Geometries.xaml new file mode 100644 index 0000000..d235a9f --- /dev/null +++ b/LuYao.Toolkit/Themes/Basic/Geometries.xaml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Basic/MaterialToGeometry.linq b/LuYao.Toolkit/Themes/Basic/MaterialToGeometry.linq new file mode 100644 index 0000000..217b8b8 --- /dev/null +++ b/LuYao.Toolkit/Themes/Basic/MaterialToGeometry.linq @@ -0,0 +1,19 @@ + + MahApps.Metro.IconPacks.Material + MahApps.Metro.IconPacks.Converter + System.Windows.Data + MahApps.Metro.IconPacks + System.Windows.Media + System.Globalization + + +var idx = PackIconMaterialDataFactory.DataIndex.Value!; +var names = Enum.GetNames(typeof(PackIconMaterialKind)); +foreach (var n in names) +{ + var kind = (PackIconMaterialKind)Enum.Parse(typeof(PackIconMaterialKind), n); + if (idx.TryGetValue(kind, out var path)) + { + Console.WriteLine("{1}", n, path); + } +} \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Controls/DataGrid.xaml b/LuYao.Toolkit/Themes/Controls/DataGrid.xaml new file mode 100644 index 0000000..aed705e --- /dev/null +++ b/LuYao.Toolkit/Themes/Controls/DataGrid.xaml @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Controls/FormItemContainer.xaml b/LuYao.Toolkit/Themes/Controls/FormItemContainer.xaml new file mode 100644 index 0000000..919a1c5 --- /dev/null +++ b/LuYao.Toolkit/Themes/Controls/FormItemContainer.xaml @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Controls/MasterDetailLayout.xaml b/LuYao.Toolkit/Themes/Controls/MasterDetailLayout.xaml new file mode 100644 index 0000000..5773bc3 --- /dev/null +++ b/LuYao.Toolkit/Themes/Controls/MasterDetailLayout.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Controls/RdpTabItemHeader.xaml b/LuYao.Toolkit/Themes/Controls/RdpTabItemHeader.xaml new file mode 100644 index 0000000..7d70033 --- /dev/null +++ b/LuYao.Toolkit/Themes/Controls/RdpTabItemHeader.xaml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Controls/TextBlockWithIconBox.xaml b/LuYao.Toolkit/Themes/Controls/TextBlockWithIconBox.xaml new file mode 100644 index 0000000..efb2a07 --- /dev/null +++ b/LuYao.Toolkit/Themes/Controls/TextBlockWithIconBox.xaml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Controls/TextEditor.xaml b/LuYao.Toolkit/Themes/Controls/TextEditor.xaml new file mode 100644 index 0000000..a6f5e67 --- /dev/null +++ b/LuYao.Toolkit/Themes/Controls/TextEditor.xaml @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Controls/Window.xaml b/LuYao.Toolkit/Themes/Controls/Window.xaml new file mode 100644 index 0000000..08f859f --- /dev/null +++ b/LuYao.Toolkit/Themes/Controls/Window.xaml @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Generic.txt b/LuYao.Toolkit/Themes/Generic.txt new file mode 100644 index 0000000..c34f5bb --- /dev/null +++ b/LuYao.Toolkit/Themes/Generic.txt @@ -0,0 +1,10 @@ +Basic\Converters.xaml +Basic\Geometries.xaml +# -------------------------------------- +Controls\DataGrid.xaml +Controls\FormItemContainer.xaml +Controls\RdpTabItemHeader.xaml +Controls\TextEditor.xaml +Controls\Window.xaml +Controls\TextBlockWithIconBox.xaml +Controls\MasterDetailLayout.xaml \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Generic.xaml b/LuYao.Toolkit/Themes/Generic.xaml new file mode 100644 index 0000000..8a76d65 --- /dev/null +++ b/LuYao.Toolkit/Themes/Generic.xaml @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/SkinDark.xaml b/LuYao.Toolkit/Themes/SkinDark.xaml new file mode 100644 index 0000000..f578617 --- /dev/null +++ b/LuYao.Toolkit/Themes/SkinDark.xaml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/SkinDefault.xaml b/LuYao.Toolkit/Themes/SkinDefault.xaml new file mode 100644 index 0000000..ffa4d8e --- /dev/null +++ b/LuYao.Toolkit/Themes/SkinDefault.xaml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/Theme.xaml b/LuYao.Toolkit/Themes/Theme.xaml new file mode 100644 index 0000000..40329be --- /dev/null +++ b/LuYao.Toolkit/Themes/Theme.xaml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/LuYao.Toolkit/Themes/ThemeManager.cs b/LuYao.Toolkit/Themes/ThemeManager.cs new file mode 100644 index 0000000..9b91d50 --- /dev/null +++ b/LuYao.Toolkit/Themes/ThemeManager.cs @@ -0,0 +1,52 @@ +using HandyControl.Data; +using HandyControl.Tools; +using LuYao.Toolkit.Behaviors; +using System; +using System.Windows; + +namespace LuYao.Toolkit.Themes; + +internal class ThemeManager +{ + public static readonly ThemeManager Current = new ThemeManager(); + public static event EventHandler ThemeChanged; + private static void OnThemeChanged(object sender,ThemeMode theme) + { + ThemeChanged?.Invoke(sender, theme); + } + private ThemeMode _theme = ThemeMode.Light; + public ThemeMode Theme + { + get { return _theme; } + set + { + if (_theme == value) return; + _theme = value; + SkinType skin = SkinType.Default; + switch (_theme) + { + case ThemeMode.Light: skin = SkinType.Default; break; + case ThemeMode.Dark: skin = SkinType.Dark; break; + } + var dics = Application.Current.Resources.MergedDictionaries; + var skins0 = dics[0]; + skins0.MergedDictionaries.Clear(); + skins0.MergedDictionaries.Add(ResourceHelper.GetSkin(skin)); + skins0.MergedDictionaries.Add(ResourceHelper.GetSkin(typeof(App).Assembly, "Themes", skin)); + + var skins1 = dics[1]; + skins1.MergedDictionaries.Clear(); + skins1.MergedDictionaries.Add(new ResourceDictionary + { + Source = new Uri("pack://application:,,,/HandyControl;component/Themes/Theme.xaml") + }); + skins1.MergedDictionaries.Add(new ResourceDictionary + { + Source = new Uri("pack://application:,,,/LuYao.Toolkit;component/Themes/Theme.xaml") + }); + + foreach (Window win in Application.Current.Windows) win.OnApplyTemplate(); + OnThemeChanged(this, _theme); + } + } +} diff --git a/LuYao.Toolkit/Themes/XamlCombine.exe b/LuYao.Toolkit/Themes/XamlCombine.exe new file mode 100644 index 0000000000000000000000000000000000000000..af458ffb9aa900e4444cd340ebd96f87aa63c8bf GIT binary patch literal 14336 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 h0EVrd{s?Waj`{Df_vnEg?(g +{ + public ThemeMode Theme { get; set; } = ThemeMode.Light; + public bool CheckForUpdatesOnStartup { get; set; } = true; + public bool CodeEditorShowLineNumbers { get; set; } = true; + public bool CodeEditorWordWrap { get; set; } = false; + + public override void Save() + { + base.Save(); + Saved?.Invoke(null, EventArgs.Empty); + } + + public static event EventHandler Saved; +} diff --git a/LuYao.Toolkit/Update/FindNewVersionDialog.xaml b/LuYao.Toolkit/Update/FindNewVersionDialog.xaml new file mode 100644 index 0000000..d3d635d --- /dev/null +++ b/LuYao.Toolkit/Update/FindNewVersionDialog.xaml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Update/FindNewVersionDialog.xaml.cs b/LuYao.Toolkit/Update/FindNewVersionDialog.xaml.cs new file mode 100644 index 0000000..dd459e0 --- /dev/null +++ b/LuYao.Toolkit/Update/FindNewVersionDialog.xaml.cs @@ -0,0 +1,34 @@ +using HandyControl.Tools; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Update; + +/// +/// FindNewVersionDialog.xaml 的交互逻辑 +/// +public partial class FindNewVersionDialog : UserControl +{ + public FindNewVersionDialog() + { + InitializeComponent(); + this.Loaded += FindNewVersionDialog_Loaded; + } + + private void FindNewVersionDialog_Loaded(object sender, RoutedEventArgs e) + { + Window.GetWindow(this).Topmost = true; + } +} diff --git a/LuYao.Toolkit/Update/FindNewVersionDialogViewModel.cs b/LuYao.Toolkit/Update/FindNewVersionDialogViewModel.cs new file mode 100644 index 0000000..86fd097 --- /dev/null +++ b/LuYao.Toolkit/Update/FindNewVersionDialogViewModel.cs @@ -0,0 +1,49 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.IO.Updating; +using Prism.Services.Dialogs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Update; + +public partial class FindNewVersionDialogViewModel : ViewModelBase, IDialogAware +{ + public string Title => "发现新版本"; + + public event Action RequestClose; + protected virtual void OnRequestClose(IDialogResult obj) + { + RequestClose?.Invoke(obj); + } + + public bool CanCloseDialog() => true; + + public void OnDialogClosed() + { + } + + public void OnDialogOpened(IDialogParameters parameters) + { + var pkg = parameters.GetValue("UpdatePackage"); + this.Description = pkg.Description; + } + + [ObservableProperty] + private string _description; + + [RelayCommand] + private void Update() + { + OnRequestClose(new DialogResult(ButtonResult.Yes)); + } + + [RelayCommand] + private void Ignore() + { + OnRequestClose(new DialogResult(ButtonResult.Ignore)); + } +} diff --git a/LuYao.Toolkit/Update/Update.xaml b/LuYao.Toolkit/Update/Update.xaml new file mode 100644 index 0000000..7008665 --- /dev/null +++ b/LuYao.Toolkit/Update/Update.xaml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/LuYao.Toolkit/Update/Update.xaml.cs b/LuYao.Toolkit/Update/Update.xaml.cs new file mode 100644 index 0000000..0257ae0 --- /dev/null +++ b/LuYao.Toolkit/Update/Update.xaml.cs @@ -0,0 +1,29 @@ +using LuYao.IO.Updating; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace LuYao.Toolkit.Update; + +/// +/// Update.xaml 的交互逻辑 +/// +public partial class Update : UserControl +{ + public Update(UpdatePackage package) + { + InitializeComponent(); + this.DataContext = new UpdateViewModel(package); + } +} diff --git a/LuYao.Toolkit/Update/UpdateViewModel.cs b/LuYao.Toolkit/Update/UpdateViewModel.cs new file mode 100644 index 0000000..e328c32 --- /dev/null +++ b/LuYao.Toolkit/Update/UpdateViewModel.cs @@ -0,0 +1,195 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using LuYao.IO.Updating; +using LuYao.Toolkit.IO; +using LuYao.Toolkit.Services; +using NewLife.Log; +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; + +namespace LuYao.Toolkit.Update; + +public partial class UpdateViewModel : ViewModelBase +{ + [INotifyPropertyChanged] + public partial class UpdateLog + { + [ObservableProperty] + private string _message; + } + public class ReplaceTask + { + public string Source { get; set; } + public string Target { get; set; } + } + public UpdateViewModel(UpdatePackage package) + { + this.Package = package ?? throw new ArgumentNullException(nameof(package)); + this.Execute(); + } + private async void Execute() + { + try + { + await UpdateAsync(); + this.Status = UpdateStatus.Success; + } + catch (Exception e) + { + XTrace.WriteLine("更新失败"); + XTrace.WriteException(e); + this.Status = UpdateStatus.Fail; + NotifyService.Fail(e); + } + } + public UpdatePackage Package { get; } + public ObservableCollection Logs { get; } = new ObservableCollection(); + + [ObservableProperty] + [NotifyCanExecuteChangedFor(nameof(RestartCommand))] + private UpdateStatus _status; + + [ObservableProperty] + private long _total; + + [ObservableProperty] + private long _current; + + private Queue _replaceTasks; + + private bool CanRestart => this.Status == UpdateStatus.Success; + + [RelayCommand(CanExecute = nameof(CanRestart))] + private void Restart() + { + if (_replaceTasks != null) + { + var log = new UpdateLog { Message = "替换文件" }; + Logs.Add(log); + while (_replaceTasks.Count > 0) + { + var task = _replaceTasks.Dequeue(); + if (string.IsNullOrWhiteSpace(task.Target)) continue; + var dir = Path.GetDirectoryName(task.Target); + var name = Path.GetFileName(task.Target); + log.Message = $"替换文件:{name}"; + if (!string.IsNullOrWhiteSpace(dir) && !Directory.Exists(dir)) + { + Directory.CreateDirectory(dir); + } + + if (File.Exists(task.Target)) + { + var del = task.Target + ".del"; + if (File.Exists(del)) File.Delete(del); + File.Move(task.Target, del); + } + + File.Copy(task.Source, task.Target, true); + } + } + + System.Windows.Forms.Application.Restart(); + System.Windows.Application.Current.Shutdown(); + } + private async Task UpdateAsync() + { + Status = UpdateStatus.Checking; + Logs.Clear(); + var replace = new Queue(); + var checkLog = new UpdateLog { Message = "文件对比..." }; + Logs.Add(checkLog); + var root = AppDomain.CurrentDomain.BaseDirectory; + var queue = new Queue(); + await CheckFiles(checkLog, root, queue); + + checkLog.Message = $"对比完毕,待更新:{queue.Count}"; + + Status = UpdateStatus.Updating; + this.Total = queue.Count > 0 ? queue.Sum(i => i.FileSize) : 0; + this.Current = 0; + using var http = new HttpClient(); + while (queue.Count > 0) + { + var file = queue.Dequeue(); + var fileLog = new UpdateLog { Message = $"处理文件:{file.FilePath}" }; + Logs.Add(fileLog); + await Task.Delay(100); + var url = (string.IsNullOrWhiteSpace(Package.BaseUrl) ? UpdateConfig.Endpoint : Package.BaseUrl) + "/" + file.Url; + var tmp = TempHelper.GetTempFileName(file.FileHash + ".tmp"); + if (!File.Exists(tmp) || await UpdatePackageHelper.Hash(tmp) != file.FileHash) + { + fileLog.Message = $"下载文件:{file.FilePath}"; + using (var ms = await http.GetStreamAsync(url)) + { + using (var gzip = new GZipStream(ms, CompressionMode.Decompress)) + { + using (var fs = File.OpenWrite(tmp)) + { + fs.SetLength(0); + var buffer = new byte[4096]; + int read; + while ((read = await gzip.ReadAsync(buffer, 0, buffer.Length)) > 0) + { + await fs.WriteAsync(buffer, 0, read); + Current += read; + } + } + } + } + } + else + { + Current += file.FileSize; + } + fileLog.Message = $"下载完毕:{file.FilePath}"; + replace.Enqueue(new ReplaceTask + { + Source = tmp, + Target = Path.Combine(root, file.FilePath) + }); + } + Logs.Add(new UpdateLog { Message = "更新下载完毕" }); + _replaceTasks = replace; + } + + private async Task CheckFiles(UpdateLog checkLog, string root, Queue queue) + { + foreach (var file in Package.UpdateFilePackages) + { + checkLog.Message = $"对比文件:{file.FilePath}"; + var fileName = Path.Combine(root, file.FilePath); + var fileInfo = new FileInfo(fileName); + if (!fileInfo.Exists) + { + queue.Enqueue(file); + } + else if (fileInfo.Length != file.FileSize) + { + queue.Enqueue(file); + } + else if (!string.IsNullOrWhiteSpace(file.FileVersion)) + { + //文件版本相同的情况下,就不用对比哈希值了。 + var version = FileVersionInfo.GetVersionInfo(fileName); + if (version.FileVersion != file.FileVersion) + { + queue.Enqueue(file); + } + } + else if (file.FileHash != await UpdatePackageHelper.Hash(fileName)) + { + queue.Enqueue(file); + } + } + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..9cf8479 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# LuYao.Toolkit diff --git a/common.props b/common.props new file mode 100644 index 0000000..daa6e89 --- /dev/null +++ b/common.props @@ -0,0 +1,5 @@ + + + 4.3.15.57 + + \ No newline at end of file diff --git a/delete-bin-obj-folders.bat b/delete-bin-obj-folders.bat new file mode 100644 index 0000000..af6cf6f --- /dev/null +++ b/delete-bin-obj-folders.bat @@ -0,0 +1,20 @@ +@ECHO off +cls + +ECHO Deleting all BIN and OBJ folders... +ECHO. + +FOR /d /r . %%d in (bin,obj) DO ( + IF EXIST "%%d" ( + ECHO %%d | FIND /I "\node_modules\" > Nul && ( + ECHO.Skipping: %%d + ) || ( + ECHO.Deleting: %%d + rd /s/q "%%d" + ) + ) +) + +ECHO. +ECHO.BIN and OBJ folders have been successfully deleted. Press any key to exit. +pause > nul \ No newline at end of file diff --git a/libs/AxInterop.MSTSCLib.dll b/libs/AxInterop.MSTSCLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..2137f2c346ba716800944b646746bb6cbdbb68bf GIT binary patch literal 368640 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

3U0Cud7MS^}5Ulubl3$n{=+%Wxglt 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 literal 0 HcmV?d00001 diff --git a/libs/LuYao.Common.deps.json b/libs/LuYao.Common.deps.json new file mode 100644 index 0000000..ed843b9 --- /dev/null +++ b/libs/LuYao.Common.deps.json @@ -0,0 +1,47 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v7.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v7.0": { + "LuYao.Common/1.1.14": { + "dependencies": { + "ConfigureAwait.Fody": "3.3.2", + "Fody": "6.6.4" + }, + "runtime": { + "LuYao.Common.dll": {} + } + }, + "ConfigureAwait.Fody/3.3.2": { + "dependencies": { + "Fody": "6.6.4" + } + }, + "Fody/6.6.4": {} + } + }, + "libraries": { + "LuYao.Common/1.1.14": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ConfigureAwait.Fody/3.3.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vzGcpFU7uY4SbdB1Q68sFqv52HU5V1l39bF1rw6BIb7Os/DRLZa5ObV1yf/CNuTXj8IZjqJQ7PnTzSUiI/W49A==", + "path": "configureawait.fody/3.3.2", + "hashPath": "configureawait.fody.3.3.2.nupkg.sha512" + }, + "Fody/6.6.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vLZS+oa+ndUHYPlx/8n9bBTT3dHkCF0riml4paKq4D663+cZd47x1uagQo32D/gKFZ/sfmV1oqKaLmH0elxq4A==", + "path": "fody/6.6.4", + "hashPath": "fody.6.6.4.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/libs/LuYao.Common.dll b/libs/LuYao.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..fb1f1bed74a7d2d455f8c1a236d545388d5eef63 GIT binary patch literal 128000 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 QKF0f8{{O%K`Y`Z+0&{-P7ytkO literal 0 HcmV?d00001 diff --git a/libs/LuYao.Common.pdb b/libs/LuYao.Common.pdb new file mode 100644 index 0000000000000000000000000000000000000000..55af2d8d1eb192f377c56fa9ba78fea17ec355aa GIT binary patch literal 58844 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 j!nn;&ag_d=b|%6WHi`UL22J-Ljw + + + LuYao.Common + + + +

+ 释放基类 + + + + + 是否已释放 + + + + + 释放资源 + + 是否释放中 + + + + 释放资源。执行与释放或重置非托管资源关联的应用程序定义的任务 + + + + + 析构函数 + + + + + This class can be used to provide an action when + Dipose method is called. + + + + + Creates a new object. + + Action to be executed when this object is disposed. + + + + Strongly typed version of Enum with Parsing and performance improvements. + + Type of Enum + + + + 根据文件后缀来获取MIME类型字符串 + + 文件后缀 + + + + + 升级包的校验值 + + + + + 升级包大小 + + + + + 升级包路径 + + + + + 文件路径 + + + + + 文件大小 + + + + + 文件校验值 + + + + + 文件版本 + + + + + 代理服务器源 + + + + + 使用代理服务器创建 + + + + + + + 从 提取 + + + + + + + 重置 以便下次重用 + + + + + + 基于 Http 链接的数据源 + + + + + 提取地址 + + + + + 用户名 + + + + + 密码 + + + + + 代理服务器源 + + + + + 当发现新的代理服务器时 + + + + + 当代理服务器失效时 + + + + + 默认提取间隔 + + + + + 默认可用有效期 + + + + + 代理服务器提取间隔 + + + + + 代理服务器有效期 + + + + + 刷新数据源 + + + + + Implements a 32-bit CRC hash algorithm compatible with Zip etc. + + + Crc32 should only be used for backward compatibility with older file formats + and algorithms. It is not secure enough for new applications. + If you need to call multiple times for the same data either use the HashAlgorithm + interface or remember that the result of one Compute call needs to be ~ (XOR) before + being passed in as the seed for the next Compute call. + + + + + Create a new with a and . + + + + + Create a new with a supplied polynomial, seed, and algorithm options.. + Note: the "default" CRC32 algorithm reflects both input and output, then flips all bits (XorOut = 0xFFFFFFFF). + + The polynomial to use in calculating. + The initial seed to start from. + + + + + + + + + + + + + + + + Calculate the for a given with the + and . + + The buffer to calcuate a CRC32 for. + The CRC32 for the buffer. + + + + Calculate the for a given with a + specified and . + + The initial seed to start from. + The buffer to calcuate a CRC32 for. + The CRC32 for the buffer. + + + + Calculate the for a given with a + specified and . + + The initial seed to start from. + The buffer to calcuate a CRC32 for. + The CRC32 for the buffer. + + + + Initialize a CRC32 calculation table for a given polynomial. + + The polynomial to calculate a table for. + A table to be used in calculating a CRC32. + + + + Calculate an inverted CRC32 for a given using a polynomial-derived . + + The polynomial-derived table such as from . + The initial seed to start from. + The buffer to calculate the CRC32 from. + What position within the to start calculating from. + How many bytes within the to read in calculating the CRC32. + The bit-inverted CRC32. + This hash is bit-inverted. Use other methods in this class or the result from this method. + + + + Convert a to a taking care + to reverse the bytes on little endian processors. + + The to convert. + The containing the converted bytes. + + + + Helper to support bitwise reflecting (reversing) of bytes. + + + + + + + + 高性能低碰撞Murmur128哈希算法,Redis等大量使用,比MD5要好。 + + + + + 字符串压缩工具 + + + + + 注册一个压缩器 + + + + + + + 注册一个编码器 + + + + + + + 压缩器 + + + + + 编码器 + + + + + 压缩字符串 + + 待压缩字符串 + 压缩器 + 编码器 + 压缩后的字符串 + + + + + 使用默认配置压缩字符串 + + + + + + + 解压缩字符串 + + + + + + + + zero-allocate itoa, dtoa, atoi, atod converters. + + + + + 0 ~ 9 + + + + + Is 0 ~ 9, '.', '+', '-'? + + + + + Convinient pattern of ReadIsBeginArrayWithVerify + while(!ReadIsEndArrayWithSkipValueSeparator) + + + + + Convinient pattern of ReadIsBeginObjectWithVerify + while(!ReadIsEndObjectWithSkipValueSeparator) + + + + ReadString + ReadIsNameSeparatorWithVerify + + + Get raw string-span(do not unescape) + + + Get raw string-span(do not unescape) + ReadIsNameSeparatorWithVerify + + + + Underlying bytes is may be a pooling buffer, be careful to use it. If lost reference or can not handled byte[], return null. + + + + + Underlying bytes is may be a pooling buffer, be careful to use it. If lost reference or can not handled byte[], return null. + + + + { + + + } + + + [ + + + ] + + + 0~9, - + + + " + + + t + + + f + + + n + + + , + + + : + + + + 从字符串中抽取 JSON ,自动判断 JSON 层级。 + + + + + + + : + + + WriteString + WriteNameSeparator + + + + C# implementation of ASCII85 encoding. + Based on C code from http://www.stillhq.com/cgi-bin/cvsweb/ascii85/ + + + Jeff Atwood + http://www.codinghorror.com/blog/archives/000410.html + + + + + + Suffix mark that identifies an encoded ASCII85 string, traditionally '~>' + + + + + Maximum line length for encoded ASCII85 string; + set to zero for one unbroken line. + + + + + Add the Prefix and Suffix marks when encoding, and enforce their presence for decoding + + + + + Decodes an ASCII85 encoded string into the original binary data + + ASCII85 encoded string + byte array of decoded binary data + + + + Encodes binary data into a plaintext ASCII85 format string + + binary data to encode + ASCII85 encoded string + + + + Encode a byte array with Base62 + + Byte array + Use inverted character set + Base62 string + + + + Decode a base62-encoded string + + Base62 string + Use inverted character set + Byte array + + + + datatable转List + + + + + + + + 截断毫秒部分 + + + + + 截断秒及之后部分 + + + + + 阶段分钟及之后部分 + + + + + 截断小时及之后部分 + + + + + 读取响应字符串,自动识别内容编码。 + + + + + + + Extract strings by using regular expressions. + + + + + Extract string by using regular expressions. If no match, return null. + + + + + Projects the specified string to an array by using regular expressions. + + + +

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