[
  {
    "path": ".gitattributes",
    "content": "# Git will handle the files in whatever way it thinks is best.\n# Overwrites global core.autocrlf git setting\n* text=auto"
  },
  {
    "path": ".github/workflows/main.yml",
    "content": "name: CI\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: windows-latest\n\n    steps:\n    - uses: actions/checkout@master\n    \n    - name: Build client\n      working-directory: ./FluentTerminal.Client\n      run: |\n        yarn\n        yarn build\n\n    - name: Setup MSBuild.exe\n      uses: microsoft/setup-msbuild@v1.0.2\n    \n    - name: MSBuild\n      run: msbuild FluentTerminal.sln -t:build -p:Configuration=Debug -p:Platform=x64 -m -restore\n"
  },
  {
    "path": ".gitignore",
    "content": "# Project specific\nFluentTerminal.App/Win32\nFluentTerminal.App/Client/\nFluentTerminal.Client/dist\n/.sonarqube\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore\n\n# User-specific files\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n\n# Visual Studio 2015 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUNIT\n*.VisualState.xml\nTestResult.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n**/Properties/launchSettings.json\n\n*_i.c\n*_p.c\n*_i.h\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# JustCode is a .NET coding add-in\n.JustCode\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# TODO: Comment the next line if you want to checkin your web deploy settings\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# The packages folder can be ignored because of Package Restore\n**/packages/*\n# except build/, which is used as an MSBuild target.\n!**/packages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/packages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules/\n\n# Typescript v1 declaration files\ntypings/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# JetBrains Rider\n.idea/\n*.sln.iml\n\n# CodeRush\n.cr/\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n\n!FluentTerminal.App/MoshExecutables/*\n"
  },
  {
    "path": "Explorer Context Menu Integration/Install.bat",
    "content": "reg add \"HKCU\\Software\\Classes\\Directory\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\nreg add \"HKCU\\Software\\Classes\\Directory\\Background\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\nreg add \"HKCU\\Software\\Classes\\Drive\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\nreg add \"HKCU\\Software\\Classes\\LibraryFolder\\Background\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\n"
  },
  {
    "path": "Explorer Context Menu Integration/Install_with_icon.bat",
    "content": "copy /y FluentTerminal.ico \"%LOCALAPPDATA%\\Microsoft\\WindowsApps\"\r\nreg add \"HKCU\\Software\\Classes\\Directory\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\r\nreg add \"HKCU\\Software\\Classes\\Directory\\shell\\Open Fluent Terminal here\" /v icon /t REG_SZ /d \"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\FluentTerminal.ico\" /f\r\nreg add \"HKCU\\Software\\Classes\\Directory\\Background\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\r\nreg add \"HKCU\\Software\\Classes\\Directory\\Background\\shell\\Open Fluent Terminal here\" /v icon /t REG_SZ /d \"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\FluentTerminal.ico\" /f\r\nreg add \"HKCU\\Software\\Classes\\Drive\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\r\nreg add \"HKCU\\Software\\Classes\\Drive\\shell\\Open Fluent Terminal here\" /v icon /t REG_SZ /d \"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\FluentTerminal.ico\" /f\r\nreg add \"HKCU\\Software\\Classes\\LibraryFolder\\Background\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\flute.exe\\\" new \\\"%%V\\\"\" /f\r\nreg add \"HKCU\\Software\\Classes\\LibraryFolder\\Background\\shell\\Open Fluent Terminal here\" /v icon /t REG_SZ /d \"%LOCALAPPDATA%\\Microsoft\\WindowsApps\\FluentTerminal.ico\" /f\r\n"
  },
  {
    "path": "Explorer Context Menu Integration/README.md",
    "content": "If you want a an icon for the context menu entries, download the .ico file and put in the same directory as the Install_with_icon.bat file then run it.\nThe same Uninstall.bat works for both Install.bat files.\n"
  },
  {
    "path": "Explorer Context Menu Integration/Uninstall.bat",
    "content": "reg delete \"HKCU\\Software\\Classes\\Directory\\shell\\Open Fluent Terminal here\" /f\nreg delete \"HKCU\\Software\\Classes\\Directory\\Background\\shell\\Open Fluent Terminal here\" /f\nreg delete \"HKCU\\Software\\Classes\\Drive\\shell\\Open Fluent Terminal here\" /f\nreg delete \"HKCU\\Software\\Classes\\LibraryFolder\\Background\\shell\\Open Fluent Terminal here\" /f\ndel %LOCALAPPDATA%\\Microsoft\\WindowsApps\\FluentTerminal.ico\n"
  },
  {
    "path": "FluentTerminal.App/Actions/FocusAction.cs",
    "content": "﻿using Microsoft.Xaml.Interactivity;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Actions\n{\n    public class FocusAction : DependencyObject, IAction\n    {\n        public object Execute(object sender, object parameter)\n        {\n            var control = TargetObject ?? sender as Control;\n            if (control != null)\n            {\n                if (!control.IsLoaded)\n                    control.Loaded += Control_Loaded;\n                else\n                    control.Focus(FocusState.Programmatic);\n            }\n\n            return null;\n        }\n\n        private void Control_Loaded(object sender, RoutedEventArgs e)\n        {\n            Control control = sender as Control;\n            control.Focus(FocusState.Programmatic);\n            control.Loaded -= Control_Loaded; // won't be needed anymore. Remove reference just in case\n        }\n\n        public Control TargetObject\n        {\n            get { return (Control)GetValue(TargetObjectProperty); }\n            set { SetValue(TargetObjectProperty, value); }\n        }\n\n        public static readonly DependencyProperty TargetObjectProperty =\n            DependencyProperty.Register(nameof(TargetObject), typeof(Control), typeof(FocusAction), new PropertyMetadata(null));\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Adapters/AppServiceConnectionAdapter.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppService;\nusing Windows.Foundation.Collections;\n\nnamespace FluentTerminal.App.Adapters\n{\n    public class AppServiceConnectionAdapter : IAppServiceConnection\n    {\n        private readonly AppServiceConnection _appServiceConnection;\n\n        public event EventHandler<ValueSet> MessageReceived;\n\n        public AppServiceConnectionAdapter(AppServiceConnection appServiceConnection)\n        {\n            _appServiceConnection = appServiceConnection;\n            _appServiceConnection.RequestReceived += OnRequestReceived;\n        }\n\n        private void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n        {\n            MessageReceived?.Invoke(this, args.Request.Message);\n        }\n\n        public async Task<ValueSet> SendMessageAsync(ValueSet message)\n        {\n            var response = await _appServiceConnection.SendMessageAsync(message);\n\n            if (response.Status == AppServiceResponseStatus.Success)\n            {\n                return response.Message;\n            }\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Adapters/ApplicationViewAdapter.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Core;\nusing Windows.Foundation.Metadata;\nusing Windows.UI.Core;\nusing Windows.UI.Core.Preview;\nusing Windows.UI.ViewManagement;\nusing FluentTerminal.App.Utilities;\n\nnamespace FluentTerminal.App.Adapters\n{\n    public class ApplicationViewAdapter : IApplicationView\n    {\n        private readonly ApplicationView _applicationView;\n        private readonly CoreDispatcher _dispatcher;\n        private bool _closed;\n\n        public event CloseRequestedHandler CloseRequested;\n        public event EventHandler Closed;\n\n        public ApplicationViewAdapter()\n        {\n            _applicationView = ApplicationView.GetForCurrentView();\n            _applicationView.Consolidated += _applicationView_Consolidated;\n            _dispatcher = CoreApplication.GetCurrentView().Dispatcher;\n            SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += OnCloseRequested;\n\n            Logger.Instance.Debug(\"Created ApplicationViewAdapter for ApplicationView with Id: {Id}\", _applicationView.Id);\n        }\n\n        private void _applicationView_Consolidated(ApplicationView sender, ApplicationViewConsolidatedEventArgs args)\n        {\n            _applicationView.Consolidated -= _applicationView_Consolidated;\n            Closed?.Invoke(this, EventArgs.Empty);\n        }\n\n        public int Id => _applicationView.Id;\n\n        public string Title\n        {\n            get => _applicationView.Title;\n            set => _applicationView.Title = value ?? string.Empty;\n        }\n\n        public bool IsApiContractPresent(string api, ushort version)\n        {\n            return ApiInformation.IsApiContractPresent(api, version);\n        }\n\n        public Task ExecuteOnUiThreadAsync(Action action, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal,\n            bool enforceNewSchedule = false) => _dispatcher.ExecuteAsync(action, priority, enforceNewSchedule);\n\n        public Task<T> ExecuteOnUiThreadAsync<T>(Func<T> func, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal,\n            bool enforceNewSchedule = false) => _dispatcher.ExecuteAsync(func, priority, enforceNewSchedule);\n\n        public async Task<bool> TryCloseAsync()\n        {\n            if (_closed)\n            {\n                Logger.Instance.Debug(\"ApplicationViewAdapter.TryCloseAsync was called, but was already closed. ApplicationView.Id: {Id}\", _applicationView.Id);\n                return true;\n            }\n            Logger.Instance.Debug(\"TryCloseAsync ApplicationView with Id: {Id}\", _applicationView.Id);\n            _closed = await _applicationView.TryConsolidateAsync();\n            return _closed;\n        }\n\n        public bool ToggleFullScreen()\n        {\n            if (_applicationView.IsFullScreenMode)\n            {\n                _applicationView.ExitFullScreenMode();\n                return true;\n            }\n\n            return _applicationView.TryEnterFullScreenMode();\n        }\n\n        private async void OnCloseRequested(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)\n        {\n            var deferral = e.GetDeferral();\n\n            var args = new CancelableEventArgs();\n\n            if (CloseRequested is { } closeRequestedHandler)\n            {\n                // ConfigureAwait(true) because SystemNavigationManagerPreview.GetForCurrentView().CloseRequested requires the calling (UI) thread\n                await closeRequestedHandler(this, args).ConfigureAwait(true);\n            }\n\n            e.Handled = args.Cancelled;\n\n            if (!e.Handled)\n            {\n                SystemNavigationManagerPreview.GetForCurrentView().CloseRequested -= OnCloseRequested;\n            }\n\n            deferral.Complete();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Adapters/MessageDialogAdapter.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Services.Utilities;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.UI.Popups;\n\nnamespace FluentTerminal.App.Adapters\n{\n    public class MessageDialogAdapter : IMessageDialog\n    {\n        private readonly MessageDialog _messageDialog;\n\n        public MessageDialogAdapter()\n        {\n            _messageDialog = new MessageDialog(string.Empty);\n        }\n\n        public string Title\n        {\n            get => _messageDialog.Title;\n            set => _messageDialog.Title = value;\n        }\n\n        public string Content\n        {\n            get => _messageDialog.Content;\n            set => _messageDialog.Content = value;\n        }\n\n        public void AddButton(DialogButton button)\n        {\n            var command = new UICommand\n            {\n                Label = I18N.Translate(button.ToString()),\n                Id = button\n            };\n            _messageDialog.Commands.Add(command);\n        }\n\n        public Task<DialogButton> ShowAsync()\n        {\n            return _messageDialog.ShowAsync().AsTask().ContinueWith(t => (DialogButton) t.Result.Id,\n                TaskContinuationOptions.OnlyOnRanToCompletion);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/App.xaml",
    "content": "﻿<Application\n    x:Class=\"FluentTerminal.App.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:converters=\"using:FluentTerminal.App.Converters\">\n    <Application.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <XamlControlsResources xmlns=\"using:Microsoft.UI.Xaml.Controls\" />\n                <ResourceDictionary Source=\"Styles\\Custom.xaml\" />\n            </ResourceDictionary.MergedDictionaries>\n            <LinearGradientBrush x:Key=\"MissingColorSelectionBrush\" StartPoint=\"0,0\" EndPoint=\"1,1\">\n                <GradientStop Offset=\"0\" Color=\"Black\" />\n                <GradientStop Offset=\"1.0\" Color=\"White\" />\n            </LinearGradientBrush>\n            <converters:IntToVisibilityConverter\n                x:Key=\"OneToVisibleConverter\"\n                Else=\"Collapsed\"\n                If=\"1\"\n                Then=\"Visible\" />\n            <converters:IntToVisibilityConverter\n                x:Key=\"OneToCollapsedConverter\"\n                Else=\"Visible\"\n                If=\"1\"\n                Then=\"Collapsed\" />\n            <converters:NegateConverter x:Key=\"NegateConverter\" />\n            <converters:FalseToVisibleConverter x:Key=\"FalseToVisibleConverter\" />\n            <converters:TrueToVisibleConverter x:Key=\"TrueToVisibleConverter\" />\n            <converters:TabColorFallbackConverter x:Key=\"TabColorFallbackConverter\" />\n            <converters:TextMiddleEllipsisConverter x:Key=\"TextMiddleEllipsisConverter\" />\n            <converters:IntToVisibilityConverter\n                x:Key=\"ZeroToCollapsedConverter\"\n                Else=\"Visible\"\n                If=\"0\"\n                Then=\"Collapsed\" />\n            <converters:IntToExtendedVirtualKeyConverter x:Key=\"IntToExtendedVirtualKeyConverter\" />\n            <converters:BackgroundToApplicationThemeConverter x:Key=\"BackgroundToApplicationThemeConverter\" />\n            <converters:StringToColorConverter x:Key=\"StringToColorConverter\" />\n            <converters:EnumValueToVisibiltyConverter x:Key=\"EnumValueToVisibiltyConverter\" />\n            <converters:TabThemeSelectedConverter x:Key=\"TabThemeSelectedConverter\" />\n            <converters:ColorResourceKeyFallbackConverter x:Key=\"ColorResourceKeyFallbackConverter\" />\n\n            <converters:I18NConverter x:Key=\"I18NConverter\" />\n            <converters:NullToCollapsedConverter x:Key=\"NullToCollapsedConverter\" />\n            <converters:MenuViewModelToFlyoutMenuConverter x:Key=\"MenuViewModelToFlyoutMenuConverter\" />\n        </ResourceDictionary>\n    </Application.Resources>\n</Application>"
  },
  {
    "path": "FluentTerminal.App/App.xaml.cs",
    "content": "﻿using Autofac;\r\nusing CommandLine;\r\nusing FluentTerminal.App.Adapters;\r\nusing FluentTerminal.App.CommandLineArguments;\r\nusing FluentTerminal.App.Dialogs;\r\nusing FluentTerminal.App.Services;\r\nusing FluentTerminal.App.Services.Adapters;\r\nusing FluentTerminal.App.Services.Dialogs;\r\nusing FluentTerminal.App.Services.EventArgs;\r\nusing FluentTerminal.App.Services.Implementation;\r\nusing FluentTerminal.App.ViewModels;\r\nusing FluentTerminal.App.Views;\r\nusing FluentTerminal.Models;\r\nusing FluentTerminal.Models.Enums;\r\nusing Newtonsoft.Json;\r\nusing Newtonsoft.Json.Converters;\r\nusing Newtonsoft.Json.Serialization;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing Windows.ApplicationModel;\r\nusing Windows.ApplicationModel.Activation;\r\nusing Windows.ApplicationModel.AppService;\r\nusing Windows.ApplicationModel.Background;\r\nusing Windows.ApplicationModel.Core;\r\nusing Windows.Storage;\r\nusing Windows.UI.Popups;\r\nusing Windows.UI.ViewManagement;\r\nusing Windows.UI.Xaml;\r\nusing Windows.UI.Xaml.Controls;\r\nusing FluentTerminal.App.Utilities;\r\nusing IContainer = Autofac.IContainer;\r\nusing FluentTerminal.App.Services.Utilities;\r\nusing FluentTerminal.App.ViewModels.Profiles;\r\nusing FluentTerminal.Models.Messages;\r\nusing Microsoft.Toolkit.Mvvm.Messaging;\r\n\r\nnamespace FluentTerminal.App\r\n{\r\n    // ReSharper disable once RedundantExtendsListEntry\r\n    public sealed partial class App : Application\r\n    {\r\n        private readonly TaskCompletionSource<int> _trayReady = new TaskCompletionSource<int>();\r\n        private readonly ISettingsService _settingsService;\r\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\r\n        private readonly IDialogService _dialogService;\r\n        private readonly INotificationService _notificationService;\r\n        private bool _alreadyLaunched;\r\n        private bool _isLaunching;\r\n        private ApplicationSettings _applicationSettings;\r\n        private readonly IContainer _container;\r\n        private readonly List<MainViewModel> _mainViewModels;\r\n        private SettingsViewModel _settingsViewModel;\r\n        private int? _settingsWindowId;\r\n        private IAppServiceConnection _appServiceConnection;\r\n        private BackgroundTaskDeferral _appServiceDeferral;\r\n        private Parser _commandLineParser;\r\n        private int? _activeWindowId;\r\n\r\n        public App()\r\n        {\r\n            _mainViewModels = new List<MainViewModel>();\r\n\r\n            InitializeComponent();\r\n\r\n            UnhandledException += OnUnhandledException;\r\n\r\n            TaskScheduler.UnobservedTaskException += (sender, e) =>\r\n                Logger.Instance.Error(e.Exception, \"Unobserved Task Exception\");\r\n\r\n            var applicationDataContainers = new ApplicationDataContainers\r\n            {\r\n                LocalSettings = new ApplicationDataContainerAdapter(ApplicationData.Current.LocalSettings),\r\n                RoamingSettings = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings),\r\n                KeyBindings = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.KeyBindingsContainerName, ApplicationDataCreateDisposition.Always)),\r\n                ShellProfiles = new ApplicationDataContainerAdapter(ApplicationData.Current.LocalSettings.CreateContainer(Constants.ShellProfilesContainerName, ApplicationDataCreateDisposition.Always)),\r\n                Themes = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.ThemesContainerName, ApplicationDataCreateDisposition.Always)),\r\n                SshProfiles = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.SshProfilesContainerName, ApplicationDataCreateDisposition.Always)), \r\n                HistoryContainer = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.ExecutedCommandsContainerName, ApplicationDataCreateDisposition.Always))\r\n            };\r\n\r\n            var builder = new ContainerBuilder();\r\n            builder.RegisterInstance(applicationDataContainers);\r\n            builder.RegisterType<SettingsService>().As<ISettingsService>().SingleInstance();\r\n            builder.RegisterType<CommandHistoryService>().As<ICommandHistoryService>().SingleInstance();\r\n            builder.RegisterType<DefaultValueProvider>().As<IDefaultValueProvider>().SingleInstance();\r\n            builder.RegisterType<TrayProcessCommunicationService>().As<ITrayProcessCommunicationService>().SingleInstance();\r\n            builder.RegisterType<DialogService>().As<IDialogService>().SingleInstance();\r\n            builder.RegisterType<KeyboardCommandService>().As<IKeyboardCommandService>().InstancePerDependency();\r\n            builder.RegisterType<NotificationService>().As<INotificationService>().InstancePerDependency();\r\n            builder.RegisterType<UpdateService>().As<IUpdateService>().InstancePerDependency();\r\n            builder.RegisterType<MainViewModel>().InstancePerDependency();\r\n            builder.RegisterType<SettingsViewModel>().InstancePerDependency();\r\n            builder.RegisterType<ThemeParserFactory>().As<IThemeParserFactory>().SingleInstance();\r\n            builder.RegisterType<ITermThemeParser>().As<IThemeParser>().SingleInstance();\r\n            builder.RegisterType<FluentTerminalThemeParser>().As<IThemeParser>().SingleInstance();\r\n            builder.RegisterType<ClipboardService>().As<IClipboardService>().SingleInstance();\r\n            builder.RegisterType<FileSystemService>().As<IFileSystemService>().SingleInstance();\r\n            builder.RegisterType<ImageFileSystemService>().As<IImageFileSystemService>().SingleInstance();\r\n            builder.RegisterType<SystemFontService>().As<ISystemFontService>().SingleInstance();\r\n            builder.RegisterType<CreateKeyBindingDialog>().As<ICreateKeyBindingDialog>().InstancePerDependency();\r\n            builder.RegisterType<InputDialog>().As<IInputDialog>().InstancePerDependency();\r\n            builder.RegisterType<AboutDialog>().As<IAboutDialog>().InstancePerDependency();\r\n            builder.RegisterType<MessageDialogAdapter>().As<IMessageDialog>().InstancePerDependency();\r\n            builder.RegisterType<SshInfoDialog>().As<ISshConnectionInfoDialog>().InstancePerDependency();\r\n            builder.RegisterType<CustomCommandDialog>().As<ICustomCommandDialog>().InstancePerDependency();\r\n            builder.RegisterType<ApplicationViewAdapter>().As<IApplicationView>().InstancePerDependency();\r\n            builder.RegisterType<StartupTaskService>().As<IStartupTaskService>().SingleInstance();\r\n            builder.RegisterType<ApplicationLanguageService>().As<IApplicationLanguageService>().SingleInstance();\r\n            builder.RegisterType<ShellProfileMigrationService>().As<IShellProfileMigrationService>().SingleInstance();\r\n\r\n            _container = builder.Build();\r\n\r\n            WeakReferenceMessenger.Default.Register<App, ApplicationSettingsChangedMessage>(this, (r, m) => r.OnApplicationSettingsChanged(m));\r\n\r\n            _settingsService = _container.Resolve<ISettingsService>();\r\n            _notificationService = _container.Resolve<INotificationService>();\r\n\r\n            var shellProfileMigrationService = _container.Resolve<IShellProfileMigrationService>();\r\n            foreach (var profile in _settingsService.GetShellProfiles())\r\n            {\r\n                shellProfileMigrationService.Migrate(profile);\r\n                _settingsService.SaveShellProfile(profile);\r\n            }\r\n\r\n            foreach (var profile in _settingsService.GetSshProfiles())\r\n            {\r\n                shellProfileMigrationService.Migrate(profile);\r\n                _settingsService.SaveSshProfile(profile);\r\n            }\r\n\r\n            _trayProcessCommunicationService = _container.Resolve<ITrayProcessCommunicationService>();\r\n\r\n            _dialogService = _container.Resolve<IDialogService>();\r\n\r\n            _applicationSettings = _settingsService.GetApplicationSettings();\r\n\r\n            JsonConvert.DefaultSettings = () =>\r\n            {\r\n                var settings = new JsonSerializerSettings\r\n                {\r\n                    ContractResolver = new CamelCasePropertyNamesContractResolver(),\r\n                };\r\n                settings.Converters.Add(new StringEnumConverter(typeof(CamelCaseNamingStrategy)));\r\n\r\n                return settings;\r\n            };\r\n\r\n            _commandLineParser = new Parser(settings =>\r\n            {\r\n                settings.CaseSensitive = false;\r\n                settings.CaseInsensitiveEnumValues = true;\r\n            });\r\n        }\r\n\r\n        private void OnUnhandledException(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)\r\n        {\r\n            Logger.Instance.Error(e.Exception, \"Unhandled Exception\");\r\n        }\r\n\r\n        private static IEnumerable<string> SplitArguments(string arguments)\r\n        {\r\n            var chars = arguments.ToCharArray();\r\n            var inQuote = false;\r\n\r\n            for (var i = 0; i < chars.Length; i++)\r\n            {\r\n                if (chars[i] == '\"')\r\n                {\r\n                    inQuote = !inQuote;\r\n                }\r\n\r\n                if (!inQuote && chars[i] == ' ')\r\n                {\r\n                    chars[i] = '\\n';\r\n                }\r\n            }\r\n\r\n            foreach (var value in new string(chars).Split('\\n'))\r\n            {\r\n                yield return value.Trim('\"');\r\n            }\r\n        }\r\n\r\n        protected override async void OnActivated(IActivatedEventArgs args)\r\n        {\r\n            await OnLaunchOrActivate(args);\r\n            base.OnActivated(args);\r\n        }\r\n\r\n        private async Task ParseCommandLineArgumentsAsync(object verb, CommandLineActivatedEventArgs commandLineActivated)\r\n        {\r\n            using var deferral = commandLineActivated.Operation.GetDeferral();\r\n\r\n            if (verb is SettingsVerb settingsVerb)\r\n            {\r\n                if (string.IsNullOrWhiteSpace(settingsVerb.Import) && !settingsVerb.Export)\r\n                {\r\n                    await ShowSettingsAsync();\r\n                }\r\n                else if (settingsVerb.Export)\r\n                {\r\n                    var settings = _settingsService.ExportSettings();\r\n                    var path = Path.Combine(commandLineActivated.Operation.CurrentDirectoryPath, \"config.json\");\r\n                    try\r\n                    {\r\n                        await StartSystemTray().ConfigureAwait(false);\r\n                        await _trayProcessCommunicationService.SaveTextFileAsync(path, settings).ConfigureAwait(false);\r\n                        _notificationService.ShowNotification(\"Export settings\", $\"Settings were exported to {path}.\");\r\n                    }\r\n                    catch (Exception e)\r\n                    {\r\n                        _notificationService.ShowNotification(\"Export settings\", $\"Failed with error: {e.Message}\");\r\n                        commandLineActivated.Operation.ExitCode = 1;\r\n                    }\r\n\r\n                    if (!_isLaunching && !_alreadyLaunched)\r\n                    {\r\n                        Exit();\r\n                    }\r\n                }\r\n                else if (!string.IsNullOrWhiteSpace(settingsVerb.Import))\r\n                {\r\n                    var path = Path.Combine(commandLineActivated.Operation.CurrentDirectoryPath, settingsVerb.Import.Replace(\".\\\\\", string.Empty));\r\n                    try\r\n                    {\r\n                        await StartSystemTray().ConfigureAwait(false);\r\n                        var content = await _trayProcessCommunicationService.ReadTextFileAsync(path).ConfigureAwait(false);\r\n                        _settingsService.ImportSettings(content);\r\n                        _notificationService.ShowNotification(\"Import settings\", $\"Successfully imported settings from {path}.\");\r\n                    }\r\n                    catch (Exception e)\r\n                    {\r\n                        _notificationService.ShowNotification(\"Import settings\", $\"Failed with error: {e.Message}\");\r\n                        commandLineActivated.Operation.ExitCode = 1;\r\n                    }\r\n\r\n                    if (!_isLaunching && !_alreadyLaunched)\r\n                    {\r\n                        Exit();\r\n                    }\r\n                }\r\n            }\r\n            else if (verb is NewVerb newVerb)\r\n            {\r\n                var profile = default(ShellProfile);\r\n                if (!string.IsNullOrWhiteSpace(newVerb.Profile))\r\n                {\r\n                    profile = _settingsService.GetShellProfiles().FirstOrDefault(x => x.Name.Equals(newVerb.Profile, StringComparison.CurrentCultureIgnoreCase));\r\n                }\r\n\r\n                if (profile == null)\r\n                {\r\n                    profile = _settingsService.GetDefaultShellProfile();\r\n                }\r\n\r\n                if (!string.IsNullOrWhiteSpace(newVerb.Directory) && newVerb.Directory != \".\")\r\n                {\r\n                    profile.WorkingDirectory = newVerb.Directory;\r\n                }\r\n                else\r\n                {\r\n                    profile.WorkingDirectory = commandLineActivated.Operation.CurrentDirectoryPath;\r\n                }\r\n\r\n                var location = newVerb.Target == Target.Default ? _applicationSettings.NewTerminalLocation\r\n                    : newVerb.Target == Target.Tab ? NewTerminalLocation.Tab\r\n                    : NewTerminalLocation.Window;\r\n\r\n                await CreateTerminalAsync(profile, location);\r\n            }\r\n            else if (verb is RunVerb runVerb)\r\n            {\r\n                var profile = new ShellProfile\r\n                {\r\n                    Id = Guid.Empty,\r\n                    Location = null,\r\n                    Arguments = runVerb.Command,\r\n                    WorkingDirectory = runVerb.Directory,\r\n                    UseConPty = _settingsService.GetApplicationSettings().UseConPty\r\n                };\r\n\r\n                if (runVerb.SmartBuffer.HasValue)\r\n                {\r\n                    profile.UseBuffer = runVerb.SmartBuffer.Value;\r\n                }\r\n\r\n                if (!string.IsNullOrWhiteSpace(runVerb.Theme))\r\n                {\r\n                    var theme = _settingsService.GetThemes().FirstOrDefault(x => x.Name.Equals(runVerb.Theme, StringComparison.CurrentCultureIgnoreCase));\r\n                    if (theme != null)\r\n                    {\r\n                        profile.TerminalThemeId = theme.Id;\r\n                    }\r\n                }\r\n\r\n                if (string.IsNullOrWhiteSpace(profile.WorkingDirectory))\r\n                {\r\n                    profile.WorkingDirectory = commandLineActivated.Operation.CurrentDirectoryPath;\r\n                }\r\n\r\n                var location = runVerb.Target == Target.Default ? _applicationSettings.NewTerminalLocation\r\n                    : runVerb.Target == Target.Tab ? NewTerminalLocation.Tab\r\n                    : NewTerminalLocation.Window;\r\n\r\n                await CreateTerminalAsync(profile, location);\r\n            }\r\n        }\r\n\r\n        private Task ShowOrCreateWindowAsync(ActivationViewSwitcher viewSwitcher)\r\n        {\r\n            var viewModel = _mainViewModels.Find(o => o.ApplicationView.Id == _activeWindowId) ??\r\n                            _mainViewModels.LastOrDefault();\r\n\r\n            return viewModel == null\r\n                ? CreateTerminalAsync(_settingsService.GetDefaultShellProfile(), NewTerminalLocation.Tab, viewSwitcher)\r\n                : ShowAsStandaloneAsync(viewModel, viewSwitcher);\r\n        }\r\n\r\n        protected override async void OnLaunched(LaunchActivatedEventArgs args)\r\n        {\r\n            await OnLaunchOrActivate(args);\r\n        }\r\n\r\n        public async Task OnLaunchOrActivate(IActivatedEventArgs args)\r\n        {\r\n            if (args is LaunchActivatedEventArgs launchActivated)\r\n            {\r\n                if (_isLaunching)\r\n                {\r\n                    return;\r\n                }\r\n\r\n                _isLaunching = true;\r\n\r\n                if (!_alreadyLaunched)\r\n                {\r\n                    await InitializeLoggerAsync();\r\n\r\n                    // ReSharper disable once AssignmentIsFullyDiscarded\r\n                    _ = JumpListHelper.UpdateAsync(_settingsService);\r\n\r\n                    var viewModel = _container.Resolve<MainViewModel>();\r\n                    if (launchActivated.Arguments.StartsWith(JumpListHelper.ShellProfileFlag))\r\n                    {\r\n                        await viewModel.AddProfileByGuidAsync(Guid.Parse(launchActivated.Arguments.Replace(JumpListHelper.ShellProfileFlag, string.Empty)));\r\n                    }\r\n                    else\r\n                    {\r\n                        await viewModel.AddDefaultProfileAsync(NewTerminalLocation.Tab);\r\n                    }\r\n                    await CreateMainViewAsync(typeof(MainPage), viewModel, true);\r\n                    Window.Current.Activate();\r\n                }\r\n                else if (launchActivated.Arguments.StartsWith(JumpListHelper.ShellProfileFlag))\r\n                {\r\n                    var location = _applicationSettings.NewTerminalLocation;\r\n                    var profile = _settingsService.GetShellProfile(Guid.Parse(launchActivated.Arguments.Replace(JumpListHelper.ShellProfileFlag, string.Empty)));\r\n                    await CreateTerminalAsync(profile, location, launchActivated.ViewSwitcher);\r\n                }\r\n                else\r\n                {\r\n                    var viewModel = await CreateNewTerminalWindowAsync();\r\n                    await viewModel.AddDefaultProfileAsync(NewTerminalLocation.Tab);\r\n                    await ShowAsStandaloneAsync(viewModel, launchActivated.ViewSwitcher);\r\n                }\r\n\r\n                _isLaunching = false;\r\n            }\r\n            else if (args is ProtocolActivatedEventArgs protocolActivated)\r\n            {\r\n                if (protocolActivated.Uri == new Uri(\"ftcmd://fluent.terminal?focus\"))\r\n                {\r\n                    await ShowOrCreateWindowAsync(protocolActivated.ViewSwitcher);\r\n                    return;\r\n                }\r\n\r\n                MainViewModel mainViewModel = null;\r\n                // IApplicationView to use for creating view models\r\n                IApplicationView applicationView;\r\n\r\n                if (_alreadyLaunched)\r\n                {\r\n                    applicationView =\r\n                        (_mainViewModels.FirstOrDefault(o => o.ApplicationView.Id == _activeWindowId) ??\r\n                         _mainViewModels.Last()).ApplicationView;\r\n                }\r\n                else\r\n                {\r\n                    // App wasn't launched before double clicking a shortcut, so we have to create a window\r\n                    // in order to be able to communicate with user.\r\n                    mainViewModel = _container.Resolve<MainViewModel>();\r\n\r\n                    await CreateMainViewAsync(typeof(MainPage), mainViewModel, true);\r\n\r\n                    applicationView = mainViewModel.ApplicationView;\r\n                }\r\n\r\n                bool isSsh;\r\n\r\n                try\r\n                {\r\n                    isSsh = SshConnectViewModel.CheckScheme(protocolActivated.Uri);\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    await new MessageDialog(\r\n                            $\"{I18N.TranslateWithFallback(\"InvalidLink\", \"Invalid link.\")} {ex.Message}\",\r\n                            \"Invalid Link\")\r\n                        .ShowAsync();\r\n\r\n                    mainViewModel?.ApplicationView.TryCloseAsync();\r\n\r\n                    return;\r\n                }\r\n\r\n                if (isSsh)\r\n                {\r\n                    SshConnectViewModel vm;\r\n\r\n                    try\r\n                    {\r\n                        vm = SshConnectViewModel.ParseUri(protocolActivated.Uri, _settingsService, applicationView,\r\n                            _trayProcessCommunicationService, _container.Resolve<IFileSystemService>(),\r\n                            _container.Resolve<ApplicationDataContainers>().HistoryContainer);\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        await new MessageDialog(\r\n                                $\"{I18N.TranslateWithFallback(\"InvalidLink\", \"Invalid link.\")} {ex.Message}\",\r\n                                \"Invalid Link\")\r\n                            .ShowAsync();\r\n\r\n                        mainViewModel?.ApplicationView.TryCloseAsync();\r\n\r\n                        return;\r\n                    }\r\n\r\n                    if (_applicationSettings.AutoFallbackToWindowsUsernameInLinks && string.IsNullOrEmpty(vm.Username))\r\n                    {\r\n                        vm.Username = await _trayProcessCommunicationService.GetUserNameAsync();\r\n                    }\r\n\r\n                    var error = await vm.AcceptChangesAsync(true);\r\n\r\n                    var profile = (SshProfile)vm.Model;\r\n\r\n                    if (!string.IsNullOrEmpty(error))\r\n                    {\r\n                        // Link is valid, but incomplete (i.e. username missing), so we need to show dialog.\r\n                        profile = await _dialogService.ShowSshConnectionInfoDialogAsync(profile);\r\n\r\n                        if (profile == null)\r\n                        {\r\n                            // User clicked \"Cancel\" in the dialog.\r\n                            mainViewModel?.ApplicationView.TryCloseAsync();\r\n\r\n                            return;\r\n                        }\r\n                    }\r\n\r\n                    if (mainViewModel == null)\r\n                        await CreateTerminalAsync(profile, _applicationSettings.NewTerminalLocation, protocolActivated.ViewSwitcher);\r\n                    else\r\n                        await mainViewModel.AddTabAsync(profile);\r\n\r\n                    return;\r\n                }\r\n\r\n                if (CommandProfileProviderViewModel.CheckScheme(protocolActivated.Uri))\r\n                {\r\n                    CommandProfileProviderViewModel vm;\r\n\r\n                    try\r\n                    {\r\n                        vm = CommandProfileProviderViewModel.ParseUri(protocolActivated.Uri, _settingsService,\r\n                            applicationView, _trayProcessCommunicationService,\r\n                            _container.Resolve<ICommandHistoryService>());\r\n                    }\r\n                    catch (Exception ex)\r\n                    {\r\n                        await new MessageDialog(\r\n                                $\"{I18N.TranslateWithFallback(\"InvalidLink\", \"Invalid link.\")} {ex.Message}\",\r\n                                \"Invalid Link\")\r\n                            .ShowAsync();\r\n\r\n                        mainViewModel?.ApplicationView.TryCloseAsync();\r\n\r\n                        return;\r\n                    }\r\n\r\n                    var error = await vm.AcceptChangesAsync(true);\r\n\r\n                    var profile = vm.Model;\r\n\r\n                    if (!string.IsNullOrEmpty(error))\r\n                    {\r\n                        // Link is valid, but incomplete, so we need to show dialog.\r\n                        profile = await _dialogService.ShowCustomCommandDialogAsync(profile);\r\n\r\n                        if (profile == null)\r\n                        {\r\n                            // User clicked \"Cancel\" in the dialog.\r\n                            mainViewModel?.ApplicationView.TryCloseAsync();\r\n\r\n                            return;\r\n                        }\r\n                    }\r\n\r\n                    if (mainViewModel == null)\r\n                    {\r\n                        await CreateTerminalAsync(profile, _applicationSettings.NewTerminalLocation, protocolActivated.ViewSwitcher);\r\n                    }\r\n                    else\r\n                    {\r\n                        await mainViewModel.AddTabAsync(profile);\r\n                    }\r\n                    return;\r\n                }\r\n\r\n                await new MessageDialog(\r\n                        $\"{I18N.TranslateWithFallback(\"InvalidLink\", \"Invalid link.\")} {protocolActivated.Uri}\",\r\n                        \"Invalid Link\")\r\n                    .ShowAsync();\r\n\r\n                // ReSharper disable once AssignmentIsFullyDiscarded\r\n                _ = mainViewModel?.ApplicationView.TryCloseAsync();\r\n\r\n                return;\r\n            }\r\n            else if (args is CommandLineActivatedEventArgs commandLineActivated)\r\n            {\r\n                var arguments = commandLineActivated.Operation.Arguments;\r\n                if (string.IsNullOrWhiteSpace(arguments))\r\n                {\r\n                    arguments = \"new\";\r\n                }\r\n\r\n                _commandLineParser\r\n                    .ParseArguments(SplitArguments(arguments), typeof(NewVerb), typeof(RunVerb), typeof(SettingsVerb))\r\n                    .WithParsed(async verb => await ParseCommandLineArgumentsAsync(verb, commandLineActivated));\r\n            }\r\n        }\r\n\r\n        private static async Task InitializeLoggerAsync()\r\n        {\r\n            var logDirectory = await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync(\"Logs\", CreationCollisionOption.OpenIfExists);\r\n            var logFile = Path.Combine(logDirectory.Path, \"fluentterminal.app.log\");\r\n            var configFile = await logDirectory.CreateFileAsync(\"config.json\", CreationCollisionOption.OpenIfExists);\r\n            var configContent = await FileIO.ReadTextAsync(configFile);\r\n\r\n            if (string.IsNullOrWhiteSpace(configContent))\r\n            {\r\n                configContent = JsonConvert.SerializeObject(new Logger.Configuration());\r\n                await FileIO.WriteTextAsync(configFile, configContent);\r\n            }\r\n\r\n            var config = JsonConvert.DeserializeObject<Logger.Configuration>(configContent) ?? new Logger.Configuration();\r\n\r\n            Logger.Instance.Initialize(logFile, config);\r\n        }\r\n\r\n        protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)\r\n        {\r\n            base.OnBackgroundActivated(args);\r\n\r\n            if (args.TaskInstance.TriggerDetails is AppServiceTriggerDetails details)\r\n            {\r\n                if (details.CallerPackageFamilyName == Package.Current.Id.FamilyName)\r\n                {\r\n                    _appServiceDeferral = args.TaskInstance.GetDeferral();\r\n                    args.TaskInstance.Canceled += OnTaskCanceled;\r\n\r\n                    _appServiceConnection = new AppServiceConnectionAdapter(details.AppServiceConnection);\r\n\r\n                    _trayReady.TrySetResult(0);\r\n                }\r\n            }\r\n        }\r\n\r\n        private void OnTaskCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)\r\n        {\r\n            _appServiceDeferral?.Complete();\r\n            _appServiceDeferral = null;\r\n            _appServiceConnection = null;\r\n\r\n            // ReSharper disable once ArrangeStaticMemberQualifier\r\n            Application.Current.Exit();\r\n        }\r\n\r\n        private async Task CreateMainViewAsync(Type pageType, INotifyPropertyChanged viewModel, bool extendViewIntoTitleBar)\r\n        {\r\n            ApplicationViewSwitcher.DisableSystemViewActivationPolicy();\r\n\r\n            await StartSystemTray();\r\n\r\n            if (!(Window.Current.Content is Frame rootFrame))\r\n            {\r\n                rootFrame = new Frame();\r\n                Window.Current.Content = rootFrame;\r\n            }\r\n\r\n            if (rootFrame.Content == null)\r\n            {\r\n                CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = extendViewIntoTitleBar;\r\n\r\n                if (viewModel is MainViewModel mainViewModel)\r\n                {\r\n                    mainViewModel.Closed += OnMainViewModelClosed;\r\n                    mainViewModel.NewWindowRequested += OnNewWindowRequested;\r\n                    mainViewModel.ShowSettingsRequested += OnShowSettingsRequested;\r\n                    mainViewModel.ActivatedMv += OnMainViewActivated;\r\n                    mainViewModel.TabTearedOff += OnTabTearOff;\r\n                    _mainViewModels.Add(mainViewModel);\r\n                }\r\n\r\n                rootFrame.Navigate(pageType, viewModel);\r\n            }\r\n            _alreadyLaunched = true;\r\n            Window.Current.Activate();\r\n        }\r\n\r\n        private async Task<MainViewModel> CreateNewTerminalWindowAsync()\r\n        {\r\n            var viewModel = await CreateSecondaryViewAsync<MainViewModel>(typeof(MainPage), true);\r\n            viewModel.Closed += OnMainViewModelClosed;\r\n            viewModel.NewWindowRequested += OnNewWindowRequested;\r\n            viewModel.ShowSettingsRequested += OnShowSettingsRequested;\r\n            viewModel.ActivatedMv += OnMainViewActivated;\r\n            viewModel.TabTearedOff += OnTabTearOff;\r\n            _mainViewModels.Add(viewModel);\r\n\r\n            return viewModel;\r\n        }\r\n\r\n        private async Task<TViewModel> CreateSecondaryViewAsync<TViewModel>(Type pageType, bool extendViewIntoTitleBar)\r\n        {\r\n            var windowId = 0;\r\n            TViewModel viewModel = default;\r\n            var newView = CoreApplication.CreateNewView();\r\n            // ConfigureAwait(true) because ApplicationViewSwitcher.TryShowAsStandaloneAsync requires the same thread as CoreApplication.CreateNewView\r\n            await newView.Dispatcher.ExecuteAsync(() =>\r\n            {\r\n                viewModel = _container.Resolve<TViewModel>();\r\n\r\n                newView.TitleBar.ExtendViewIntoTitleBar = extendViewIntoTitleBar;\r\n                var frame = new Frame();\r\n                frame.Navigate(pageType, viewModel);\r\n                Window.Current.Content = frame;\r\n                Window.Current.Activate();\r\n\r\n                windowId = ApplicationView.GetForCurrentView().Id;\r\n            }).ConfigureAwait(true);\r\n\r\n            if (viewModel is SettingsViewModel settingsViewModel)\r\n            {\r\n                _settingsViewModel = settingsViewModel;\r\n                _settingsViewModel.Closed += OnSettingsClosed;\r\n                _settingsWindowId = windowId;\r\n            }\r\n\r\n            await ApplicationViewSwitcher.TryShowAsStandaloneAsync(windowId);\r\n\r\n            return viewModel;\r\n        }\r\n\r\n        private void OnApplicationSettingsChanged(ApplicationSettingsChangedMessage message)\r\n        {\r\n            _applicationSettings = message.ApplicationSettings;\r\n            _trayProcessCommunicationService.UpdateSettings(message.ApplicationSettings);\r\n        }\r\n\r\n        private void OnMainViewModelClosed(object sender, EventArgs e)\r\n        {\r\n            if (sender is MainViewModel viewModel)\r\n            {\r\n                Logger.Instance.Debug(\"MainViewModel with ApplicationView Id: {@id} closed.\", viewModel.ApplicationView.Id);\r\n\r\n                viewModel.Closed -= OnMainViewModelClosed;\r\n                viewModel.NewWindowRequested -= OnNewWindowRequested;\r\n                viewModel.ShowSettingsRequested -= OnShowSettingsRequested;\r\n                viewModel.ActivatedMv -= OnMainViewActivated;\r\n                viewModel.TabTearedOff -= OnTabTearOff;\r\n                if (_activeWindowId == viewModel.ApplicationView.Id)\r\n                {\r\n                    _activeWindowId = 0;\r\n                }\r\n\r\n                _mainViewModels.Remove(viewModel);\r\n\r\n                try\r\n                {\r\n                    // try/catch because the method cannot be called on the last window\r\n                    Window.Current.Close();\r\n                }\r\n                catch\r\n                {\r\n                    // ignored\r\n                }\r\n            }\r\n        }\r\n\r\n        private void OnMainViewActivated(object sender, EventArgs e)\r\n        {\r\n            if (sender is MainViewModel viewModel)\r\n            {\r\n                Logger.Instance.Debug(\"MainViewModel with ApplicationView Id: {@id} activated.\", viewModel.ApplicationView.Id);\r\n                _activeWindowId = viewModel.ApplicationView.Id;\r\n            }\r\n        }\r\n\r\n        private async void OnTabTearOff(object sender, TerminalViewModel model)\r\n        {\r\n            Logger.Instance.Debug(\"App.xaml.cs on tab tear off\");\r\n\r\n            var newViewModel = await CreateNewTerminalWindowAsync();\r\n            await newViewModel.AddTabAsync(await model.SerializeAsync(), 0);\r\n        }\r\n\r\n        private async void OnNewWindowRequested(object sender, NewWindowRequestedEventArgs e)\r\n        {\r\n            var viewModel = await CreateNewTerminalWindowAsync().ConfigureAwait(false);\r\n\r\n            await viewModel.AddTabAsync(e.Profile).ConfigureAwait(false);\r\n        }\r\n\r\n        private void OnSettingsClosed(object sender, EventArgs e)\r\n        {\r\n            // ReSharper disable once AssignmentIsFullyDiscarded\r\n            _ = JumpListHelper.UpdateAsync(_settingsService);\r\n            _settingsViewModel.Closed -= OnSettingsClosed;\r\n            _settingsViewModel = null;\r\n            _settingsWindowId = null;\r\n        }\r\n\r\n        private void OnShowSettingsRequested(object sender, EventArgs e)\r\n        {\r\n            // ReSharper disable once AssignmentIsFullyDiscarded\r\n            _ = ShowSettingsAsync();\r\n        }\r\n\r\n        private Task ShowAsStandaloneAsync(MainViewModel viewModel, ActivationViewSwitcher viewSwitcher = null)\r\n        {\r\n            var viewId = viewModel.ApplicationView.Id;\r\n            if (viewSwitcher != null)\r\n            {\r\n                return viewModel.ApplicationView.ExecuteOnUiThreadAsync(async () => await viewSwitcher.ShowAsStandaloneAsync(viewId));\r\n            }\r\n\r\n            return ApplicationViewSwitcher.TryShowAsStandaloneAsync(viewId).AsTask();\r\n        }\r\n\r\n        private async Task CreateTerminalAsync(ShellProfile profile, NewTerminalLocation location, ActivationViewSwitcher viewSwitcher = null)\r\n        {\r\n            if (!_alreadyLaunched)\r\n            {\r\n                var viewModel = _container.Resolve<MainViewModel>();\r\n                await viewModel.AddTabAsync(profile);\r\n                await CreateMainViewAsync(typeof(MainPage), viewModel, true);\r\n            }\r\n            else if (location == NewTerminalLocation.Tab && _mainViewModels.Count > 0)\r\n            {\r\n                var item = _mainViewModels.FirstOrDefault(o => o.ApplicationView.Id == _activeWindowId) ??\r\n                           _mainViewModels.Last();\r\n\r\n                await item.AddTabAsync(profile);\r\n                await ShowAsStandaloneAsync(item, viewSwitcher);\r\n            }\r\n            else\r\n            {\r\n                var viewModel = await CreateNewTerminalWindowAsync();\r\n                await viewModel.AddTabAsync(profile);\r\n                await ShowAsStandaloneAsync(viewModel, viewSwitcher);\r\n            }\r\n        }\r\n\r\n        private Task ShowSettingsAsync()\r\n        {\r\n            if (!_alreadyLaunched)\r\n            {\r\n                return CreateMainViewAsync(typeof(SettingsPage), _container.Resolve<SettingsViewModel>(), true);\r\n            }\r\n\r\n            if (_settingsViewModel == null)\r\n            {\r\n                return CreateSecondaryViewAsync<SettingsViewModel>(typeof(SettingsPage), true);\r\n            }\r\n\r\n            if (_settingsWindowId.HasValue)\r\n            {\r\n                return ApplicationViewSwitcher.TryShowAsStandaloneAsync(_settingsWindowId.Value).AsTask();\r\n            }\r\n\r\n            return Task.CompletedTask;\r\n        }\r\n\r\n        private Task StartSystemTray()\r\n        {\r\n            if (_trayReady.Task.IsCompleted)\r\n            {\r\n                return Task.CompletedTask;\r\n            }\r\n\r\n            var launch = FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync(\"AppLaunchedParameterGroup\").AsTask();\r\n\r\n            return Task.WhenAll(launch, _trayReady.Task).ContinueWith(\r\n                t => _trayProcessCommunicationService.Initialize(_appServiceConnection),\r\n                TaskContinuationOptions.OnlyOnRanToCompletion);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "FluentTerminal.App/Behaviors/MiddleClickBehavior.cs",
    "content": "﻿using Microsoft.Xaml.Interactivity;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Input;\n\nnamespace FluentTerminal.App.Behaviors\n{\n    public class MiddleClickBehavior : Trigger<UIElement>\n    {\n        private bool _middleButtonPressed;\n\n        protected override void OnAttached()\n        {\n            AssociatedObject.PointerPressed += OnPointerPressed;\n            AssociatedObject.PointerReleased += OnPointerReleased;\n        }\n\n        protected override void OnDetaching()\n        {\n            AssociatedObject.PointerPressed -= OnPointerPressed;\n            AssociatedObject.PointerReleased -= OnPointerReleased;\n        }\n\n        private void OnPointerPressed(object sender, PointerRoutedEventArgs e)\n        {\n            var point = e.GetCurrentPoint(AssociatedObject);\n            _middleButtonPressed = point.Properties.IsMiddleButtonPressed;\n        }\n\n        private void OnPointerReleased(object sender, PointerRoutedEventArgs e)\n        {\n            var point = e.GetCurrentPoint(AssociatedObject);\n            var middleButtonStillPressed = point.Properties.IsMiddleButtonPressed;\n\n            if (_middleButtonPressed && !middleButtonStillPressed)\n            {\n                Interaction.ExecuteActions(AssociatedObject, Actions, null);\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/CommandLineArguments/NewVerb.cs",
    "content": "﻿using CommandLine;\n\nnamespace FluentTerminal.App.CommandLineArguments\n{\n    [Verb(\"new\")]\n    public class NewVerb\n    {\n        [Value(0)]\n        public string Directory { get; set; }\n\n        [Option(\"profile\")]\n        public string Profile { get; set; }\n\n        [Option(\"target\")]\n        public Target Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/CommandLineArguments/RunVerb.cs",
    "content": "﻿using CommandLine;\n\nnamespace FluentTerminal.App.CommandLineArguments\n{\n    [Verb(\"run\")]\n    public class RunVerb\n    {\n        [Value(0)]\n        public string Command { get; set; }\n\n        [Option(\"directory\")]\n        public string Directory { get; set; }\n\n        [Option(\"theme\")]\n        public string Theme { get; set; }\n\n        [Option(\"smart-buffer\")]\n        public bool? SmartBuffer { get; set; }\n\n        [Option(\"target\")]\n        public Target Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/CommandLineArguments/SettingsVerb.cs",
    "content": "﻿using CommandLine;\n\nnamespace FluentTerminal.App.CommandLineArguments\n{\n    [Verb(\"settings\")]\n    public class SettingsVerb\n    {\n        [Option('i', \"import\",\n                HelpText = \"Import settings from specified file.\")]\n        public string Import { get; set; }\n\n        [Option('e', \"export\",\n                HelpText = \"Export settings.\")]\n        public bool Export { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/CommandLineArguments/Target.cs",
    "content": "﻿namespace FluentTerminal.App.CommandLineArguments\n{\n    public enum Target\n    {\n        Default,\n        Tab,\n        Window\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/BackgroundToApplicationThemeConverter.cs",
    "content": "﻿using FluentTerminal.App.Utilities;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing System;\nusing Windows.UI;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class BackgroundToApplicationThemeConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            Color color;\n            if (value is string colorString)\n            {\n                color = colorString.ToColor();\n            }\n            else if (value is Color)\n            {\n                color = (Color)value;\n            }\n\n            return ContrastHelper.GetIdealThemeForBackgroundColor(color);\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/BooleanNegationConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n// ReSharper disable LocalizableElement\n\nnamespace FluentTerminal.App.Converters\n{\n    public class BooleanNegationConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (targetType == typeof(bool))\n            {\n                if (value is bool isValue)\n                {\n                    return !isValue;\n                }\n\n                throw new ArgumentException($\"{nameof(value)} argument has to be of type bool.\", nameof(value));\n            }\n\n            if (targetType == typeof(bool?))\n            {\n                if (value == null)\n                {\n                    return null;\n                }\n\n                if (value is bool isValue)\n                {\n                    return !isValue;\n                }\n\n                throw new ArgumentException($\"{nameof(value)} argument has to be of type bool or Nullable<bool>.\", nameof(value));\n            }\n\n            throw new ArgumentException($\"{nameof(targetType)} argument has to {typeof(bool)}.\",\n                nameof(targetType));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language) =>\n            Convert(value, targetType, parameter, language);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/ColorResourceKeyFallbackConverter.cs",
    "content": "﻿using Microsoft.Toolkit.Uwp.Helpers;\nusing System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Media;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class ColorResourceKeyFallbackConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value == null)\n            {\n                return Application.Current.Resources[(string)parameter];\n            }\n            else if (value is string hex)\n            {\n                var color = hex.ToColor();\n                return new SolidColorBrush(color);\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/EnumValueToVisibiltyConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class EnumValueToVisibiltyConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value.GetType().IsEnum && Enum.TryParse(value.GetType(), parameter.ToString(), true, out object result))\n            {\n                return Equals(value, result) ? Visibility.Visible : Visibility.Collapsed;\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/FalseToVisibleConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class FalseToVisibleConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Boolean collapsed)\n            {\n                return collapsed ? Visibility.Collapsed : Visibility.Visible;\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Visibility visibility)\n            {\n                return visibility == Visibility.Collapsed;\n            }\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/I18NConverter.cs",
    "content": "﻿using FluentTerminal.App.Services.Utilities;\nusing System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class I18NConverter : IValueConverter\n    {\n        // To avoid empty translations\n        private static string Translate(string resource)\n        {\n            var translation = I18N.Translate(resource);\n\n            return string.IsNullOrEmpty(translation) ? $\"[ {resource} ]\" : translation;\n        }\n\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Enum enumValue && parameter is string enumType)\n            {\n                return Translate($\"{enumType}.{enumValue}\");\n            }\n            else if (value is string stringValue)\n            {\n                return Translate(stringValue);\n            }\n            else if (parameter is string resource)\n            {\n                return Translate(resource);\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/IconConverter.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Menu;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing System;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Media;\n// ReSharper disable LocalizableElement\n\nnamespace FluentTerminal.App.Converters\n{\n    public class IconConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Mdl2Icon mdl2Icon)\n            {\n                var fontIcon = new FontIcon { FontFamily = new FontFamily(\"Segoe MDL2 Assets\"), Glyph = mdl2Icon.Glyph };\n\n                if(!string.IsNullOrWhiteSpace(mdl2Icon.Color))\n                {\n                    fontIcon.Foreground = new SolidColorBrush(mdl2Icon.Color.ToColor());\n                }\n\n                return fontIcon;\n            }\n\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language) =>\n            throw new NotSupportedException();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/IntToExtendedVirtualKeyConverter.cs",
    "content": "﻿using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class IntToExtendedVirtualKeyConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is int intValue)\n            {\n                return EnumHelper.GetEnumDescription((ExtendedVirtualKey)intValue);\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/IntToVisibilityConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class IntToVisibilityConverter : DependencyObject, IValueConverter\n    {\n        public static readonly DependencyProperty ElseProperty =\n            DependencyProperty.Register(nameof(Else), typeof(Visibility), typeof(IntToVisibilityConverter), new PropertyMetadata(Visibility.Collapsed));\n\n        public static readonly DependencyProperty IfProperty =\n                    DependencyProperty.Register(nameof(If), typeof(int), typeof(IntToVisibilityConverter), new PropertyMetadata(0));\n\n        public static readonly DependencyProperty ThenProperty =\n            DependencyProperty.Register(nameof(Then), typeof(Visibility), typeof(IntToVisibilityConverter), new PropertyMetadata(Visibility.Visible));\n\n        public Visibility Else\n        {\n            get { return (Visibility)GetValue(ElseProperty); }\n            set { SetValue(ElseProperty, value); }\n        }\n\n        public int If\n        {\n            get { return (int)GetValue(IfProperty); }\n            set { SetValue(IfProperty, value); }\n        }\n\n        public Visibility Then\n        {\n            get { return (Visibility)GetValue(ThenProperty); }\n            set { SetValue(ThenProperty, value); }\n        }\n\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is int count)\n            {\n                return count == If ? Then : Else;\n            }\n            return Visibility.Collapsed;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs",
    "content": "﻿using System;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Input;\nusing FluentTerminal.App.ViewModels.Menu;\nusing FluentTerminal.App.Views;\nusing Microsoft.UI.Xaml.Controls;\nusing Windows.Foundation.Metadata;\n\n// ReSharper disable LocalizableElement\n\nnamespace FluentTerminal.App.Converters\n{\n    public class MenuItemViewModelBaseToMenuFlayoutItemBaseConverter : IValueConverter\n    {\n        #region Static\n\n        private static readonly IconConverter IconConverter = new IconConverter();\n\n        private static MenuFlyoutItemBase GetItem(MenuItemViewModelBase viewModel)\n        {\n            if (viewModel is ExpandableMenuItemViewModel expandable)\n            {\n                return GetExpandableItem(expandable);\n            }\n\n            if (viewModel is SeparatorMenuItemViewModel)\n            {\n                return GetSeparatorItem();\n            }\n\n            if (viewModel is MenuItemViewModel regular)\n            {\n                return GetRegularItem(regular);\n            }\n\n            if (viewModel is ToggleMenuItemViewModel toggle)\n            {\n                return GetToggleItem(toggle);\n            }\n\n            if (viewModel is RadioMenuItemViewModel radio)\n            {\n                return GetRadioItem(radio);\n            }\n\n            // Won't happen ever, but still...\n            throw new NotImplementedException(\n                $\"Unexpected {nameof(MenuItemViewModelBase)} type: {viewModel.GetType()}\");\n        }\n\n        private static MenuFlyoutSeparator GetSeparatorItem()\n        {\n            return new MenuFlyoutSeparator();\n        }\n\n        private static MenuFlyoutItem GetRegularItem(MenuItemViewModel viewModel)\n        {\n            var item = new MenuFlyoutItem();\n\n            item.SetBinding(MenuFlyoutItem.TextProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(ToolTipService.ToolTipProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(MenuFlyoutItem.IconProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),\n                Converter = IconConverter,\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(MenuFlyoutItem.CommandProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModel.Command)),\n                Mode = BindingMode.OneTime\n            });\n\n            if (viewModel.KeyBinding != null)\n            {\n                if (viewModel.KeyBinding.IsExtendedVirtualKey)\n                {\n                    if (ApiInformation.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 6))\n                    {\n                        item.KeyboardAcceleratorTextOverride = viewModel.KeyBinding.GetOverrideText();\n                    }\n                }\n                else\n                {\n                    item.KeyboardAccelerators?.Add(new KeyboardAccelerator\n                    {\n                        Key = (VirtualKey)viewModel.KeyBinding.Key,\n                        Modifiers = (VirtualKeyModifiers)viewModel.KeyBinding.KeyModifiers,\n                        IsEnabled = true\n                    });\n                }\n            }\n\n            return item;\n        }\n\n        private static MenuFlyoutSubItem GetExpandableItem(ExpandableMenuItemViewModel viewModel)\n        {\n            var item = new MenuFlyoutSubItem();\n\n            item.SetBinding(MenuFlyoutSubItem.TextProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(ToolTipService.ToolTipProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(MenuFlyoutSubItem.IconProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),\n                Converter = IconConverter,\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(MenuExtension.SubItemsProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(ExpandableMenuItemViewModel.SubItems)),\n                Mode = BindingMode.OneWay\n            });\n\n            return item;\n        }\n\n        private static ToggleMenuFlyoutItem GetToggleItem(ToggleMenuItemViewModel viewModel)\n        {\n            var item = new ToggleMenuFlyoutItem();\n\n            item.SetBinding(MenuFlyoutItem.TextProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(ToolTipService.ToolTipProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(MenuFlyoutItem.IconProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),\n                Converter = IconConverter,\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(ToggleMenuFlyoutItem.IsCheckedProperty, new Binding\n            {\n                Source = viewModel.BindingSource,\n                Path = new PropertyPath(viewModel.BindingPath),\n                Mode = BindingMode.TwoWay\n            });\n\n            return item;\n        }\n\n        private static RadioMenuFlyoutItem GetRadioItem(RadioMenuItemViewModel viewModel)\n        {\n            var item = new RadioMenuFlyoutItem();\n\n            item.SetBinding(MenuFlyoutItem.TextProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(ToolTipService.ToolTipProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(MenuFlyoutItem.IconProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),\n                Converter = IconConverter,\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(RadioMenuFlyoutItem.GroupNameProperty, new Binding\n            {\n                Source = viewModel,\n                Path = new PropertyPath(nameof(RadioMenuItemViewModel.GroupName)),\n                Mode = BindingMode.OneWay\n            });\n\n            item.SetBinding(RadioMenuFlyoutItem.IsCheckedProperty, new Binding\n            {\n                Source = viewModel.BindingSource,\n                Path = new PropertyPath(viewModel.BindingPath),\n                Mode = BindingMode.TwoWay\n            });\n\n            return item;\n        }\n\n        #endregion Static\n\n        #region IValueConverter\n\n        // ReSharper disable once AssignNullToNotNullAttribute\n        public object Convert(object value, Type targetType = null, object parameter = null, string language = null)\n        {\n            if (value == null)\n            {\n                return null;\n            }\n\n            return value is MenuItemViewModelBase menuItemViewModel\n                ? GetItem(menuItemViewModel)\n                : throw new ArgumentException(\n                    $\"Invalid {nameof(value)} argument type: {value.GetType()}. {typeof(MenuItemViewModelBase)} expected.\",\n                    nameof(value));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language) =>\n            throw new NotSupportedException();\n\n        #endregion IValueConverter\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/MenuViewModelToFlyoutMenuConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\nusing FluentTerminal.App.ViewModels.Menu;\nusing Windows.UI.Xaml.Controls.Primitives;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class MenuViewModelToFlyoutMenuConverter : IValueConverter\n    {\n        private static readonly MenuItemViewModelBaseToMenuFlayoutItemBaseConverter ItemConverter =\n            new MenuItemViewModelBaseToMenuFlayoutItemBaseConverter();\n\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is null)\n            {\n                return null;\n            }\n\n            if (!(value is MenuViewModel menuViewModel))\n            {\n                throw new ArgumentException(\n                    $\"Invalid {nameof(value)} argument type: {value.GetType()}. {typeof(MenuViewModel)} expected.\");\n            }\n\n            var menuFlyout = new MenuFlyout\n            {\n                Placement = FlyoutPlacementMode.Bottom\n            };\n\n            foreach (var menuItemViewModelBase in menuViewModel.Items)\n            {\n                menuFlyout.Items?.Add((MenuFlyoutItemBase) ItemConverter.Convert(menuItemViewModelBase));\n            }\n\n            return menuFlyout;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language) =>\n            throw new NotSupportedException();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/NegateConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class NegateConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is bool boolean)\n            {\n                return !boolean;\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/NullToCollapsedConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class NullToCollapsedConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            return value == null ? Visibility.Collapsed : Visibility.Visible;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/StringToColorConverter.cs",
    "content": "﻿using FluentTerminal.App.Utilities;\nusing System;\nusing Windows.UI;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class StringToColorConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is string colorString)\n            {\n                return colorString.FromString();\n            }\n\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Color color && bool.TryParse((string)parameter, out bool allowTransparency))\n            {\n                return color.ToColorString(allowTransparency);\n            }\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/TabColorFallbackConverter.cs",
    "content": "﻿using FluentTerminal.App.ViewModels;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI.Xaml.Media;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class TabColorFallbackConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is TabThemeViewModel viewModel && Enum.TryParse<TabThemeKey>((string)parameter, true, out TabThemeKey tabThemeKey))\n            {\n                var theme = viewModel.Theme;\n                switch (tabThemeKey)\n                {\n                    case TabThemeKey.Background:\n                        return GetBrush(tabThemeKey, theme.Color, theme.BackgroundOpacity);\n                    case TabThemeKey.BackgroundPointerOver:\n                        return GetBrush(tabThemeKey, theme.Color, theme.BackgroundPointerOverOpacity);\n                    case TabThemeKey.BackgroundPressed:\n                        return GetBrush(tabThemeKey, theme.Color, theme.BackgroundPressedOpacity);\n                    case TabThemeKey.BackgroundSelected:\n                        return GetBrush(tabThemeKey, theme.Color, theme.BackgroundSelectedOpacity);\n                    case TabThemeKey.BackgroundSelectedPointerOver:\n                        return GetBrush(tabThemeKey, theme.Color, theme.BackgroundSelectedPointerOverOpacity);\n                    case TabThemeKey.BackgroundSelectedPressed:\n                        return GetBrush(tabThemeKey, theme.Color, theme.BackgroundSelectedPressedOpacity);\n                }\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n\n        private Brush GetBrush(TabThemeKey tabThemeKey, string color, double opacity)\n        {\n            if (double.IsNaN(opacity))\n            {\n                return (Brush)Application.Current.Resources[GetFallbackRessourceKey(tabThemeKey)];\n            }\n            else\n            {\n                return CreateBrush(color, opacity);\n            }\n        }\n\n        private Brush CreateBrush(string hex, double opacity)\n        {\n            var color = hex.ToColor();\n            return new SolidColorBrush(color)\n            {\n                Opacity = opacity\n            };\n        }\n\n        private string GetFallbackRessourceKey(TabThemeKey tabThemeKey)\n        {\n            switch (tabThemeKey)\n            {\n                case TabThemeKey.Background:\n                    return \"SystemControlTransparentBrush\";\n                case TabThemeKey.BackgroundPointerOver:\n                    return \"SystemControlHighlightListLowBrush\";\n                case TabThemeKey.BackgroundPressed:\n                    return \"SystemControlHighlightListMediumBrush\";\n                case TabThemeKey.BackgroundSelected:\n                    return \"SystemControlHighlightListAccentLowBrush\";\n                case TabThemeKey.BackgroundSelectedPointerOver:\n                    return \"SystemControlHighlightListAccentMediumBrush\";\n                case TabThemeKey.BackgroundSelectedPressed:\n                    return \"SystemControlHighlightListAccentHighBrush\";\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/TabThemeSelectedConverter.cs",
    "content": "﻿using FluentTerminal.App.ViewModels;\nusing System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class TabThemeSelectedConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is TerminalViewModel terminal && parameter is string idString && int.TryParse(idString, out var id))\n            {\n                return terminal.TabTheme.Theme.Id == id;\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/TerminalViewModelToViewConverter.cs",
    "content": "﻿using FluentTerminal.App.ViewModels;\nusing FluentTerminal.App.Views;\nusing System;\nusing System.Collections.Generic;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    internal class TerminalViewModelToViewConverter : IValueConverter\n    {\n        private readonly Dictionary<TerminalViewModel, TerminalView> _viewDictionary;\n\n        public TerminalViewModelToViewConverter()\n        {\n            _viewDictionary = new Dictionary<TerminalViewModel, TerminalView>();\n        }\n\n        public void RemoveTerminal(TerminalViewModel viewModel)\n        {\n            if (_viewDictionary.TryGetValue(viewModel, out TerminalView terminalView))\n            {\n                viewModel.DisposalPrepare();\n                terminalView.DisposalPrepare();\n            }\n            _viewDictionary.Remove(viewModel);\n            GC.Collect();\n        }\n\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is TerminalViewModel terminal)\n            {\n                if (_viewDictionary.TryGetValue(terminal, out TerminalView view))\n                {\n                    return view;\n                }\n\n                var newView = new TerminalView(terminal);\n                _viewDictionary.Add(terminal, newView);\n                return newView;\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Converters/TextMiddleEllipsisConverter.cs",
    "content": "﻿using System;\nusing Windows.Foundation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    class TextMiddleEllipsisConverter : IValueConverter\n    {\n        private TextBlock _textBlock = null;\n\n        private double MeasureWidth(string text)\n        {\n            if (_textBlock == null)\n            {\n                _textBlock = new TextBlock\n                {\n                    Text = text,\n                    Margin = new Thickness(12, 8, 6, 0),\n                    Style = (Style)Application.Current.Resources[\"CaptionTextBlockStyle\"]\n                };\n            }\n            else\n            {\n                _textBlock.Text = text;\n            }\n            _textBlock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));\n            return _textBlock.DesiredSize.Width;\n        }\n\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is String text)\n            {\n                const int MaxWidth = 136;\n                string result = text;\n\n                var width = MeasureWidth(text);\n                if (width > MaxWidth)\n                {\n                    double oversize = width - MaxWidth;\n                    double charSize = width / text.Length;\n                    int charsToCut = (int)(oversize / charSize) + 3;\n                    int cutStart = text.Length / 2 - charsToCut / 2;\n                    int cutEnd = text.Length / 2 + (charsToCut - charsToCut / 2);\n                    result = text.Substring(0, cutStart) + \"..\" + text.Substring(cutEnd);\n                    width = MeasureWidth(result);\n                    while (width > MaxWidth && cutStart > 0 && cutEnd < text.Length)\n                    {\n                        result = text.Substring(0, --cutStart) + \"..\" + text.Substring(++cutEnd);\n                        width = MeasureWidth(result);\n                    }\n                }\n                return result;\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/ToolTipValueToPixelConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class ToolTipValueToPixelConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            return string.Format(\"{0} px\", value);\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Converters/TrueToVisibleConverter.cs",
    "content": "﻿using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n    public class TrueToVisibleConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Boolean visible)\n            {\n                return visible ? Visibility.Visible : Visibility.Collapsed;\n            }\n            return null;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, string language)\n        {\n            if (value is Visibility visibility)\n            {\n                return visibility == Visibility.Visible;\n            }\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Dialogs/AboutDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"FluentTerminal.App.Dialogs.AboutDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    x:Uid=\"AboutDialog\"\n    Title=\"About\"\n    Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n    CloseButtonClick=\"ContentDialog_CloseButtonClick\"\n    CloseButtonText=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=Close}\"\n    DefaultButton=\"Close\"\n    mc:Ignorable=\"d\">\n\n    <StackPanel>\n        <Grid Margin=\"0,6,0,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"8\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n            <Viewbox\n                Grid.Column=\"0\"\n                Width=\"50\"\n                Height=\"50\"\n                HorizontalAlignment=\"Left\"\n                VerticalAlignment=\"Top\">\n                <Image Source=\"/Images/AppIcons/StoreLogo.scale-400.png\" Stretch=\"None\" />\n            </Viewbox>\n            <StackPanel Grid.Column=\"2\">\n                <TextBlock Style=\"{StaticResource TitleTextBlockStyle}\" Text=\"Fluent Terminal\" />\n                <TextBlock>\n                    <Run x:Name=\"CurrentVersion\" />\n                    <Run>-</Run>\n                    <Hyperlink x:Name=\"ReleaseNotesHyperlink\">\n                        <Run x:Uid=\"ReleaseNotes\" Text=\"Release notes\" />\n                    </Hyperlink>\n                </TextBlock>\n            </StackPanel>\n        </Grid>\n\n        <TextBlock>\n            <Hyperlink NavigateUri=\"https://github.com/felixse/FluentTerminal\">\n                <Run Text=\"GitHub\" />\n            </Hyperlink>\n        </TextBlock>\n\n        <TextBlock>\n            <Hyperlink NavigateUri=\"https://github.com/felixse/FluentTerminal/blob/master/LICENSE\">\n                <Run x:Uid=\"License\" />\n            </Hyperlink>\n        </TextBlock>\n\n        <TextBlock x:Name=\"CreatedBy\" Margin=\"0,24,0,0\" />\n\n    </StackPanel>\n</ContentDialog>\n"
  },
  {
    "path": "FluentTerminal.App/Dialogs/AboutDialog.xaml.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Utilities;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Documents;\n\nnamespace FluentTerminal.App.Dialogs\n{\n    public sealed partial class AboutDialog : ContentDialog, IAboutDialog\n    {\n        public AboutDialog(ISettingsService settingsService, IUpdateService updateService)\n        {\n            this.InitializeComponent();\n            var currentTheme = settingsService.GetCurrentTheme();\n            RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);\n\n            CreatedBy.Inlines.Add(new Run { Text = \"Created by \" });\n            CreatedBy.Inlines.Add(new Italic { Inlines = { new Run { Text = \"felixse \" } } });\n            CreatedBy.Inlines.Add(new Run { Text = \"and \" });\n            CreatedBy.Inlines.Add(new Hyperlink { Inlines = { new Run { Text = \"contributors\" } }, NavigateUri = new Uri(\"https://github.com/felixse/FluentTerminal/graphs/contributors\") });\n\n            CurrentVersion.Text = updateService.GetCurrentVersion().ToString();\n            ReleaseNotesHyperlink.NavigateUri = new Uri(\"https://github.com/felixse/FluentTerminal/releases/tag/\" + CurrentVersion.Text);\n        }\n\n        public new Task ShowAsync()\n        {\n            return base.ShowAsync().AsTask();\n        }\n\n        private void ContentDialog_CloseButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            Hide();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Dialogs/CreateKeyBindingDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"FluentTerminal.App.Dialogs.CreateKeyBindingDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"400\"\n    PrimaryButtonText=\"OK\"\n    SecondaryButtonText=\"Cancel\"\n    mc:Ignorable=\"d\">\n    <StackPanel>\n        <TextBlock Margin=\"0,0,0,24\" x:Uid=\"KeybindingDialogTitle\" Text=\"Enter your keybinding now\" />\n        <StackPanel x:Name=\"Root\" Orientation=\"Horizontal\">\n            <Grid\n                Width=\"48\"\n                Height=\"32\"\n                Margin=\"0,0,6,0\"\n                Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                Visibility=\"{x:Bind Ctrl, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                <TextBlock\n                    HorizontalAlignment=\"Center\"\n                    VerticalAlignment=\"Center\"\n                    Text=\"Ctrl\" />\n            </Grid>\n            <Grid\n                Width=\"48\"\n                Height=\"32\"\n                Margin=\"0,0,6,0\"\n                Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                Visibility=\"{x:Bind Meta, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                <FontIcon\n                    HorizontalAlignment=\"Center\"\n                    VerticalAlignment=\"Center\"\n                    FontFamily=\"/Assets/settingsicons.ttf#settingsicons\"\n                    Glyph=\"f\" />\n            </Grid>\n            <Grid\n                Width=\"48\"\n                Height=\"32\"\n                Margin=\"0,0,6,0\"\n                Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                Visibility=\"{x:Bind Alt, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                <TextBlock\n                    HorizontalAlignment=\"Center\"\n                    VerticalAlignment=\"Center\"\n                    Text=\"Alt\" />\n            </Grid>\n            <Grid\n                Width=\"48\"\n                Height=\"32\"\n                Margin=\"0,0,6,0\"\n                Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                Visibility=\"{x:Bind Shift, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                <TextBlock\n                    HorizontalAlignment=\"Center\"\n                    VerticalAlignment=\"Center\"\n                    Text=\"Shift\" />\n            </Grid>\n            <Grid\n                Width=\"48\"\n                Height=\"32\"\n                Margin=\"0,0,6,0\"\n                Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                Visibility=\"{x:Bind Key, Mode=OneWay, Converter={StaticResource ZeroToCollapsedConverter}}\">\n                <TextBlock\n                    HorizontalAlignment=\"Center\"\n                    VerticalAlignment=\"Center\"\n                    Text=\"{x:Bind Key, Mode=OneWay, Converter={StaticResource IntToExtendedVirtualKeyConverter}}\" />\n            </Grid>\n            <HyperlinkButton\n                x:Name=\"ResetButton\"\n                Margin=\"24,0,0,0\"\n                Command=\"{x:Bind ResetCommand}\"\n                x:Uid=\"ResetBtn\"\n                Content=\"Reset\"\n                PreviewKeyDown=\"OnResetButtonPreviewKeyDown\" />\n        </StackPanel>\n    </StackPanel>\n</ContentDialog>"
  },
  {
    "path": "FluentTerminal.App/Dialogs/CreateKeyBindingDialog.xaml.cs",
    "content": "﻿using FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System;\nusing System.ComponentModel;\nusing System.Runtime.CompilerServices;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Dialogs\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class CreateKeyBindingDialog : ContentDialog, ICreateKeyBindingDialog, INotifyPropertyChanged\n    {\n        private bool _ctrl;\n        private bool _shift;\n        private bool _alt;\n        private bool _meta;\n        private int _key;\n\n        public bool Ctrl\n        {\n            get => _ctrl;\n            set => SetProperty(ref _ctrl, value);\n        }\n\n        public bool Shift\n        {\n            get => _shift;\n            set => SetProperty(ref _shift, value);\n        }\n\n        public bool Alt\n        {\n            get => _alt;\n            set => SetProperty(ref _alt, value);\n        }\n\n        public bool Meta\n        {\n            get => _meta;\n            set => SetProperty(ref _meta, value);\n        }\n\n        public int Key\n        {\n            get => _key;\n            set\n            {\n                SetProperty(ref _key, value);\n            }\n        }\n\n        public CreateKeyBindingDialog()\n        {\n            InitializeComponent();\n            ResetCommand = new RelayCommand(Reset);\n            PreviewKeyDown += RegisterKeyBindingDialog_PreviewKeyDown;\n            Reset();\n\n            this.PrimaryButtonText = I18N.Translate(\"OK\");\n            this.SecondaryButtonText = I18N.Translate(\"Cancel\");\n        }\n\n        public ICommand ResetCommand { get; }\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public Task<KeyBinding> CreateKeyBinding()\n        {\n            return ShowAsync().AsTask()\n                .ContinueWith(\n                    t => t.Result == ContentDialogResult.Primary\n                        ? new KeyBinding {Alt = Alt, Ctrl = Ctrl, Key = Key, Meta = Meta, Shift = Shift}\n                        : null, TaskContinuationOptions.OnlyOnRanToCompletion);\n        }\n\n        private void OnResetButtonPreviewKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            e.Handled = true;\n        }\n\n        private void RegisterKeyBindingDialog_PreviewKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            switch (e.Key)\n            {\n                case VirtualKey.Control:\n                    Ctrl = true;\n                    break;\n\n                case VirtualKey.Shift:\n                    Shift = true;\n                    break;\n\n                case VirtualKey.Menu:\n                    Alt = true;\n                    break;\n\n                case VirtualKey.LeftWindows:\n                case VirtualKey.RightWindows:\n                    Meta = true;\n                    break;\n\n                default:\n                    Key = (int)e.Key;\n                    break;\n            }\n\n            ResetButton.Visibility = Visibility.Visible;\n            e.Handled = true;\n        }\n\n        private void Reset()\n        {\n            Alt = false;\n            Ctrl = false;\n            Meta = false;\n            Shift = false;\n            Key = 0;\n\n            ResetButton.Visibility = Visibility.Collapsed;\n        }\n\n        private void SetProperty<T>(ref T field, T value, [CallerMemberName]string propertyName = \"\")\n        {\n            if (field?.Equals(value) ?? value == null)\n            {\n                return;\n            }\n\n            field = value;\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Dialogs/CustomCommandDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"FluentTerminal.App.Dialogs.CustomCommandDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"using:Microsoft.Toolkit.Uwp.UI.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:enums=\"using:FluentTerminal.Models.Enums\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:viewModels=\"using:FluentTerminal.App.ViewModels\"\n    xmlns:views=\"using:FluentTerminal.App.Views\"\n    x:Uid=\"QuickCommandDialog\"\n    Title=\"Quick Launch\"\n    d:DataContext=\"{d:DesignInstance viewModels:CommandProfileProviderViewModel,\n                                     IsDesignTimeCreatable=False}\"\n    DefaultButton=\"Primary\"\n    PrimaryButtonClick=\"OnPrimaryButtonClick\"\n    PrimaryButtonText=\"Button1\"\n    SecondaryButtonClick=\"OnSecondaryButtonClick\"\n    SecondaryButtonText=\"Button2\"\n    mc:Ignorable=\"d\">\n    <ContentDialog.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <views:TemplateSelectors />\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </ContentDialog.Resources>\n\n    <StackPanel Width=\"500\" Orientation=\"Vertical\">\n\n        <AutoSuggestBox\n            x:Name=\"CommandTextBox\"\n            x:Uid=\"CommandTextBox\"\n            Margin=\"4,8,4,0\"\n            AutoMaximizeSuggestionArea=\"True\"\n            ItemsSource=\"{x:Bind ViewModel.Commands, Mode=OneWay}\"\n            KeyDown=\"CommandTextBox_OnKeyDown\"\n            KeyUp=\"CommandTextBox_OnKeyUp\"\n            PlaceholderText=\"Enter a command (e.g. 'ssh username@host')\"\n            PreviewKeyUp=\"CommandTextBox_OnPreviewKeyUp\"\n            QueryIcon=\"Find\"\n            QuerySubmitted=\"CommandTextBox_OnQuerySubmitted\"\n            SuggestionChosen=\"CommandTextBox_OnSuggestionChosen\"\n            Text=\"{x:Bind ViewModel.Command, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\"\n            TextChanged=\"CommandTextBox_OnTextChanged\">\n            <AutoSuggestBox.ItemTemplate>\n                <DataTemplate x:DataType=\"viewModels:CommandItemViewModel\">\n                    <Grid HorizontalAlignment=\"Stretch\">\n                        <ContentControl HorizontalAlignment=\"Stretch\" Content=\"{x:Bind RichTextBlock, Mode=OneWay}\" />\n                        <!--  I've had to create a transparent overlay over RichTextBox in order to make mouse selection work. Weird but true.  -->\n                        <Grid\n                            HorizontalAlignment=\"Stretch\"\n                            VerticalAlignment=\"Stretch\"\n                            Background=\"Transparent\" />\n                    </Grid>\n                </DataTemplate>\n            </AutoSuggestBox.ItemTemplate>\n\n            <AutoSuggestBox.ItemContainerStyle>\n                <Style TargetType=\"ListViewItem\">\n                    <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                </Style>\n            </AutoSuggestBox.ItemContainerStyle>\n        </AutoSuggestBox>\n\n        <controls:Expander\n            x:Uid=\"AdvancedExpander\"\n            Margin=\"4,12,4,0\"\n            Padding=\"8\"\n            HorizontalContentAlignment=\"Stretch\"\n            Header=\"Advanced\"\n            IsExpanded=\"False\">\n            <Grid Margin=\"5,20,5,20\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition />\n                    <RowDefinition />\n                    <RowDefinition />\n                </Grid.RowDefinitions>\n\n                <!--  Row  -->\n                <TextBlock\n                    x:Uid=\"SshInfoDialog_TabColor\"\n                    Grid.Row=\"0\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,8,8,0\"\n                    VerticalAlignment=\"Center\"\n                    Text=\"Tab color:\" />\n                <ComboBox\n                    Grid.Row=\"0\"\n                    Grid.Column=\"1\"\n                    Margin=\"0,8,0,0\"\n                    HorizontalAlignment=\"Stretch\"\n                    ItemTemplateSelector=\"{StaticResource TabThemeTemplateSelector}\"\n                    ItemsSource=\"{x:Bind ViewModel.TabThemes, Mode=OneWay}\"\n                    SelectedItem=\"{x:Bind ViewModel.SelectedTabTheme, Mode=TwoWay}\" />\n\n                <!--  Row  -->\n                <TextBlock\n                    x:Uid=\"Theme\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,8,8,0\"\n                    VerticalAlignment=\"Center\"\n                    Text=\"Theme:\" />\n                <ComboBox\n                    Grid.Row=\"1\"\n                    Grid.Column=\"1\"\n                    Margin=\"0,8,0,0\"\n                    HorizontalAlignment=\"Stretch\"\n                    ItemTemplateSelector=\"{StaticResource TerminalThemeTemplateSelector}\"\n                    ItemsSource=\"{x:Bind ViewModel.TerminalThemes, Mode=OneWay}\"\n                    SelectedItem=\"{x:Bind ViewModel.SelectedTerminalTheme, Mode=TwoWay}\" />\n\n                <!--  Row  -->\n                <CheckBox\n                    Grid.Row=\"2\"\n                    Grid.Column=\"0\"\n                    Grid.ColumnSpan=\"2\"\n                    Margin=\"0,8,0,0\"\n                    Content=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}\"\n                    IsChecked=\"{x:Bind ViewModel.UseConPty, Mode=TwoWay}\" />\n            </Grid>\n        </controls:Expander>\n\n        <Grid>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n            <Button\n                x:Uid=\"SaveShortcutButton\"\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Margin=\"0,10,4,0\"\n                HorizontalAlignment=\"Stretch\"\n                Command=\"{x:Bind SaveLinkCommand}\"\n                Content=\"Save Shortcut\" />\n        </Grid>\n\n    </StackPanel>\n</ContentDialog>"
  },
  {
    "path": "FluentTerminal.App/Dialogs/CustomCommandDialog.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.Storage.Pickers;\nusing Windows.UI.Popups;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing FluentTerminal.Models;\nusing System.Linq;\nusing Windows.Foundation;\nusing Windows.System;\nusing Windows.UI.Xaml.Input;\nusing FluentTerminal.App.ViewModels;\nusing System.Windows.Input;\nusing Microsoft.Toolkit.Mvvm.Input;\n\n// The Content Dialog item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238\n\nnamespace FluentTerminal.App.Dialogs\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class CustomCommandDialog : ContentDialog, ICustomCommandDialog\n    {\n        private readonly ISettingsService _settingsService;\n        private readonly IApplicationView _applicationView;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly ICommandHistoryService _historyService;\n\n        private IAsyncOperation<ContentDialogResult> _showDialogOperation;\n        private ContentDialogResult _dialogResult = ContentDialogResult.None;\n\n        private CommandItemViewModel _lastChosenCommand;\n\n        // TODO: The following field is for hacking strange behavior that deletes command text after Tab selection. Consider finding a better fix.\n        private CommandItemViewModel _tabSelectedCommand;\n\n        public CommandProfileProviderViewModel ViewModel { get; private set; }\n\n        public ICommand SaveLinkCommand { get; }\n\n        public CustomCommandDialog(ISettingsService settingsService, IApplicationView applicationView,\n            ITrayProcessCommunicationService trayProcessCommunicationService, ICommandHistoryService historyService)\n        {\n            _settingsService = settingsService;\n            _applicationView = applicationView;\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _historyService = historyService;\n\n            InitializeComponent();\n\n            SaveLinkCommand = new AsyncRelayCommand(SaveLink);\n\n            PrimaryButtonText = I18N.Translate(\"OK\");\n            SecondaryButtonText = I18N.Translate(\"Cancel\");\n\n            var currentTheme = settingsService.GetCurrentTheme();\n            RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);\n        }\n\n        private void SetupFocus()\n        {\n            CommandTextBox.Focus(FocusState.Programmatic);\n        }\n\n        private async void OnPrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n\n            var error = await ViewModel.AcceptChangesAsync();\n\n            if (string.IsNullOrEmpty(error))\n            {\n                _dialogResult = ContentDialogResult.Primary;\n            }\n            else\n            {\n                args.Cancel = true;\n\n                await new MessageDialog(error, I18N.Translate(\"InvalidInput\")).ShowAsync();\n\n                SetupFocus();\n            }\n\n            deferral.Complete();\n        }\n\n        private void OnSecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)\n        {\n            _dialogResult = ContentDialogResult.Secondary;\n        }\n\n        private async Task SaveLink()\n        {\n            var link = await ViewModel.GetUrlAsync();\n\n            if (!link.Item1)\n            {\n                await new MessageDialog(link.Item2, I18N.Translate(\"InvalidInput\")).ShowAsync();\n\n                return;\n            }\n\n            var content = ProfileProviderViewModelBase.GetShortcutFileContent(link.Item2);\n\n            var savePicker = new FileSavePicker { SuggestedStartLocation = PickerLocationId.Desktop };\n\n            savePicker.FileTypeChoices.Add(\"Shortcut\", new List<string> { \".url\" });\n\n            var file = await savePicker.PickSaveFileAsync();\n\n            if (file == null)\n            {\n                return;\n            }\n\n            try\n            {\n                await _trayProcessCommunicationService.SaveTextFileAsync(file.Path, content);\n            }\n            catch (Exception ex)\n            {\n                await new MessageDialog(ex.Message, I18N.Translate(\"Error\")).ShowAsync();\n            }\n        }\n\n        private void CommandTextBox_OnTextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)\n        {\n            if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)\n            {\n                ViewModel.SetFilter(sender.Text.Trim());\n            }\n            // TODO: Else branch added for Tab-selection hack mentioned above.\n            else if (_tabSelectedCommand != null)\n            {\n                ViewModel.Command = _tabSelectedCommand.ExecutedCommand.Value;\n                CommandSelected(_tabSelectedCommand);\n\n                _tabSelectedCommand = null;\n            }\n        }\n\n        private void CommandTextBox_OnSuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)\n        {\n            _lastChosenCommand = args.SelectedItem as CommandItemViewModel;\n        }\n\n        private void CommandTextBox_OnQuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)\n        {\n            _lastChosenCommand = null;\n\n            if (args.ChosenSuggestion is CommandItemViewModel commandItem)\n            {\n                CommandSelected(commandItem);\n            }\n        }\n\n        private void CommandSelected(CommandItemViewModel commandItem)\n        {\n            var executedCommand = ViewModel.Commands.FirstOrDefault(c =>\n                c.ExecutedCommand.Value.Equals(commandItem.ExecutedCommand.Value,\n                    StringComparison.OrdinalIgnoreCase))?.ExecutedCommand;\n\n            if (executedCommand != null)\n            {\n                ViewModel.SetProfile(executedCommand.ShellProfile.Clone());\n            }\n        }\n\n        private void CommandTextBox_OnPreviewKeyUp(object sender, KeyRoutedEventArgs e)\n        {\n            switch (e.Key)\n            {\n                case VirtualKey.Delete:\n\n                    if (_lastChosenCommand?.ExecutedCommand is { } command)\n                    {\n                        if (!ViewModel.IsProfileCommand(command))\n                        {\n                            ViewModel.RemoveCommand(command);\n                        }\n\n                        e.Handled = true;\n                    }\n                    else\n                    {\n                        e.Handled = false;\n                    }\n\n                    return;\n\n                default:\n\n                    e.Handled = false;\n\n                    return;\n            }\n        }\n\n        private async void CommandTextBox_OnKeyUp(object sender, KeyRoutedEventArgs e)\n        {\n            switch (e.Key)\n            {\n                case VirtualKey.Down:\n                case VirtualKey.Up:\n\n                    if (!CommandTextBox.IsSuggestionListOpen)\n                    {\n                        CommandTextBox.IsSuggestionListOpen = true;\n                    }\n\n                    return;\n\n                case VirtualKey.Enter:\n\n                    if (string.IsNullOrWhiteSpace(CommandTextBox.Text) && !CommandTextBox.IsSuggestionListOpen)\n                    {\n                        CommandTextBox.IsSuggestionListOpen = true;\n                    }\n                    else\n                    {\n                        var error = await ViewModel.AcceptChangesAsync();\n\n                        if (string.IsNullOrEmpty(error))\n                        {\n                            _dialogResult = ContentDialogResult.Primary;\n\n                            _showDialogOperation.Cancel();\n                        }\n                        else\n                        {\n                            await new MessageDialog(error, I18N.Translate(\"InvalidInput\")).ShowAsync();\n                            SetupFocus(); // needed to apply focus back to the textbox instead of the terminal in the background.\n                        }\n                    }\n\n                    return;\n                case VirtualKey.Escape:\n                    Hide();\n                    return;\n            }\n        }\n\n        private void CommandTextBox_OnKeyDown(object sender, KeyRoutedEventArgs e)\n        {\n            _tabSelectedCommand = null;\n\n            if (e.Key == VirtualKey.Tab)\n            {\n                _tabSelectedCommand = _lastChosenCommand;\n\n                if (_lastChosenCommand != null)\n                {\n                    ViewModel.Command = _lastChosenCommand.ExecutedCommand.Value;\n                    CommandSelected(_lastChosenCommand);\n                }\n            }\n\n            e.Handled = false;\n        }\n\n        public Task<ShellProfile> GetCustomCommandAsync(ShellProfile input = null)\n        {\n            ViewModel = new CommandProfileProviderViewModel(_settingsService, _applicationView,\n                _trayProcessCommunicationService, _historyService, input);\n\n            SetupFocus();\n\n            _showDialogOperation = ShowAsync();\n\n            return _showDialogOperation.AsTask().ContinueWith(t =>\n                (t.Status == TaskStatus.Canceled || t.Status == TaskStatus.RanToCompletion) &&\n                _dialogResult == ContentDialogResult.Primary\n                    ? ViewModel.Model\n                    : null);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Dialogs/InputDialog.xaml",
    "content": "﻿<ContentDialog\n    x:Class=\"FluentTerminal.App.Dialogs.InputDialog\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n    CloseButtonText=\"Cancel\"\n    PrimaryButtonText=\"OK\"\n    KeyDown=\"Dialog_KeyUp\"\n    mc:Ignorable=\"d\">\n    <TextBox VerticalAlignment=\"Center\" Text=\"{x:Bind Input, Mode=TwoWay}\" />\n</ContentDialog>"
  },
  {
    "path": "FluentTerminal.App/Dialogs/InputDialog.xaml.cs",
    "content": "﻿using FluentTerminal.App.Services.Dialogs;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Controls;\nusing System;\nusing Windows.UI.Xaml.Input;\nusing Windows.System;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Utilities;\n\nnamespace FluentTerminal.App.Dialogs\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class InputDialog : ContentDialog, IInputDialog\n    {\n\n        // ReSharper disable once RedundantDefaultMemberInitializer\n        private bool _enterPressed = false;\n        public string Input { get; private set; }\n\n        public InputDialog(ISettingsService settingsService)\n        {\n            this.InitializeComponent();\n            this.PrimaryButtonText = I18N.Translate(\"OK\");\n            this.CloseButtonText = I18N.Translate(\"Cancel\");\n            var currentTheme = settingsService.GetCurrentTheme();\n            RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);\n        }\n\n        public Task<string> GetInput()\n        {\n            return ShowAsync().AsTask()\n                .ContinueWith(t => t.Result == ContentDialogResult.Primary || _enterPressed ? Input : null,\n                    TaskContinuationOptions.OnlyOnRanToCompletion);\n        }\n\n        public void SetTitle(string title)\n        {\n            Title = title;\n        }\n\n        void Dialog_KeyUp(object sender, KeyRoutedEventArgs e)\n        {\n           if (e.Key == VirtualKey.Enter)\n           {\n                _enterPressed = true;\n                Hide();\n           }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Dialogs/SshInfoDialog.xaml",
    "content": "﻿<ContentDialog\r\n    x:Class=\"FluentTerminal.App.Dialogs.SshInfoDialog\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:controls=\"using:Microsoft.Toolkit.Uwp.UI.Controls\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:enums=\"using:FluentTerminal.Models.Enums\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    xmlns:profiles=\"using:FluentTerminal.App.ViewModels.Profiles\"\r\n    xmlns:views=\"using:FluentTerminal.App.Views\"\r\n    x:Uid=\"SshInfoDialog\"\r\n    Title=\"SSH Info\"\r\n    d:DataContext=\"{d:DesignInstance profiles:SshConnectViewModel,\r\n                                     IsDesignTimeCreatable=False}\"\r\n    DefaultButton=\"Primary\"\r\n    PrimaryButtonClick=\"OnPrimaryButtonClick\"\r\n    mc:Ignorable=\"d\">\r\n\r\n    <ContentDialog.Resources>\r\n        <ResourceDictionary>\r\n            <ResourceDictionary.MergedDictionaries>\r\n                <views:TemplateSelectors />\r\n            </ResourceDictionary.MergedDictionaries>\r\n        </ResourceDictionary>\r\n    </ContentDialog.Resources>\r\n\r\n    <ScrollViewer VerticalScrollBarVisibility=\"Auto\">\r\n        <StackPanel Width=\"500\" Orientation=\"Vertical\">\r\n\r\n            <Grid Margin=\"4,8,4,0\" HorizontalAlignment=\"Stretch\">\r\n                <Grid.ColumnDefinitions>\r\n                    <ColumnDefinition Width=\"Auto\" />\r\n                    <ColumnDefinition Width=\"Auto\" />\r\n                    <ColumnDefinition Width=\"*\" />\r\n                    <ColumnDefinition Width=\"Auto\" />\r\n                    <ColumnDefinition Width=\"Auto\" />\r\n                </Grid.ColumnDefinitions>\r\n                <Grid.RowDefinitions>\r\n                    <RowDefinition />\r\n                    <RowDefinition />\r\n                    <RowDefinition />\r\n                    <RowDefinition Height=\"Auto\" />\r\n                    <RowDefinition />\r\n                </Grid.RowDefinitions>\r\n\r\n                <!--  Row  -->\r\n                <TextBox\r\n                    x:Name=\"UserTextBox\"\r\n                    x:Uid=\"UserTextBox\"\r\n                    Grid.Row=\"0\"\r\n                    Grid.Column=\"0\"\r\n                    Width=\"140\"\r\n                    PlaceholderText=\"user\"\r\n                    Text=\"{x:Bind ViewModel.Username, Mode=TwoWay}\" />\r\n                <TextBlock\r\n                    Grid.Row=\"0\"\r\n                    Grid.Column=\"1\"\r\n                    FontSize=\"22\"\r\n                    Text=\"@\" />\r\n                <TextBox\r\n                    x:Name=\"HostTextBox\"\r\n                    x:Uid=\"HostTextBox\"\r\n                    Grid.Row=\"0\"\r\n                    Grid.Column=\"2\"\r\n                    PlaceholderText=\"host\"\r\n                    Text=\"{x:Bind ViewModel.Host, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n                <TextBlock\r\n                    Grid.Row=\"0\"\r\n                    Grid.Column=\"3\"\r\n                    Margin=\"2,0,0,0\"\r\n                    FontSize=\"22\"\r\n                    Text=\":\" />\r\n                <TextBox\r\n                    x:Uid=\"PortTextBox\"\r\n                    Grid.Row=\"0\"\r\n                    Grid.Column=\"4\"\r\n                    HorizontalAlignment=\"Stretch\"\r\n                    BeforeTextChanging=\"Port_OnBeforeTextChanging\"\r\n                    PlaceholderText=\"port\"\r\n                    Text=\"{x:Bind ViewModel.SshPort, Mode=TwoWay}\" />\r\n\r\n                <!--  Row  -->\r\n                <TextBox\r\n                    x:Uid=\"IdentityFileTextBox\"\r\n                    Grid.Row=\"1\"\r\n                    Grid.Column=\"0\"\r\n                    Grid.ColumnSpan=\"3\"\r\n                    Margin=\"0,8,0,0\"\r\n                    IsReadOnly=\"False\"\r\n                    PlaceholderText=\"Identity file path\"\r\n                    Text=\"{x:Bind ViewModel.IdentityFile, Mode=TwoWay}\" />\r\n                <Button\r\n                    x:Uid=\"BrowseButton\"\r\n                    Grid.Row=\"1\"\r\n                    Grid.Column=\"4\"\r\n                    Margin=\"0,8,0,0\"\r\n                    HorizontalAlignment=\"Stretch\"\r\n                    Command=\"{x:Bind BrowseIdentityFileCommand}\"\r\n                    Content=\"Browse\" />\r\n\r\n                <!--  Row  -->\r\n                <CheckBox\r\n                    x:Uid=\"UseMoshCheckBox\"\r\n                    Grid.Row=\"2\"\r\n                    Grid.Column=\"0\"\r\n                    Grid.ColumnSpan=\"5\"\r\n                    Margin=\"0,8,0,0\"\r\n                    Content=\"Use Mosh\"\r\n                    IsChecked=\"{x:Bind ViewModel.UseMosh, Mode=TwoWay}\" />\r\n\r\n            </Grid>\r\n\r\n            <controls:Expander\r\n                x:Uid=\"AdvancedExpander\"\r\n                Margin=\"4,10,4,0\"\r\n                Padding=\"0,10,0,10\"\r\n                HorizontalContentAlignment=\"Stretch\"\r\n                Header=\"Advanced\"\r\n                IsExpanded=\"False\">\r\n                <Grid Margin=\"5,20,5,20\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"Auto\" />\r\n                        <ColumnDefinition Width=\"*\" />\r\n                        <ColumnDefinition Width=\"8\" />\r\n                        <ColumnDefinition Width=\"*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <Grid.RowDefinitions>\r\n                        <RowDefinition />\r\n                        <RowDefinition />\r\n                        <RowDefinition />\r\n                        <RowDefinition />\r\n                    </Grid.RowDefinitions>\r\n\r\n                    <!--  Row  -->\r\n                    <TextBlock\r\n                        x:Uid=\"MoshPorts\"\r\n                        Grid.Row=\"0\"\r\n                        Grid.Column=\"0\"\r\n                        Margin=\"0,8,8,0\"\r\n                        VerticalAlignment=\"Center\"\r\n                        Text=\"Mosh ports:\"\r\n                        Visibility=\"{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\r\n                    <TextBox\r\n                        Grid.Row=\"0\"\r\n                        Grid.Column=\"1\"\r\n                        Margin=\"0,8,0,0\"\r\n                        VerticalAlignment=\"Center\"\r\n                        BeforeTextChanging=\"Port_OnBeforeTextChanging\"\r\n                        Text=\"{x:Bind ViewModel.MoshPortFrom, Mode=TwoWay}\"\r\n                        Visibility=\"{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\r\n                    <TextBlock\r\n                        Grid.Row=\"0\"\r\n                        Grid.Column=\"2\"\r\n                        Margin=\"2,8,0,0\"\r\n                        VerticalAlignment=\"Center\"\r\n                        Text=\":\"\r\n                        Visibility=\"{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\r\n                    <TextBox\r\n                        Grid.Row=\"0\"\r\n                        Grid.Column=\"3\"\r\n                        Margin=\"0,8,0,0\"\r\n                        VerticalAlignment=\"Center\"\r\n                        BeforeTextChanging=\"Port_OnBeforeTextChanging\"\r\n                        Text=\"{x:Bind ViewModel.MoshPortTo, Mode=TwoWay}\"\r\n                        Visibility=\"{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\r\n\r\n                    <!--  Row  -->\r\n                    <TextBlock\r\n                        x:Uid=\"SshInfoDialog_TabColor\"\r\n                        Grid.Row=\"1\"\r\n                        Grid.Column=\"0\"\r\n                        Margin=\"0,8,8,0\"\r\n                        VerticalAlignment=\"Center\"\r\n                        Text=\"Tab color:\" />\r\n                    <ComboBox\r\n                        Grid.Row=\"1\"\r\n                        Grid.Column=\"1\"\r\n                        Grid.ColumnSpan=\"3\"\r\n                        Margin=\"0,8,0,0\"\r\n                        HorizontalAlignment=\"Stretch\"\r\n                        ItemTemplateSelector=\"{StaticResource TabThemeTemplateSelector}\"\r\n                        ItemsSource=\"{x:Bind ViewModel.TabThemes, Mode=OneWay}\"\r\n                        SelectedItem=\"{x:Bind ViewModel.SelectedTabTheme, Mode=TwoWay}\" />\r\n\r\n                    <!--  Row  -->\r\n                    <TextBlock\r\n                        x:Uid=\"Theme\"\r\n                        Grid.Row=\"2\"\r\n                        Grid.Column=\"0\"\r\n                        Margin=\"0,8,8,0\"\r\n                        VerticalAlignment=\"Center\"\r\n                        Text=\"Theme:\" />\r\n                    <ComboBox\r\n                        Grid.Row=\"2\"\r\n                        Grid.Column=\"1\"\r\n                        Grid.ColumnSpan=\"3\"\r\n                        Margin=\"0,8,0,0\"\r\n                        HorizontalAlignment=\"Stretch\"\r\n                        ItemTemplateSelector=\"{StaticResource TerminalThemeTemplateSelector}\"\r\n                        ItemsSource=\"{x:Bind ViewModel.TerminalThemes, Mode=OneWay}\"\r\n                        SelectedItem=\"{x:Bind ViewModel.SelectedTerminalTheme, Mode=TwoWay}\" />\r\n\r\n                    <!--  Row  -->\r\n                    <CheckBox\r\n                        Grid.Row=\"3\"\r\n                        Grid.Column=\"0\"\r\n                        Grid.ColumnSpan=\"4\"\r\n                        Margin=\"0,8,0,0\"\r\n                        Content=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}\"\r\n                        IsChecked=\"{x:Bind ViewModel.UseConPty, Mode=TwoWay}\" />\r\n                </Grid>\r\n            </controls:Expander>\r\n\r\n            <Grid>\r\n                <Grid.ColumnDefinitions>\r\n                    <ColumnDefinition Width=\"*\" />\r\n                    <ColumnDefinition Width=\"*\" />\r\n                </Grid.ColumnDefinitions>\r\n                <Button\r\n                    x:Uid=\"SaveShortcutButton\"\r\n                    Grid.Row=\"0\"\r\n                    Grid.Column=\"1\"\r\n                    Margin=\"0,10,4,0\"\r\n                    HorizontalAlignment=\"Stretch\"\r\n                    Command=\"{x:Bind SaveLinkCommand}\"\r\n                    Content=\"Save Shortcut\" />\r\n            </Grid>\r\n\r\n        </StackPanel>\r\n    </ScrollViewer>\r\n</ContentDialog>"
  },
  {
    "path": "FluentTerminal.App/Dialogs/SshInfoDialog.xaml.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing Windows.Storage.Pickers;\r\nusing Windows.UI.Popups;\r\nusing Windows.UI.Xaml;\r\nusing Windows.UI.Xaml.Controls;\r\nusing FluentTerminal.App.Services.Dialogs;\r\nusing FluentTerminal.App.Utilities;\r\nusing FluentTerminal.App.Services;\r\nusing FluentTerminal.App.Services.Utilities;\r\nusing FluentTerminal.App.ViewModels.Profiles;\r\nusing FluentTerminal.Models;\r\nusing System.Windows.Input;\r\nusing Microsoft.Toolkit.Mvvm.Input;\r\n\r\nnamespace FluentTerminal.App.Dialogs\r\n{\r\n    // ReSharper disable once RedundantExtendsListEntry\r\n    public sealed partial class SshInfoDialog : ContentDialog, ISshConnectionInfoDialog\r\n    {\r\n        private readonly ISettingsService _settingsService;\r\n        private readonly IApplicationView _applicationView;\r\n        private readonly IFileSystemService _fileSystemService;\r\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\r\n\r\n        public SshConnectViewModel ViewModel { get; private set; }\r\n\r\n        public ICommand BrowseIdentityFileCommand { get; }\r\n        public ICommand SaveLinkCommand { get; }\r\n\r\n        public SshInfoDialog(ISettingsService settingsService, IApplicationView applicationView,\r\n            IFileSystemService fileSystemService, ITrayProcessCommunicationService trayProcessCommunicationService)\r\n        {\r\n            _settingsService = settingsService;\r\n            _applicationView = applicationView;\r\n            _fileSystemService = fileSystemService;\r\n            _trayProcessCommunicationService = trayProcessCommunicationService;\r\n\r\n            InitializeComponent();\r\n\r\n            BrowseIdentityFileCommand = new AsyncRelayCommand(BrowseIdentityFile);\r\n            SaveLinkCommand = new AsyncRelayCommand(SaveLink);\r\n\r\n            PrimaryButtonText = I18N.Translate(\"OK\");\r\n            SecondaryButtonText = I18N.Translate(\"Cancel\");\r\n\r\n            var currentTheme = settingsService.GetCurrentTheme();\r\n            RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);\r\n        }\r\n\r\n        private void SetupFocus()\r\n        {\r\n            if (string.IsNullOrEmpty(ViewModel.Username))\r\n            {\r\n                UserTextBox.Focus(FocusState.Programmatic);\r\n            }\r\n            else if (string.IsNullOrEmpty(ViewModel.Host))\r\n            {\r\n                HostTextBox.Focus(FocusState.Programmatic);\r\n            }\r\n            else\r\n            {\r\n                Focus(FocusState.Programmatic);\r\n            }\r\n        }\r\n\r\n        private async Task BrowseIdentityFile()\r\n        {\r\n            var openPicker = new FileOpenPicker { SuggestedStartLocation = PickerLocationId.DocumentsLibrary };\r\n            openPicker.FileTypeFilter.Add(\"*\");\r\n\r\n            var file = await openPicker.PickSingleFileAsync();\r\n\r\n            if (file != null)\r\n            {\r\n                ViewModel.SetValidatedIdentityFile(file.Path);\r\n            }\r\n        }\r\n\r\n        private async Task SaveLink()\r\n        {\r\n            var link = await ViewModel.GetUrlAsync();\r\n\r\n            if (!link.Item1)\r\n            {\r\n                await new MessageDialog(link.Item2, I18N.Translate(\"InvalidInput\")).ShowAsync();\r\n\r\n                return;\r\n            }\r\n\r\n            var content = ProfileProviderViewModelBase.GetShortcutFileContent(link.Item2);\r\n\r\n            var savePicker = new FileSavePicker\r\n            {\r\n                SuggestedStartLocation = PickerLocationId.Desktop,\r\n                SuggestedFileName = string.IsNullOrEmpty(ViewModel.Username)\r\n                    ? $\"{ViewModel.Host}.url\"\r\n                    : $\"{ViewModel.Username}@{ViewModel.Host}.url\"\r\n            };\r\n\r\n            savePicker.FileTypeChoices.Add(\"Shortcut\", new List<string> {\".url\"});\r\n\r\n            var file = await savePicker.PickSaveFileAsync();\r\n\r\n            if (file == null)\r\n            {\r\n                return;\r\n            }\r\n\r\n            try\r\n            {\r\n                await _trayProcessCommunicationService.SaveTextFileAsync(file.Path, content);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                await new MessageDialog(ex.Message, I18N.Translate(\"Error\")).ShowAsync();\r\n            }\r\n        }\r\n\r\n        private async void OnPrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)\r\n        {\r\n            var deferral = args.GetDeferral();\r\n\r\n            var error = await ViewModel.AcceptChangesAsync();\r\n\r\n            if (!string.IsNullOrEmpty(error))\r\n            {\r\n                args.Cancel = true;\r\n\r\n                await new MessageDialog(error, I18N.Translate(\"InvalidInput\")).ShowAsync();\r\n\r\n                SetupFocus();\r\n            }\r\n\r\n            deferral.Complete();\r\n        }\r\n\r\n        private void Port_OnBeforeTextChanging(TextBox sender, TextBoxBeforeTextChangingEventArgs args) =>\r\n            args.Cancel = string.IsNullOrEmpty(args.NewText) || args.NewText.Any(c => !char.IsDigit(c));\r\n\r\n        public async Task<SshProfile> GetSshConnectionInfoAsync(SshProfile input = null)\r\n        {\r\n            ViewModel = new SshConnectViewModel(_settingsService, _applicationView, _trayProcessCommunicationService,\r\n                _fileSystemService, input);\r\n\r\n            if (string.IsNullOrEmpty(ViewModel.Username))\r\n            {\r\n                ViewModel.Username = await _trayProcessCommunicationService.GetUserNameAsync();\r\n            }\r\n\r\n            SetupFocus();\r\n\r\n            return await ShowAsync() == ContentDialogResult.Primary ? (SshProfile) ViewModel.Model : null;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "FluentTerminal.App/FluentTerminal.App.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <UseAppLocalCoreFramework>true</UseAppLocalCoreFramework>\n  </PropertyGroup>\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{41020100-3414-4E0A-9A8E-92D3C4179DF8}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>FluentTerminal.App</RootNamespace>\n    <AssemblyName>FluentTerminal.App</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion Condition=\" '$(TargetPlatformVersion)' == '' \">10.0.19041.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <WindowsXamlEnableOverview>true</WindowsXamlEnableOverview>\n    <AppxBundlePlatforms>x64</AppxBundlePlatforms>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup>\n    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Actions\\FocusAction.cs\" />\n    <Compile Include=\"Adapters\\ApplicationViewAdapter.cs\" />\n    <Compile Include=\"Adapters\\AppServiceConnectionAdapter.cs\" />\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Behaviors\\MiddleClickBehavior.cs\" />\n    <Compile Include=\"CommandLineArguments\\NewVerb.cs\" />\n    <Compile Include=\"CommandLineArguments\\RunVerb.cs\" />\n    <Compile Include=\"CommandLineArguments\\SettingsVerb.cs\" />\n    <Compile Include=\"CommandLineArguments\\Target.cs\" />\n    <Compile Include=\"Converters\\MenuViewModelToFlyoutMenuConverter.cs\" />\n    <Compile Include=\"Converters\\BackgroundToApplicationThemeConverter.cs\" />\n    <Compile Include=\"Converters\\BooleanNegationConverter.cs\" />\n    <Compile Include=\"Converters\\ColorResourceKeyFallbackConverter.cs\" />\n    <Compile Include=\"Converters\\I18NConverter.cs\" />\n    <Compile Include=\"Converters\\IconConverter.cs\" />\n    <Compile Include=\"Converters\\MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs\" />\n    <Compile Include=\"Converters\\NullToCollapsedConverter.cs\" />\n    <Compile Include=\"Converters\\TabColorFallbackConverter.cs\" />\n    <Compile Include=\"Converters\\EnumValueToVisibiltyConverter.cs\" />\n    <Compile Include=\"Converters\\FalseToVisibleConverter.cs\" />\n    <Compile Include=\"Converters\\IntToExtendedVirtualKeyConverter.cs\" />\n    <Compile Include=\"Converters\\IntToVisibilityConverter.cs\" />\n    <Compile Include=\"Converters\\NegateConverter.cs\" />\n    <Compile Include=\"Converters\\StringToColorConverter.cs\" />\n    <Compile Include=\"Converters\\TabThemeSelectedConverter.cs\" />\n    <Compile Include=\"Converters\\TerminalViewModelToViewConverter.cs\" />\n    <Compile Include=\"Converters\\TextMiddleEllipsisConverter.cs\" />\n    <Compile Include=\"Converters\\ToolTipValueToPixelConverter.cs\" />\n    <Compile Include=\"Converters\\TrueToVisibleConverter.cs\" />\n    <Compile Include=\"Adapters\\MessageDialogAdapter.cs\" />\n    <Compile Include=\"Dialogs\\AboutDialog.xaml.cs\">\n      <DependentUpon>AboutDialog.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Services\\CommandHistoryService.cs\" />\n    <Compile Include=\"Utilities\\DelayedAction.cs\" />\n    <Compile Include=\"Utilities\\DispatcherExtensions.cs\" />\n    <Compile Include=\"Utilities\\InteractiveSurface.cs\" />\n    <Compile Include=\"ViewModels\\CommandItemViewModel.cs\" />\n    <Compile Include=\"Dialogs\\CustomCommandDialog.xaml.cs\">\n      <DependentUpon>CustomCommandDialog.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Dialogs\\InputDialog.xaml.cs\">\n      <DependentUpon>InputDialog.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Dialogs\\SshInfoDialog.xaml.cs\">\n      <DependentUpon>SshInfoDialog.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Services\\ApplicationLanguageService.cs\" />\n    <Compile Include=\"Services\\ClipboardService.cs\" />\n    <Compile Include=\"Services\\FileSystemService.cs\" />\n    <Compile Include=\"Services\\ImageFileSystemService.cs\" />\n    <Compile Include=\"Services\\StartupTaskService.cs\" />\n    <Compile Include=\"Services\\SystemFontService.cs\" />\n    <Compile Include=\"Utilities\\ColorExtensions.cs\" />\n    <Compile Include=\"Utilities\\ContrastHelper.cs\" />\n    <Compile Include=\"Utilities\\JumpListHelper.cs\" />\n    <Compile Include=\"ViewModels\\CommandProfileProviderViewModel.cs\" />\n    <Compile Include=\"ViewModels\\DelayedHistorySaver.cs\" />\n    <Compile Include=\"ViewModels\\EnvironmentVariableViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Infrastructure\\IErrorHandler.cs\" />\n    <Compile Include=\"ViewModels\\ISessionSuccessTracker.cs\" />\n    <Compile Include=\"ViewModels\\ITerminalView.cs\" />\n    <Compile Include=\"ViewModels\\MainViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\ExpandableMenuItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\Mdl2Icon.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\MenuItemKeyBindingViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\MenuItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\MenuItemViewModelBase.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\MenuViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\RadioMenuItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\SeparatorMenuItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Menu\\ToggleMenuItemViewModel.cs\" />\n    <Compile Include=\"ViewModels\\OverlayViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Profiles\\CommonProfileProviderViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Profiles\\ProfileProviderViewModelBase.cs\" />\n    <Compile Include=\"ViewModels\\Profiles\\SshConnectionInfoValidationResult.cs\" />\n    <Compile Include=\"ViewModels\\Profiles\\SshConnectViewModel.cs\" />\n    <Compile Include=\"ViewModels\\ProfileViewModelBase.cs\" />\n    <Compile Include=\"ViewModels\\SettingsViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\AboutPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\GeneralPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\KeyBindingsPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\KeyBindingsViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\KeyBindingViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\MousePageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\ProfilesPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\SshProfilesPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\TerminalPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Settings\\ThemesPageViewModel.cs\" />\n    <Compile Include=\"ViewModels\\ShellProfileViewModel.cs\" />\n    <Compile Include=\"ViewModels\\SshProfileViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TabThemeViewModel.cs\" />\n    <Compile Include=\"ViewModels\\TerminalViewModel.cs\" />\n    <Compile Include=\"ViewModels\\ThemeViewModel.cs\" />\n    <Compile Include=\"ViewModels\\Utilities\\TaskUtilities.cs\" />\n    <Compile Include=\"ViewModels\\Utilities\\WebViewSpecialCharEncoder.cs\" />\n    <Compile Include=\"Views\\BooleanTemplateSelector.cs\" />\n    <Compile Include=\"Views\\EnvironmentVariablesView.xaml.cs\">\n      <DependentUpon>EnvironmentVariablesView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\KeyBindingsView.xaml.cs\">\n      <DependentUpon>KeyBindingsView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Dialogs\\CreateKeyBindingDialog.xaml.cs\">\n      <DependentUpon>CreateKeyBindingDialog.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\MenuExtension.cs\" />\n    <Compile Include=\"Views\\OverlayView.xaml.cs\">\n      <DependentUpon>OverlayView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPage.xaml.cs\">\n      <DependentUpon>SettingsPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPages\\MouseSettings.xaml.cs\">\n      <DependentUpon>MouseSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPages\\SshProfileSettings.xaml.cs\">\n      <DependentUpon>SshProfileSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPages\\ThemeSettings.xaml.cs\">\n      <DependentUpon>ThemeSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPages\\TerminalSettings.xaml.cs\">\n      <DependentUpon>TerminalSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPages\\GeneralSettings.xaml.cs\">\n      <DependentUpon>GeneralSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPages\\KeyBindingSettings.xaml.cs\">\n      <DependentUpon>KeyBindingSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\SettingsPages\\ShellProfileSettings.xaml.cs\">\n      <DependentUpon>ShellProfileSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\TabBar.xaml.cs\">\n      <DependentUpon>TabBar.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\TabBarBackgroundBindingHelper.cs\" />\n    <Compile Include=\"Views\\TemplateSelectors.xaml.cs\">\n      <DependentUpon>TemplateSelectors.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\TerminalKeybindTemplateSelector.cs\" />\n    <Compile Include=\"Views\\TabThemeTemplateSelector.cs\" />\n    <Compile Include=\"Views\\TerminalColorPicker.xaml.cs\">\n      <DependentUpon>TerminalColorPicker.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\NoValueTemplateSelector.cs\" />\n    <Compile Include=\"Views\\TerminalThemeTemplateSelector.cs\" />\n    <Compile Include=\"Views\\TerminalView.xaml.cs\">\n      <DependentUpon>TerminalView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Views\\XtermTerminalView.xaml.cs\">\n      <DependentUpon>XtermTerminalView.xaml</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <Content Include=\"Assets\\LockScreenLogo.scale-200.png\" />\n    <Content Include=\"Assets\\settingsicons.ttf\" />\n    <Content Include=\"Assets\\SplashScreen.scale-200.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-24_altform-unplated.png\" />\n    <Content Include=\"Assets\\StoreLogo.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-200.png\" />\n    <Content Include=\"Client\\bundle.js\" />\n    <Content Include=\"Client\\index.html\" />\n    <Content Include=\"Client\\style.css\" />\n    <Content Include=\"Client\\xterm.css\" />\n    <PRIResource Include=\"Strings\\eo\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\ru\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\fr\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\es\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\de\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\ug-Arab\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\zh-Hant\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\en-US\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <PRIResource Include=\"Strings\\it\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\nl\\Resources.resw\" />\n    <PRIResource Include=\"Strings\\pl\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"Dialogs\\AboutDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Dialogs\\CustomCommandDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Dialogs\\InputDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Dialogs\\SshInfoDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\EnvironmentVariablesView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\KeyBindingsView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Styles\\Custom.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Page>\n    <Page Include=\"Dialogs\\CreateKeyBindingDialog.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\OverlayView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPages\\MouseSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPages\\SshProfileSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPages\\ThemeSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPages\\TerminalSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPages\\GeneralSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPages\\KeyBindingSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\SettingsPages\\ShellProfileSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\TabBar.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\TerminalColorPicker.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\TerminalView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\TemplateSelectors.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Views\\XtermTerminalView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <PackageReference Include=\"Autofac\">\n      <Version>6.3.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"CommandLineParser\">\n      <Version>2.8.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.NETCore.UniversalWindowsPlatform\">\n      <Version>6.2.13</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Toolkit.Mvvm\">\n      <Version>7.1.2</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Toolkit.Uwp.UI\">\n      <Version>7.1.2</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Toolkit.Uwp.UI.Controls\">\n      <Version>7.1.2</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.UI.Xaml\">\n      <Version>2.8.0-prerelease.210927001</Version>\n    </PackageReference>\n    <PackageReference Include=\"Microsoft.Xaml.Behaviors.Uwp.Managed\">\n      <Version>2.0.1</Version>\n    </PackageReference>\n    <PackageReference Include=\"Newtonsoft.Json\">\n      <Version>13.0.1</Version>\n    </PackageReference>\n    <PackageReference Include=\"System.IO.FileSystem.Primitives\">\n      <Version>4.3.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"System.Runtime.Handles\">\n      <Version>4.3.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"System.Text.Encoding.Extensions\">\n      <Version>4.3.0</Version>\n    </PackageReference>\n    <PackageReference Include=\"Win2D.uwp\">\n      <Version>1.26.0</Version>\n    </PackageReference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\FluentTerminal.App.Services\\FluentTerminal.App.Services.csproj\">\n      <Project>{a1ad7385-f92e-46ac-a349-43dc99b1e72d}</Project>\n      <Name>FluentTerminal.App.Services</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\FluentTerminal.Models\\FluentTerminal.Models.csproj\">\n      <Project>{5EA40453-A0AA-449E-8406-D6EA51D7E70E}</Project>\n      <Name>FluentTerminal.Models</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\FluentTerminal.RuntimeComponent\\FluentTerminal.RuntimeComponent.csproj\">\n      <Project>{BAAE6239-343F-454C-977F-F81F91715961}</Project>\n      <Name>FluentTerminal.RuntimeComponent</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\ro\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\hi\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\pt-BR\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\ar-iq\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\he\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\ja\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\ko\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\uk\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\ar\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\id\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\zh-Hans\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\fa\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\hu\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\tr\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\hr\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\sl\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\az-Latn\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\sv\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\uz-Latn\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\bs\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"WindowsDesktop, Version=10.0.19041.0\">\n      <Name>Windows Desktop Extensions for the UWP</Name>\n    </SDKReference>\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\bg\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\pt\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\sq\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\sr-Latn\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\sr-cyrl\\Resources.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Strings\\vi\\Resources.resw\" />\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <PropertyGroup>\n    <PostBuildEvent>\n    </PostBuildEvent>\n  </PropertyGroup>\n  <PropertyGroup>\n    <PreBuildEvent>xcopy /y \"$(SolutionDir)FluentTerminal.Client\\dist\" \"$(ProjectDir)Client\\\"</PreBuildEvent>\n  </PropertyGroup>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "FluentTerminal.App/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\" xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\" xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" xmlns:uap5=\"http://schemas.microsoft.com/appx/manifest/uap/windows10/5\" xmlns:rescap=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities\" xmlns:desktop=\"http://schemas.microsoft.com/appx/manifest/desktop/windows10\" IgnorableNamespaces=\"uap mp desktop rescap\">\r\n  <Identity Name=\"53621FSApps.FluentTerminal\" Publisher=\"CN=BDC72197-B634-438A-B863-16DCB7D90C85\" Version=\"0.5.3.0\" />\r\n  <mp:PhoneIdentity PhoneProductId=\"f7225014-f405-4342-ad2e-ebf6ac60ea2c\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\r\n  <Properties>\r\n    <DisplayName>Fluent Terminal</DisplayName>\r\n    <PublisherDisplayName>FS Apps</PublisherDisplayName>\r\n    <Logo>Assets\\StoreLogo.png</Logo>\r\n  </Properties>\r\n  <Dependencies>\r\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.0.0\" MaxVersionTested=\"10.0.0.0\" />\r\n  </Dependencies>\r\n  <Resources>\r\n    <Resource Language=\"x-generate\" />\r\n  </Resources>\r\n  <Applications>\r\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"FluentTerminal.App.App\">\r\n      <uap:VisualElements DisplayName=\"Fluent Terminal\" Square150x150Logo=\"Assets\\Square150x150Logo.png\"\r\n        Square44x44Logo=\"Assets\\Square44x44Logo.png\" Description=\"Fluent Terminal\" BackgroundColor=\"transparent\">\r\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\Wide310x150Logo.png\"/>\r\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" />\r\n      </uap:VisualElements>\r\n    </Application>\r\n  </Applications>\r\n</Package>"
  },
  {
    "path": "FluentTerminal.App/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Resources;\nusing System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following\n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"FluentTerminal.App\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"FluentTerminal.App\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2018\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version\n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers\n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]\n[assembly: NeutralResourcesLanguage(\"en-US\")]\n"
  },
  {
    "path": "FluentTerminal.App/Properties/Default.rd.xml",
    "content": "<!--\n    Diese Datei enthält von .NET Native verwendete Laufzeitdirektiven. Die hier gezeigten Standardwerte sind für die meisten\n    Entwickler geeignet. Sie können diese Parameter aber ändern, um das Verhalten des .NET Native-\n    Optimierers anzupassen.\n\n    Laufzeitdirektiven sind hier dokumentiert: https://go.microsoft.com/fwlink/?LinkID=391919\n\n    Vollständige Aktivierung der Reflektion von \"App1.MyClass\" und allen zugehörigen öffentlichen/privaten Membern:\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\" />\n\n    Aktivierung der dynamischen Erstellung der spezifischen Instanziierung von \"AppClass<T>\" über \"System.Int32\":\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Verwendung der Namespacedirektive zum Anwenden der Reflektionsrichtlinie auf alle Typen in einem bestimmten Namespace:\n    <Namespace Name=\"DataClasses.ViewModels\" Serialize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      Ein Assemblyelement mit Name=\"*Application*\" gilt für alle Assemblys im\n      Anwendungspaket. Die Sternchen sind keine Platzhalter.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n\n    <!-- Fügen Sie hier Ihre anwendungsspezifischen Laufzeitdirektiven ein. -->\n  </Application>\n</Directives>"
  },
  {
    "path": "FluentTerminal.App/Services/ApplicationLanguageService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Globalization;\n\nnamespace FluentTerminal.App.Services\n{\n    public class ApplicationLanguageService : IApplicationLanguageService\n    {\n        private readonly Dictionary<string, string> _languages = new Dictionary<string, string>\n        {\n            [\"\"] = \"System default\",\n            [\"ar\"] = \"العربية\",\n            [\"ar-IQ\"] = \"اللهجة العراقية\",\n            [\"az-Latn\"] = \"azərbaycan dili\",\n            [\"bg\"] = \"български\",\n            [\"bs\"] = \"bosanski\",\n            [\"de\"] = \"Deutsch\",\n            [\"en\"] = \"English\",\n            [\"eo\"] = \"Esperanto\",\n            [\"es\"] = \"Español\",\n            [\"fa\"] = \"فارسی\",\n            [\"fr\"] = \"Français\",\n            [\"he\"] = \"עברית\",\n            [\"hi\"] = \"हिन्दुस्तानी\",\n            [\"hr\"] = \"Hrvatski\",\n            [\"hu\"] = \"magyar\",\n            [\"id\"] = \"Bahasa Indonesia\",\n            [\"it\"] = \"Italiano\",\n            [\"ja\"] = \"日本語\",\n            [\"ko\"] = \"한국어\",\n            [\"nl\"] = \"Nederlands\",\n            [\"pl\"] = \"Polski\",\n            [\"pt\"] = \"Português\",\n            [\"pt-BR\"] = \"Português-Brasil\",\n            [\"ro\"] = \"Română\",\n            [\"ru\"] = \"Pусский\",\n            [\"sl\"] = \"Slovenščina\",\n            [\"sr-Latn\"] = \"srpski\",\n            [\"sr-cyrl\"] = \"српски\",\n            [\"sv\"] = \"svenska\",\n            [\"sq\"] = \"shqip\",\n            [\"tr\"] = \"Türkçe\",\n            [\"ug-Arab\"] = \"ئۇيغۇر تىلى\",\n            [\"uk\"] = \"Українська\",\n            [\"uz-Latn\"] = \"O'zbek tili\",\n            [\"vi\"] = \"tiếng việt\",\n            [\"zh-Hans\"] = \"简体中文\",\n            [\"zh-Hant\"] = \"繁體中文\"\n        };\n\n        public IEnumerable<string> Languages => _languages.Values;\n\n        public void SetLanguage(string language)\n        {\n            if (!_languages.ContainsValue(language))\n            {\n                throw new ArgumentException($\"Language not supported: {language}\", nameof(language));\n            }\n\n            ApplicationLanguages.PrimaryLanguageOverride = _languages.FirstOrDefault(x => x.Value == language).Key;\n        }\n\n        public string GetCurrentLanguage()\n        {\n            if (!_languages.ContainsKey(ApplicationLanguages.PrimaryLanguageOverride))\n            {\n                ApplicationLanguages.PrimaryLanguageOverride = \"en\";\n            }\n            return _languages[ApplicationLanguages.PrimaryLanguageOverride];\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Services/ClipboardService.cs",
    "content": "﻿using System;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.DataTransfer;\n\nnamespace FluentTerminal.App.Services\n{\n    public class ClipboardService : IClipboardService\n    {\n        /// <summary>\n        /// Right trim whitespaces for each line.\n        /// </summary>\n        private static readonly Regex RTrimMultiLinesPattern = new Regex(@\"([^\\S\\r\\n]+)([\\r\\n])\", RegexOptions.Compiled);\n\n        private readonly ISettingsService _settingsService;\n\n        public ClipboardService(ISettingsService settingsService)\n        {\n            _settingsService = settingsService;\n        }\n\n        public Task<string> GetTextAsync()\n        {\n            var content = Clipboard.GetContent();\n            if (content.Contains(StandardDataFormats.Text))\n            {\n                return content.GetTextAsync().AsTask();\n            }\n            // Otherwise return a new task that just sends an empty string.\n            return Task.FromResult(string.Empty);\n        }\n\n        public void SetText(string text)\n        {\n            if (_settingsService.GetApplicationSettings().RTrimCopiedLines)\n            {\n                text = RTrimMultiLinesPattern.Replace(text, \"$2\");\n            }\n            var dataPackage = new DataPackage();\n            dataPackage.SetText(text);\n            Clipboard.SetContent(dataPackage);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Services/CommandHistoryService.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Messages;\nusing Microsoft.Toolkit.Mvvm.Messaging;\nusing Newtonsoft.Json;\n\nnamespace FluentTerminal.App.Services\n{\n    public class CommandHistoryService : ICommandHistoryService\n    {\n        #region Constants\n\n        // Maximal number of commands to save to history\n        private const int MaxHistory = 1_000;\n\n        private static readonly DateTime NeverUsedTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);\n\n        #endregion Constants\n\n        #region Static\n\n        private static string GetHash(string value)\n        {\n            if (string.IsNullOrEmpty(value))\n            {\n                return value;\n            }\n\n            value = value.ToLowerInvariant();\n\n            byte[] hashed;\n\n            using (var md5 = MD5.Create())\n            {\n                hashed = md5.ComputeHash(Encoding.UTF32.GetBytes(value));\n            }\n\n            var builder = new StringBuilder();\n\n            foreach (var b in hashed)\n            {\n                builder.Append(b.ToString(\"X2\"));\n            }\n\n            return $\"hist_{builder}_{value.Length:##########}\";\n        }\n\n        #endregion Static\n\n        #region Fields\n\n        private readonly IApplicationDataContainer _historyContainer;\n        private readonly ISettingsService _settingsService;\n\n        private List<ExecutedCommand> _history;\n\n        #endregion Fields\n\n        #region Constructor\n\n        public CommandHistoryService(ApplicationDataContainers containers, ISettingsService settingsService)\n        {\n            _settingsService = settingsService;\n            _historyContainer = containers.HistoryContainer;\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        private List<ExecutedCommand> GetRawHistory(Func<List<ShellProfile>> profilesProvider = null)\n        {\n            if (_history == null)\n            {\n                _history = LoadHistory();\n\n                CleanupHistory(profilesProvider);\n            }\n\n            return _history;\n        }\n\n        private List<ExecutedCommand> LoadHistory()\n        {\n            List<ExecutedCommand> history = null;\n\n            try\n            {\n                history = _historyContainer.GetAll()\n                    .Select(c => JsonConvert.DeserializeObject<ExecutedCommand>((string) c)).ToList();\n            }\n            catch\n            {\n                // ignored\n            }\n\n            if (history == null)\n            {\n                // If there's an issue with getting history, we simply clear history as if the app haven't been used at all.\n                // Not too useful fix, but it shouldn't happen ever anyway.\n                _historyContainer.Clear();\n\n                return new List<ExecutedCommand>();\n            }\n\n            FixMoshBackwardCompatibility(history);\n\n            return history;\n        }\n\n        private void FixMoshBackwardCompatibility(List<ExecutedCommand> commands)\n        {\n            for (var i = 0; i < commands.Count; i++)\n            {\n                var command = commands[i];\n\n                if (command.ShellProfile == null) continue;\n\n                var newProfile = MoshBackwardCompatibility.FixProfile(command.ShellProfile);\n\n                if (ReferenceEquals(command.ShellProfile, newProfile)) continue;\n\n                if (!command.ProfileId.HasValue)\n                {\n                    newProfile.Name = $\"{newProfile.Location} {newProfile.Arguments}\".Trim();\n                }\n\n                var newCommand = new ExecutedCommand\n                {\n                    Value = newProfile.Name,\n                    ProfileId = command.ProfileId,\n                    LastExecution = command.LastExecution,\n                    ExecutionCount = command.ExecutionCount,\n                    ShellProfile = newProfile\n                };\n\n                commands.Insert(i, newCommand);\n\n                commands.RemoveAt(i + 1);\n\n                Delete(command);\n\n                Save(newCommand);\n            }\n        }\n\n        private void Save(ExecutedCommand executedCommand)\n        {\n            _historyContainer.WriteValueAsJson(GetHash(executedCommand.Value), executedCommand);\n\n            WeakReferenceMessenger.Default.Send(new CommandHistoryChangedMessage());\n        }\n\n        /// <summary>\n        /// Removes all profiles from history if they are deleted in the settings page meanwhile.\n        /// </summary>\n        private void CleanupHistory(Func<List<ShellProfile>> profilesProvider = null)\n        {\n            if (_history == null)\n            {\n                // Not loaded yet, so we won't clear. This won't happen though.\n\n                return;\n            }\n\n            if (!_history.Any())\n            {\n                return;\n            }\n\n            var profiles = profilesProvider?.Invoke() ?? _settingsService.GetAllProfiles().ToList();\n\n            for (var i = 0; i < _history.Count; i++)\n            {\n                var command = _history[i];\n\n                if (command.ProfileId.HasValue && !profiles.Any(p => p.Id.Equals(command.ProfileId.Value)))\n                {\n                    _history.Remove(command);\n\n                    Delete(command);\n\n                    i--;\n\n                    continue;\n                }\n\n                if (command.ShellProfile == null)\n                {\n                    var profile = profiles.FirstOrDefault(p =>\n                        string.Equals(p.Name, command.Value, StringComparison.OrdinalIgnoreCase));\n\n                    if (profile == null)\n                    {\n                        _history.Remove(command);\n\n                        Delete(command);\n\n                        i--;\n                    }\n                    else\n                    {\n                        command.ProfileId = profile.Id;\n\n                        Save(command);\n                    }\n                }\n            }\n        }\n\n        private IEnumerable<ExecutedCommand> GetHistory(bool byNumberOfUsages, bool includeProfiles,\n            Func<List<ShellProfile>> profilesProvider = null)\n        {\n            var allProfiles =\n                new Lazy<List<ShellProfile>>(profilesProvider ?? (() => _settingsService.GetAllProfiles().ToList()));\n\n            var history = GetRawHistory(() => allProfiles.Value);\n\n            if (!history.Any())\n            {\n                yield break;\n            }\n\n            var ordered = byNumberOfUsages\n                ? history.OrderByDescending(c => c.ExecutionCount).ThenByDescending(c => c.LastExecution).ToList()\n                : history.OrderByDescending(c => c.LastExecution).ThenByDescending(c => c.ExecutionCount).ToList();\n\n            foreach (var command in ordered)\n            {\n                if (command.ProfileId.HasValue)\n                {\n                    var profile = allProfiles.Value.FirstOrDefault(p => p.Id.Equals(command.ProfileId.Value));\n\n                    if (profile == null)\n                    {\n                        history.Remove(command);\n\n                        Delete(command);\n                    }\n                    else\n                    {\n                        allProfiles.Value.Remove(profile);\n\n                        var newCommand = command.Clone();\n\n                        newCommand.ShellProfile = profile;\n\n                        yield return newCommand;\n                    }\n                }\n                else\n                {\n                    yield return command.Clone();\n                }\n            }\n\n            if (!includeProfiles)\n            {\n                yield break;\n            }\n\n            foreach (var unusedProfile in allProfiles.Value)\n            {\n                yield return new ExecutedCommand\n                {\n                    Value = unusedProfile.Name,\n                    ProfileId = unusedProfile.Id,\n                    ExecutionCount = 0,\n                    LastExecution = NeverUsedTime,\n                    ShellProfile = unusedProfile\n                };\n            }\n        }\n\n        /// <inheritdoc cref=\"ICommandHistoryService.GetHistoryRecentFirst\"/>\n        public List<ExecutedCommand> GetHistoryRecentFirst(bool includeProfiles = false, int top = int.MaxValue,\n            Func<List<ShellProfile>> profileProvider = null) =>\n            GetHistory(false, includeProfiles, profileProvider).Take(top).ToList();\n\n        /// <inheritdoc cref=\"ICommandHistoryService.GetHistoryMostUsedFirst\"/>\n        public List<ExecutedCommand> GetHistoryMostUsedFirst(bool includeProfiles = false, int top = int.MaxValue,\n            Func<List<ShellProfile>> profileProvider = null) =>\n            GetHistory(true, includeProfiles, profileProvider).Take(top).ToList();\n\n        public void MarkUsed(ShellProfile profile)\n        {\n            var history = GetRawHistory();\n\n            var existing = history.FirstOrDefault(c =>\n                c.ProfileId?.Equals(profile.Id) ??\n                string.Equals(profile.Name, c.Value, StringComparison.OrdinalIgnoreCase));\n\n            if (existing == null)\n            {\n                if (string.IsNullOrEmpty(profile.Name))\n                {\n                    profile.Name = $\"{profile.Location} {profile.Arguments}\".Trim();\n                }\n\n                existing = new ExecutedCommand {Value = profile.Name};\n\n                if (_settingsService.GetAllProfiles().Any(p => p.Id.Equals(profile.Id)))\n                {\n                    existing.ProfileId = profile.Id;\n                }\n                else\n                {\n                    existing.ShellProfile = profile;\n                }\n\n                var overflow = history.Count - MaxHistory + 1;\n\n                if (overflow > 0)\n                {\n                    // We already have max number of commands in history, so we need to delete some\n                    // Let's first try with cleanup\n                    CleanupHistory();\n\n                    overflow = history.Count - MaxHistory + 1;\n\n                    if (overflow > 0)\n                    {\n                        // We will remove the oldest commands\n                        var toRemove = history.OrderBy(c => c.LastExecution).ThenBy(c => c.ExecutionCount)\n                            .Take(overflow).ToList();\n\n                        foreach (var command in toRemove)\n                        {\n                            history.Remove(command);\n\n                            Delete(command);\n                        }\n                    }\n                }\n\n                history.Add(existing);\n            }\n            else if (existing.ShellProfile != null)\n            {\n                existing.ShellProfile = profile;\n            }\n\n            existing.LastExecution = DateTime.UtcNow;\n            existing.ExecutionCount++;\n\n            Save(existing);\n        }\n\n        public void Clear()\n        {\n            _history?.Clear();\n\n            _historyContainer.Clear();\n\n            WeakReferenceMessenger.Default.Send(new CommandHistoryChangedMessage());\n        }\n\n        public void Delete(ExecutedCommand executedCommand)\n        {\n            _history?.RemoveAll(c => string.Equals(c.Value, executedCommand.Value, StringComparison.OrdinalIgnoreCase));\n\n            _historyContainer.Delete(GetHash(executedCommand.Value));\n\n            WeakReferenceMessenger.Default.Send(new CommandHistoryChangedMessage());\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Services/FileSystemService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading.Tasks;\nusing Windows.Storage;\nusing Windows.Storage.Pickers;\nusing File = FluentTerminal.Models.File;\n\nnamespace FluentTerminal.App.Services\n{\n    public class FileSystemService : IFileSystemService\n    {\n        public Task<string> BrowseForDirectoryAsync()\n        {\n            var picker = new FolderPicker{ SuggestedStartLocation = PickerLocationId.ComputerFolder };\n            picker.FileTypeFilter.Add(\".whatever\"); // else a ComException is thrown\n\n            return picker.PickSingleFolderAsync().AsTask()\n                .ContinueWith(t => t.Result?.Path, TaskContinuationOptions.OnlyOnRanToCompletion);\n        }\n\n        public async Task<File> OpenFileAsync(IEnumerable<string> fileTypes)\n        {\n            var picker = new FileOpenPicker\n            {\n                SuggestedStartLocation = PickerLocationId.ComputerFolder\n            };\n\n            foreach (var fileType in fileTypes)\n            {\n                picker.FileTypeFilter.Add(fileType);\n            }\n\n            var file = await picker.PickSingleFileAsync();\n            if (file != null)\n            {\n                var stream = await file.OpenStreamForReadAsync().ConfigureAwait(true);\n\n                return new File(file.DisplayName, file.FileType, file.Path, stream);\n            }\n            return null;\n        }\n\n        public async Task<ImageFile> SaveImageInRoamingAsync(ImageFile imageFile)\n        {\n            var file = await StorageFile.GetFileFromPathAsync(imageFile.Path);\n\n            var backgroundThemeFolder = await ApplicationData.Current.RoamingFolder.CreateFolderAsync(\"BackgroundTheme\", CreationCollisionOption.OpenIfExists);\n\n            var storageFile = await file.CopyAsync(backgroundThemeFolder, file.DisplayName, NameCollisionOption.GenerateUniqueName);\n\n            return new ImageFile(\n                storageFile.DisplayName,\n                storageFile.FileType,\n                storageFile.Path);\n        }\n\n        public async Task SaveTextFileAsync(string name, string fileTypeDescription, string fileType, string content)\n        {\n            var picker = new FileSavePicker\n            {\n                SuggestedStartLocation = PickerLocationId.ComputerFolder, \n                SuggestedFileName = name\n            };\n            picker.FileTypeChoices.Add(fileTypeDescription, new List<string> { fileType });\n\n            var file = await picker.PickSaveFileAsync();\n\n            if (file != null)\n            {\n                await FileIO.WriteTextAsync(file, content);\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Services/ImageFileSystemService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading.Tasks;\nusing Windows.Storage;\nusing Windows.Storage.Pickers;\n\nnamespace FluentTerminal.App.Services\n{\n    public class ImageFileSystemService : IImageFileSystemService\n    {\n        public async Task RemoveTemporaryBackgroundThemeImageAsync()\n        {\n            var folder = await ApplicationData.Current.LocalCacheFolder.TryGetItemAsync(\"BackgroundThemeTmp\");\n\n            if (folder == null)\n            {\n                return;\n            }\n\n            var backgroundThemeTmpFolder =\n                await ApplicationData.Current.LocalCacheFolder.GetFolderAsync(\"BackgroundThemeTmp\");\n\n            if (backgroundThemeTmpFolder != null)\n            {\n                await backgroundThemeTmpFolder.DeleteAsync();\n            }\n        }\n\n        public async Task<ImageFile> ImportTemporaryImageFileAsync(IEnumerable<string> fileTypes)\n        {\n            var picker = new FileOpenPicker\n            {\n                SuggestedStartLocation = PickerLocationId.PicturesLibrary\n            };\n\n            foreach (var fileType in fileTypes)\n            {\n                picker.FileTypeFilter.Add(fileType);\n            }\n\n            var file = await picker.PickSingleFileAsync();\n\n            if (file == null)\n            {\n                return null;\n            }\n\n            var backgroundThemeTmpFolder =\n                await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync(\"BackgroundThemeTmp\",\n                    CreationCollisionOption.OpenIfExists);\n\n            if (backgroundThemeTmpFolder == null)\n            {\n                return null;\n            }\n\n            var item = await backgroundThemeTmpFolder.TryGetItemAsync(file.Name);\n\n            if (item == null)\n            {\n                var storageFile = await file.CopyAsync(backgroundThemeTmpFolder, file.Name);\n\n                return new ImageFile(storageFile.DisplayName, storageFile.FileType,\n                    $@\"{backgroundThemeTmpFolder.Path}\\{storageFile.Name}\");\n            }\n\n            return new ImageFile(file.DisplayName, file.FileType, $@\"{backgroundThemeTmpFolder.Path}\\{item.Name}\");\n        }\n\n        public async Task RemoveImportedImageAsync(string fileName)\n        {\n            var backgroundThemeFolder =\n                await ApplicationData.Current.RoamingFolder.CreateFolderAsync(\"BackgroundTheme\",\n                    CreationCollisionOption.OpenIfExists);\n\n            if (backgroundThemeFolder == null)\n            {\n                return;\n            }\n\n            var item = await backgroundThemeFolder.TryGetItemAsync(fileName);\n\n            if (item == null)\n            {\n                return;\n            }\n\n            var file = await backgroundThemeFolder.GetFileAsync(fileName);\n\n            if (file != null)\n            {\n                await file.DeleteAsync(StorageDeleteOption.PermanentDelete);\n            }\n        }\n\n        public string EncodeImage(ImageFile imageFile)\n        {\n            if(imageFile == null)\n            {\n                return string.Empty;\n            }\n\n            if (!System.IO.File.Exists(imageFile.Path))\n            {\n                return string.Empty;\n            }\n\n            return Convert.ToBase64String(System.IO.File.ReadAllBytes(imageFile.Path));\n        }\n\n        public async Task<ImageFile> ImportThemeImageAsync(ImageFile backgroundImage, string encodedImage)\n        {\n            var bitmapData = Convert.FromBase64String(encodedImage);\n            var streamBitmap = new MemoryStream(bitmapData);\n\n            var localFolder =\n                await ApplicationData.Current.RoamingFolder.CreateFolderAsync(\"BackgroundTheme\",\n                    CreationCollisionOption.OpenIfExists);\n\n            var storageFile = await localFolder.CreateFileAsync($\"{backgroundImage.Name}{backgroundImage.FileType}\",\n                CreationCollisionOption.GenerateUniqueName);\n\n            using (var stream = await storageFile.OpenStreamForWriteAsync())\n            {\n                stream.Seek(0, SeekOrigin.Begin);\n                streamBitmap.WriteTo(stream);\n            }\n\n            return new ImageFile(storageFile.DisplayName, storageFile.FileType, storageFile.Path);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Services/StartupTaskService.cs",
    "content": "﻿using FluentTerminal.Models.Enums;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\n\nnamespace FluentTerminal.App.Services\n{\n    public class StartupTaskService : IStartupTaskService\n    {\n        private const string StartupTaskName = \"FluentTerminalStartupTask\";\n\n        public Task<StartupTaskStatus> GetStatusAsync()\n        {\n            return StartupTask.GetAsync(StartupTaskName).AsTask().ContinueWith(t => ToStartupTaskStatus(t.Result.State),\n                TaskContinuationOptions.OnlyOnRanToCompletion);\n        }\n\n        public async Task<StartupTaskStatus> EnableStartupTaskAsync()\n        {\n            var startupTask = await StartupTask.GetAsync(StartupTaskName);\n            var newState = await startupTask.RequestEnableAsync();\n            return ToStartupTaskStatus(newState);\n        }\n\n        public Task DisableStartupTaskAsync()\n        {\n            return StartupTask.GetAsync(StartupTaskName).AsTask().ContinueWith(t => t.Result.Disable(),\n                TaskContinuationOptions.OnlyOnRanToCompletion);\n        }\n\n        private StartupTaskStatus ToStartupTaskStatus(StartupTaskState state)\n        {\n            return state switch\n            {\n                StartupTaskState.Disabled => StartupTaskStatus.Disabled,\n                StartupTaskState.DisabledByUser => StartupTaskStatus.DisabledByUser,\n                StartupTaskState.Enabled => StartupTaskStatus.Enabled,\n                StartupTaskState.DisabledByPolicy => StartupTaskStatus.DisabledByPolicy,\n                StartupTaskState.EnabledByPolicy => StartupTaskStatus.EnabledByPolicy,\n                _ => throw new ArgumentOutOfRangeException(nameof(state), state, null)\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Services/SystemFontService.cs",
    "content": "﻿using Microsoft.Graphics.Canvas.Text;\nusing System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n    public class SystemFontService : ISystemFontService\n    {\n        public IEnumerable<string> GetSystemFontFamilies()\n        {\n            return CanvasTextFormat.GetSystemFontFamilies();\n        }\n\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Strings/ar/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>من نحن</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>خلفية</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>أزرق</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>إغلاق</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>السؤال قبل إغلاق النافذة</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>السؤال قبل إغلاق اللسان</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>لون</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>اللون على اللسان الغير نشط</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>نسخ</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>إظهار عنوان اللسان الخاص أيضا على شريط العنوان</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>تغير العنوان</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>عام</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>أخضر</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>إظهار مؤشر الإخراج الجديد في علامات تبويب الخلفية</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>يجب إعاد التشعيل حتى يتم تطبيق الإعدادات</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>لسان جديد</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>لا شيء</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>االسنة</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>نوافذ</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>فتح منفذ الأوامر كـ</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>برتقالي</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>لصق</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>بنفسجي</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>احمر</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>إستعادة الأفتراضي</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>تشغيل عند تشغيل الجهاز</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>إعدادات</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>إعدادات</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>إظهار في علبة النظام</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>أظهر نوافذ التبويب على</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>أزرق مخضر</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>قاع</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>القمة</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>تسطير</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>سطر التبويب المختار</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>عن</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>عام</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>ارتباط المفاتيح</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>فأرة</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>ملف شخصي</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>منفذ أوامر</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>مواضيع</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>أضف</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>شروط</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>شفافية الخلفية</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>مؤشر رماش</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>نص عريض</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>إلغاء</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>التحقق من التحديثات...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>التحقق من التحديثات</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>إضغط على اللون لتغيًرة</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>استنساخ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>لوحة الألوان</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>إشعار نسخ النص</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>نسخ عند الإختيار</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>إنشاء جديد</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>الإصدار الحالي</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>شريط</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>منع</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>نمط المؤشر</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>تطير</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>حذف</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>لا تعدل نهاية السطر</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>تحرير</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>إخراج</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>عائلة الخط</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>حجم الخط</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>إدراج</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>إختصارات لوحة المفاتيح</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>إختصارات لوحة المفاتيح</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>الإصدار الأخير</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>رخصة</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>نمط ترجمة نهاية السطر</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>نمط ترجمة نهاية السطر عند اللصق:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>أمر الزر الاوسط</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>فأرة</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>قائمة السياق</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>لا شيء</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>لصق</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>إنشاء جديد</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>تبطين</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>الأسم</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>ملفات شخصية</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>موضوع</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>مذكرة الإصدار</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>أمر الزر الأيمن</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>حفظ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>حد التمرير الى الخلف</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>إخفاء الي</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>مخفي</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>نمط شريط التمرير</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>مرئي</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>تفعيل النشاط</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>وضع كإفتراضي</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>موقع Shell القابل للتنفيذ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>لون التبويب</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>منفذ الأوامر</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>موضوع:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>الناشر</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>اسم</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>تغير نهاية السطور الى CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>تغير نهاية السطور الى CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>تغير نهاية السطور الى LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>مكان العمل</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد إغلاق التبويب &quot;{0}&quot; ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد إغلاق هذه النافذة؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد حذف إرتباط المفتاح هذا؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد حذف هذا الموضوع؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد تجاهل جميع التغيرات؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد إستعادة الأعدادات العامة؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد إستعادة إرتباط المففاتيح الإفتراضي؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد إستعادة أعدادات الفأرة؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد إستعادة هذا الملف الشخصي؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>هل أنت متأكد انك تريد إستعادة خيارات منفذ الأوامر الأفتراضية؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>تعطلت من السياسة</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>تعطلت من مستخدم. يرجى إعادة تفعيلها من تبويب بدأ التشغيل من مدير المهام؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>تحرير العنوان</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>خطأ</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>لا يمكن استكمال العملية بسبب الخطأ الاتي:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>فشل إضافة موضوع</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>لم يتم إيجاد محلل مناسب</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>الرجاء التأكيد</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>إلغاء</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>أدخل أرتباط مفتاحك الأن</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>تم</value>\n    <comment>formal &quot; حسنا &quot;\nFuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>إسترداد</value>\n    <comment>إعادة تعيين\nFuzzy</comment>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>نُسخ النص</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>أضف</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>تغيير عنوان لسان</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>أخلي</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>أغلق اللسان</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>أرتباط المفاتيح</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>حذف</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>تغيير</value>\n    <comment>KeyBindingsView.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>لسان جديد</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>نافذة جديدة</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>لسان التالي </value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>لصق من دون سطر جديد</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>لسان السابق</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>بحث</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>تحديد الكل</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>أظهر الإعدادات</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>إنتقال الى المنفذ 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>تبديل الى ملء الشاشة</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>تبديل النافذة</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>لسان متحكم جديد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>لسان SSH جديد</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>عن SSH </value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مستخدم</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مضيف</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مدخل</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مسار ملف الهوية</value>\n    <comment>مسار ملف التعريف\nFuzzy</comment>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>تصفح</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>استخدم Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>متقدم</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>مدخل Mosh :</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>حفظ الإختصار</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>يجب أعادة تشغيل التطبيق حتى يتم تطبيق التغيرات.</value>\n    <comment>يجب إعادة تشغيل البرنامج حتى يتم تطبيق التغيرات.</comment>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>إدخال غير مسموح</value>\n    <comment>خطأ في الإدخال\nFuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>لا يمكن للمدخل ان يكون 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>إن المسخدم و المضيف خانات إلزامية.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>لا يمكن لإسم المستخدم أن يكون فارعً.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>لا يمكن للمضيف أن يكون فارغً.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>مدخل SSH يجب أن يكون أكبر من صفر.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>لا يمكن لمدخل Mosh أن يكون صفر.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>نطاق مدخل Mosh غير صالح.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>نعم</value>\n    <comment>أجل\nبلا</comment>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>لا</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>اللغة</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>لا شيء</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>مخرج جديد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>أخرج مع خطأ</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>هل أنت متأكد أنك تريد حذف الملف الشخصي هذا؟</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>نافذة SSH جديدة</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>ملف SSH شخصي</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>لون اللسان:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>أستخدم ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>اسم المستخدم</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>من مدخل</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>الى مدخل</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>نطاق مدخل Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>شهادة وثوق</value>\n    <comment>شهادة\nمصادقة\nشهادة مصادقة\nFuzzy</comment>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>أخرجت الإعدادات الى ملف</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>أدرجت الأعدادات من ملف</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>ملف الهوية غير موجود</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>استخدم اسم المستخدم الخاص بـ Windows عند فتح SSH URLs التي لا تتطلب التحديد مخصص</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>وضع Mosh افتراضيا لإتصالات SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>حق تلقيم السطور المنسوخة</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>استخدم اتصال SSH سريع إفتراضيا</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>أمر خاطئ</value>\n    <comment>أمر غير صحيح\nFuzzy</comment>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>لا يمكن للموقع ان يكون فارغ.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>اكتم اصوات المنفذ</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>أدخل أمر كـ (مثال. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>أمر</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>أمر غير مدعوم</value>\n    <comment>أمر غير موجود</comment>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>شروط الامر مفقودة</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>تشغيل سريع</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>لسان تشغيل سريع جديد</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>نافذة تشغيل سريع جديدة</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>لسان سريع جديد</value>\n    <comment>by now you should know that in Arabic لسان and تبويب  means tab, but تبويب is more close to the meaning not لسان. Just for the length of the lines i use لسان instead of تبويب</comment>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>الملف غير موجود:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>رابط غير صحيح.</value>\n    <comment>خطأ في الرابط</comment>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>إسقط اللسان هنا</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>أغلق الالسنة على الميسرة</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>أغلق الالسنة الاخرى</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>أغلق الالسنة على الميمنة</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>كرر التبويب</value>\n    <comment>أستنسخ التبويب</comment>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>كرر</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>لا يمكن تعريف متغيرين بيئيين بنفس الاسم.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>لا يمكن تعريف مغير بيئي بلا اسم.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>متغيرات بيئية</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>أغلق لوحة البحث</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>جد التالي</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>جد السابق</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>أدخل شرط بحث</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>ابحث</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>نواتج قابلة للطباعة فقط</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>نواتج السجل للتصحيح</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>أحرف فواصل الكلمة</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>حديثة</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>يقم بفتح ملف الشخصي الافتراضي في لسان جديد.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>يقم بفتح فصل SSH او Mosh جديد في لسان جديد.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>يقم بفتح حوار &quot;تشغيل سريع&quot; و إبدأ الفصل في لسان جديد.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>أفتح نافذة الخيارات.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>معلومات بسيطة عن البرنامج.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>فصول فتحت حديثًا.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>يبدأ فصل منفذ جديد بناءً على الملف الشخصي الافتراضي.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>الإتصال عن بعد...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>يقم بفتح حوار لتشغيل فصل  منفذ أوامر SSH او Mosh جديد.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>تشغيل سريع...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>يقم بفتح حوار &quot;تشغيل سريع&quot; لبدأ فصل منفذ اوامر جديد.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>نافذة جديدة</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>لسان جديد</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>يقم بتشغيل فصل في لسان جديد.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>يقم بتشغيل فصل في نافذة جديدة.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>نوع قائمة التطبيق</value>\n    <comment>نوع قائمة البرنامج\nFuzzy</comment>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>تنفيذ سطحي لإعداد &quot;أفتح منفذ جديد كـ&quot;</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;لسان جديد&quot; / &quot;نافذة جديدة&quot; متتالبة</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>أخرج</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>أخرج من منفذ الاوامر فلوينت</value>\n    <comment>or if you want to translate the fluent word:\nأخرج من منفذ الأوامر السلس\nof if you wan it in it&apos;s English form:\nType &quot;أخرج من منفذ الأوامر &quot; then type the name in the end.</comment>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>خولت من السياسة.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>الصورة الخلفية</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>استخدام خلفية الاكريليك</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>هل أنت متأكد أنك تريد حذف الصورة الخلفية هذه؟</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>الوان</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>الوان فاتحة</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>نسح الرابط</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n    <comment>I think leave it as is is good rather than translate it, because it&apos;s a name so it will not harm.</comment>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>كلمة كاملة</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>حساسية لطريقة الكتابة</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copy selection or paste</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Use smart buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Session disconnected.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/ar-iq/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>حول</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>خلفية</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>أزرق</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>قريب</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>اسأل قبل إغلاق النوافذ</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>اسأل قبل إغلاق علامات التبويب</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>اللون</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>اللون على علامات التبويب غير النشطة</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>نسخ</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>إظهار عنوان علامة التبويب المخصصة أيضًا في شريط العنوان</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>تحرير العنوان</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>جنرال لواء</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>أخضر</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>إظهار مؤشر الإخراج الجديد في علامات تبويب الخلفية</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>إعادة التشغيل المطلوبة لتطبيق الإعداد</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>علامة تبويب جديدة</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>لا شيء</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>علامات التبويب</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>شبابيك</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>فتح محطات جديدة كما</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>البرتقالي</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>معجون</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>أرجواني</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>أحمر</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>استعادة الضبط الافتراضي</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>تشغيل عند بدء التشغيل</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>الإعدادات</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>الإعدادات</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>تظهر في علبة النظام</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>عرض علامات التبويب على</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>بط نهري صغير</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>الأسفل</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>أعلى</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>أكد</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>تسطير علامة التبويب المحددة</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>حول</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>جنرال لواء</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>كيبيندينغس</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>الفأر</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>مظهر</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>طرفية</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>المواضيع</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>إضافة</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>الحجج</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>عتامة الخلفية</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>المؤشر الوامض</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>نص غامق</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>إلغاء</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>البحث عن تحديثات...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>تحقق من وجود تحديثات</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>انقر على اللون لتعديله</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>استنساخ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>لوحة الألوان</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>نص نسخ الإخطار</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>نسخ على اختيار</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>خلق جديد إبداع جديد</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>النسخة الحالية</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>شريط</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>منع</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>نمط المؤشر</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>أكد</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>حذف</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>لا تقم بتعديل نهايات الخطوط</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>تعديل</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>تصدير</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>خط العائلة</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>حجم الخط</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>استيراد</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>اختصار لوحة المفاتيح</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>اختصار لوحة المفاتيح</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>احدث اصدار</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>رخصة</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>خط إنهاء وضع الترجمة</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>سطر إنهاء وضع الترجمة على لصق:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>عمل الزر الأوسط</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>الفأر</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>قائمة السياق</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>لا شيئ</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>معجون</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>خلق جديد إبداع جديد</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>حشوة</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>اسم</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>مظهر</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>موضوع</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>ملاحظات الإصدار</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>عمل الزر الأيمن</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>حفظ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>حد التمرير</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>الاختباء التلقائي</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>مخفي</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>نمط شريط التمرير</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>مرئي</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>تفعيل النشاط</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>الوضع الإفتراضي</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>موقع شل القابل للتنفيذ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>لون علامة التبويب</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>طرفية</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>موضوع:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>مؤلف</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>اسم</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>تحويل نهايات الخط إلى CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>تحويل نهايات الخط إلى CR + LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>تحويل نهايات الخط إلى LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>عمل اخراجي</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>هل تريد بالتأكيد إغلاق علامة التبويب &quot;{0}&quot;؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>هل أنت متأكد من أنك تريد إغلاق هذه النافذة؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد من أنك تريد حذف رابط المفاتيح هذا؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>هل أنت متأكد أنك تريد حذف هذا الموضوع؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>هل أنت متأكد من أنك تريد تجاهل جميع التغييرات؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد من أنك تريد استعادة الإعدادات العامة؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد من رغبتك في استعادة روابط المفاتيح الافتراضية؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>هل أنت متأكد من أنك تريد استعادة إعدادات الماوس؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>هل أنت متأكد أنك تريد استعادة هذا الملف الشخصي؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>هل تريد بالتأكيد استعادة خيارات المحطة الافتراضية؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>تم تعطيل السياسة.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>معطل من قبل المستخدم. يرجى إعادة تنشيطه في علامة التبويب بدء التشغيل من إدارة المهام.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>تحرير العنوان</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>خطأ</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>لا يمكن إتمام العملية بسبب الخطأ التالي:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>فشل استيراد النسق</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>لم يتم العثور على محلل مناسب</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>يرجى تأكيد</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>إلغاء</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>أدخل رابط المفتاح الخاص بك الآن</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>حسنا</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>إعادة تعيين</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>نسخ النص</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>إضافة</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>تغيير عنوان التبويب</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>واضح</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>إغلاق علامة التبويب</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>كيبيندينغس</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>حذف</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>تعديل</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>علامة تبويب جديدة</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>نافذة جديدة</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>علامة التبويب التالية</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>لصق دون خطوط جديدة</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>علامة التبويب السابقة</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>بحث</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>اختر الكل</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>إعدادات العرض</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>بدّل إلى المحطة 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>التبديل إلى المحطة 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>ملء الشاشة تبديل</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>تبديل النافذة</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>علامة تبويب عن بعد جديدة</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>علامة تبويب SSH جديدة</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH معلومات</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>المستعمل</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مضيف</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ميناء</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مسار ملف الهوية</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>تصفح</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>استخدام موش</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>المتقدمة</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>منافذ موش:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>حفظ الاختصار</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>يحتاج التطبيق إلى إعادة التشغيل ليصبح هذا التغيير نافذ المفعول.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>مدخل غير صالح</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>لا يمكن أن يكون المنفذ 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>المستخدم والمضيف حقول إلزامية.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>اسم المستخدم لا يمكن أن يكون فارغا.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>لا يمكن أن يكون المضيف فارغًا.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>يجب أن يكون منفذ SSH أكبر من الصفر.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>ميناء موش لا يمكن أن يكون صفرا.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>نطاق منفذ Mosh غير صالح.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>نعم</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>لا</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>لغة</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>لا شيء</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>خرج جديد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>خرجت مع الخطأ</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>هل أنت متأكد أنك تريد حذف ملف التعريف هذا؟</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>نافذة SSH جديدة</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>ملفات تعريف SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>لون علامة التبويب:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>استخدام ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>اسم المستخدم</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>من الميناء</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>الى المرفئ</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>نطاق ميناء موش</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>مصادقة</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>تم تصدير الإعدادات إلى الملف</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>تم استيراد الإعدادات من الملف</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>تحديد ملف غير موجود</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>استخدم اسم مستخدم Windows عند فتح عناوين URL SSH التي لا تحدد واحدًا</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>افتراضي لـ Mosh لاتصالات SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>الحق تقليم خطوط نسخ</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>استخدم SSH السريع افتراضيًا</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>أمر خاطئ.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>لا يمكن أن يكون الموقع فارغًا.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>كتم صوت صفير المحطة الطرفية</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>أدخل أمرًا (مثل &apos;ssh username @ host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>أمر</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>أمر غير مدعوم:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>وسيطات الأوامر مفقودة.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>التشغيل السريع</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>علامة تبويب التشغيل السريع الجديدة</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>نافذة جديدة للإطلاق السريع</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>علامة تبويب سريعة جديدة</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>لم يتم العثور على الملف:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>رابط غير صالح.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>علامة التبويب إسقاط هنا</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>إغلاق علامات التبويب إلى اليسار</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>أغلق علامات التبويب الأخرى</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>إغلاق علامات التبويب إلى اليمين</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>علامة تبويب مكررة</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>مكرر</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>لا يمكن تعريف متغيرين للبيئة بنفس الاسم.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>لا يمكن تعريف متغير بيئة بدون اسم.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>متغيرات البيئة</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>إغلاق لوحة البحث</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>بحث عن التالي</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>البحث السابق</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>أدخل مصطلح البحث</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>بحث</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>الإخراج للطباعة فقط</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>إخراج السجل للتصحيح</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>أحرف كلمة فاصل</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recent</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Opens default profile in a new tab.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Opens a new SSH or Mosh session in a new tab.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Opens &quot;Quick Launch&quot; dialog and starts session in a new tab.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Opens settings window.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Basic info about the app.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Recently opened sessions.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Starts new terminal session based on the default profile.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Remote Connect...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Opens a dialog for launching a new SSH or Mosh terminal session.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Quick Launch...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Opens a &quot;Quick Launch&quot; dialog for starting a new terminal session.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>New Window</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>New Tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new tab.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new window.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Application menu type</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flat, honoring &quot;Open new terminals as&quot; setting</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;New Tab&quot; / &quot;New Window&quot; cascading</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Quit</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Quit Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Enabled by policy.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Background image</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Use acrylic background</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this background image?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Colors</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Bright colors</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copy link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Whole word</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Case sensitive</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copy selection or paste</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Use smart buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Session disconnected.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/az-Latn/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Haqqında</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Fon</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Mavi</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Bağla</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Pəncərələri bağlamadan əvvəl soruşun</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Tabları bağlamadan əvvəl soruşun</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Rəng</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Aktiv olmayan tabların rəngi</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopyala</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Xüsusi tab başlığını başlıq çubuğunda da göstər</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Başlığı redaktə edin</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Ümumi</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Yaşıl</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Fon tablarında yeni çıxış göstəricisini göstərin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Dəyişikliyi tətbiq etmək üçün yenidən başladın</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Yeni tab</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Heç biri</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Tablar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Pəncərələr</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Yeni terminalı ... kimi aç</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Narıncı</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Yapışdır</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Bənövşəyi</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Qırmızı</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Defoltları bərpa edin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Başlanğıcda işə salın</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Parametrlər</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Parametrlər</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Sistem tepsisinde göstərin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Nişanları göstərin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Teal</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Aşağıda</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Üst</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Altını çəkin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Seçilmiş tabın altından xətt çəkin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Haqqında</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Ümumi</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Qısayollar</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Siçan</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profillər</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Mövzular</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Əlavə edin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Arqumentlər</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Fon şəffaflığı</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Yanıb-sönən kursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Qalın mətn</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ləğv et</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Yeniləmələr yoxlanılır ...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Yeniləmələri yoxlayın</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Rəngi vuraraq redaktə edin</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Klonla</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Rəng palitrası</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Mətn kopyaldı bildirişi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Seçim üzərinə kopyalayın</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Yeni yaradın</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Cari versiya</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Bar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blok</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Kursor stili</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Alt-cizgili</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Silin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Sətir sonlarını dəyişdirməyin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Redaktə</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>İxrac et</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Şrift ailəsi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Şrift ölçüsü</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>İdxal</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Klaviatura qısa yolu</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Klaviatura qısa yolu</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Ən son versiya</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Lisenziya</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Sətir sonu tərcümə rejimi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Yapışdırdıqda sətir sonu tərcümə rejmi:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Orta düymə aktivasiyası</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Siçan</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Kontekst menyu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Heç nə</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Yapışdır</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Yeni yaradın</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Taxma</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Adı</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profillər</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Mövzu</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Buraxılış qeydləri</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Sağ düymə hərəkəti</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Yadda saxla</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Geri qayıtma həddi</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Avtomatik gizlətmə</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Gizli</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollbar stili</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Görünür</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aktiv Edin</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Defolt Təyin Edin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell proqramının məkanı</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Tab rəngi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Mövzu:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Müəllif</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Adı</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Sətir sonlarını CR-yə çevirin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Sətir sonlarını CR+LF-ə çevirin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>LF sonlarını LF-ə çevirin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>İş qovluğu</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>&quot;{0}&quot; tabını bağlamaq istədiyinizə əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Bu pəncərəni bağlamaq istədiyinizə əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Bu qısayolu silmək istədiyinizə əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Bu mövzunu silmək istədiyinizə əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Bütün dəyişiklikləri ləğv etmək istədiyinizdən əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Ümumi parametrləri bərpa etmək istədiyinizə əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Standart açar bağlantıları bərpa etməyinizə əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Siçan parametrlərini bərpa etmək istədiyinizə əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Bu profilinizi bərpa etmək istədiyinizdən əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Standart terminal seçimlərini bərpa etmək istədiyinizdən əminsiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Siyasətə görə əlil.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>İstifadəçi tərəfindən əlil Zəhmət olmasa Task Manager&apos;in Başlanğıc sekmesinde yenidən aktiv olun.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Başlığı redaktə edin</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Xəta</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Aşağıdakı səhv səbəbindən əməliyyat başa çatdırıla bilməz:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>İdxal mövzusu alınmadı</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Uyğun analizçi tapılmadı</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Zəhmət olmasa təsdiqləyin</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Ləğv et</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Klaviaturanızı indi daxil edin</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>tamam</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Sıfırlayın</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Mətn kopyalandı</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Əlavə edin</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Nişan başlığını dəyişdirin</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Aydındır</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Nişanı bağlayın</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Keybindings</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Silin</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Redaktə edin</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Yeni nişan</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Yeni pəncərə</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Sonrakı nişan</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Yeni satır olmadan yapışdırın</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Əvvəlki nişan</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Axtarış</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Hamısını seç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Parametrləri göstərin</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Terminal 1-ə keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Terminal 2-ə keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Terminal 3-ə keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Terminal 4-ə keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Terminal 5-ə keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>6 Terminalına keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Terminal 7-ə keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Terminal 8-ə keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Terminal 9-a keçin</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Tam ekranı dəyişdirin</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Pəncərəni dəyişdirin</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Yeni uzaq nişanı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Yeni SSH nişanı</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH məlumatı</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>istifadəçi</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ev sahibi</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>liman</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Şəxsiyyət sənədinin yolu</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Gözdən keçirin</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Mosh istifadə edin</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Ətraflı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh limanları:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Qısayolları saxla</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Bu dəyişikliyin qüvvəyə minməsi üçün tətbiq yenidən başlamalıdır.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>yalnış daxiletmə</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port 0 ola bilməz.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>İstifadəçi və ev sahibi məcburi sahələrdir.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>İstifadəçi adı boş ola bilməz.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Host boş ola bilməz.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH portu sıfırdan çox olmalıdır.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh portu sıfır ola bilməz.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh port aralığı etibarsızdır.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Bəli</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Yox</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Dil</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Heç biri</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Yeni çıxış</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Səhvlə çıxdı</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Bu profili silmək istədiyinizə əminsiniz?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Yeni SSH pəncərəsi</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profilləri</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Nişan rəngi:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty istifadə edin</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>İstifadəçi adı</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Limandan</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>limana</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh liman üçündür</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Doğrulamaq</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Parametrlər faylı ixrac edildi</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Parametrlər sənəddən idxal edildi</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Şəxsiyyət faylı mövcud deyil</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Birini göstərməyən SSH URL-lərini açarkən Windows istifadəçi adından istifadə edin</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH əlaqələri üçün Mosh&apos;a standartdır</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Sağ trim kopyalanan xətlər</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Sürətli SSH istifadə edin</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Yanlış əmr.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Yer boş ola bilməz.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Terminal səslərini səssizləşdirin</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Bir əmr daxil edin (məs. &apos;Ssh username @ host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Əmr</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Dəstəklənməyən əmr:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Komanda dəlilləri yoxdur.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Tez Başlat</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Yeni sürətli başlamaq nişanı</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Yeni sürətli pəncərə</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Yeni sürətli nişan</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Fayl tapılmadı:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Yanlış link.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Nişanı buraya salın</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Nişanları sola bağlayın</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Digər nişanları bağlayın</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Nişanları sağa bağlayın</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Nişanı cütləşdirin</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Dublikat</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Eyni adlı iki mühit dəyişkənliyini təyin etmək olmur.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Bir mühit dəyişənini ad olmadan təyin etmək olmur.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Ətraf mühit dəyişkənləri</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Axtarış panelini bağlayın</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Növbəti tapın</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Əvvəlki tapın</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Axtarış termini daxil edin</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Axtarış</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Yalnız çap edilə bilər</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Çatdırılma üçün giriş çıxışı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Söz ayırıcı simvol</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Son</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Defolt profili yeni tabda açır.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Yeni tabda yeni SSH və ya Mosh sessiyasını açır.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Yeni tabda &quot;Sürətli Başlatma&quot; pəncərəsini açır.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Ayarlar pəncərəsini açır.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Proqram haqqında qısa məlumat.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Son açılmış sessiyalar.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Defolt profil əsasında yeni termianl sessiyası başladır.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Uzaqdan Qoşulma...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Yeni SSH və ya Mosh termianl sessiyası başlatmaq üçün dialoq açır.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Sürətli Başlatma...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Yeni terminal sessiyası başlatmaq üçün &quot;Sürətli Başlatma&quot; pəncərəsini açır.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Yeni Pəncərə</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Yeni Tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Yeni sessiyanı yeni tabda başladır.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Yeni sessiyanı yeni pəncərədə başladır.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Proqram menyu tipi</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Düz, &quot;Yeni terminalı ... kimi aç&quot; ayarı</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Yeni Tab&quot; / &quot;Yeni Pəncərə&quot; kaskadı</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Çıx</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Fluent Termianldan çıx</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Qaydalara görə aktiv edilib.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Arxa fon şəkili</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Akrilik arxa fonu istifadə edin</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Bu arxa fon şəkilini silmək istədiyinizə əminsinizmi?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Rənglər</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Açıq rənglər</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Linki kopyala</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Bütöv söz</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hərifə duyarlı</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Secimi kopyala vəya yapışdır</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Ağıllı buffer işlət</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Yenidən başlat</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sessiya ayrıldı.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Şiriftin ölçüsünü artır</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Şiriftin ölçüsünü azalt</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Şirift ölçüsünü sıfırla</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Taba Yenidən Qoşul</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/bg/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>За терминала</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Фон</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Син</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Затворете</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Попитвайте, преди да затваряте прозорци</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Попитвайте, преди да затваряте раздели</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Цвят</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Цвят на неактивните раздели</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Копирайте</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Показвайте и персонализираното заглавие на раздела в заглавната лента</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Редактирайте заглавието</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Общ</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Зелен</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Показвайте индикатор при нови изходни данни на фоновите раздели</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Прилагането на настройките изисква рестартиране</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Нов раздел</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Никакъв</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Раздели</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Прозорци</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Отваряйте новите терминали като</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Оранжев</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Поставете</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Лилав</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Червен</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Възстановете дефолтните настройки</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Изпълнявайте при стартиране</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Настройки</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Настройки</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Показвайте в системната тава</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Показвайте разделите на</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Синьо-зелен</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Дъното</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Върха</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Подчертание</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Подчертавайте избрания раздел</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Относно</value>\n    <comment>SettingsPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Общи</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Клавишни комбинации</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Мишка</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Профили</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Терминал</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Теми</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Добавете</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Аргументи</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Фонова непрозрачност</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Мигащ курсор</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Удебелен текст</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Отменете</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Проверяване за актуализации...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Проверете за актуализации</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Натисни цвят, за да редактираш</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Клонирайте</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Цветова палитра</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Известяване при копиране на текст</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Копирайте при селектиране</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Създайте нов</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Настояща версия</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Лента</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Блок</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Стил на курсора</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Подчертание</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Изтрийте</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Не променяйте краищата на редовете</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Редактирайте</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Изкарайте</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Семейство на шрифта</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Размер на шрифта</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Вкарайте</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Клавишна комбинация</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Клавишна комбинация</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Последна версия</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Лиценз</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Превеждаща мода на краищата на редовете</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Превеждаща мода на краищата на редовете при поставяне</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Действие на средния бутон</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Мишка</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Контекстно меню</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Нищо</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Поставете</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Създайте нова</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Падинг</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Име</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Профили</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Тема</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Релийзни забележки</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Действие на десния бутон</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Запишете</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Скролбак граница</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Автоматично скриваща се</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Скритa</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Стил на скрол лентата</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Видима</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Задайте активен</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Задайте дефолтен</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Местоположение на изпълнимия shell</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Цвят на раздела</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Терминал</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Тема:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Автор</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Име</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Преобразувайте краищата на редовете в CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Преобразувайте краищата на редовете в CRLF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Преобразувайте краищата на редовете в LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Работна директория</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да затворите раздела &quot;{0}&quot; ?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да затворите този прозорец?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да изтриете тази клавишна комбинация?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да изтриете тази тема?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да се откажете от всички промени?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да възстановите общите настройки?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да възстановите дефолтните клавишни комбинации?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да възстановите мишите настройки?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да възстановите този профил?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да възстановите дефолтните настройки на терминала?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Деактивирана от полица.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Деактивирана от потребител. Моля, активирайте я отново в началния раздел на Диспечера на задачи.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Редактирайте заглавието</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Грешка</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Операцията не може да се осъществи поради следната грешка:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Възникна грешка при вкарването на темата</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Не е намерен подходящ синтактичен алализатор</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Моля, потвърдете</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Отменете</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Въведете вашата клавишна комбинация</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Добре</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Възстановете</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Текстът бе копиран</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Добавете</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Променете името на раздела</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Изчистете</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Затворете раздела</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Клавишни комбинации</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Изтрийте</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Редактирайте</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Нов раздел</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Нов прозорец</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Следващ раздел</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Поставате без нови редове</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Предишен раздел</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Търсете</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Изберете всички</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Покажете настройките</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Превключете на Терминал 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Превключете цял екран</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Превключете прозореца</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Нов дистанционен раздел</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Нов SSH раздел</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH информация</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>потребител</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>хост</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>порт</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Идентифицирайте пътеката на файла</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Разгледайте</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Използвайте Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Допълнителни</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh порти:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Запишете пряк път</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>За прилагането на тази промяна е необходимо рестартирате.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Неправилни входни данни</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Портът не може да е 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Потребител и хост са задължителни полета.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Потребителското име не може да е празно.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Хостът не може да е празен.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH порта трябва да е по-голям от 0.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh портът не може да е 0.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Диапазонът на Mosh порти е неправилен.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Да</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Не</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Език</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Никакъв</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Нови изходни данни</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Излезе с грешка</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да изтриете този профил?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Нов SSH прозорец</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH Профили</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Цвят на раздела:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Използвайте ConPy</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Потребителско име</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>От порт</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>до порт</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Диапазон на Mosh портите</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Автентицирайте</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Настройките бяха изкарани във файл</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Настройките бяха вкарани от файл</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Идентификационният файл не съществува</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Използвайте потребителското име на Windows при отваряне на неопределящи такова SSH адреси</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Използвайте дефолтно Mosh за SSH връзки</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Подрязвайте вдясно копираните редове</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Използвайте дефолтно бърз SSH</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Неправилна команда.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Местоположението не може да е празно.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Заглушавайте терминалните бипкания</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Въведете команда (например &apos;ssh потребителскоиме@хост&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Команда</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Неподдържана команда:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Аргументите на командата липсват.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Бързо пускане</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Нов раздел за бързо пускане</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Нпв прозорец за бързо пускане</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Нов бърз раздел</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Файлът не е намерен:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Неправилна връзка.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Пуснете раздела тук</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Затворете разделите вляво</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Затворете другите раздели</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Затворете разделите вдясно</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Клонирайте раздела</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Клонирайте</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Не може да се определят две променливи с еднакви имена.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Не може да се определи променлива без име.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Променливи на средата</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Затворете панела за търсене</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Намерете следващия</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Намерете предишния</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Въведете термин за търсене</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Търсете</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Само принтируеми изходни данни</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Записвайте изходните данни с цел дебъгване</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Символи за разделяне на думи</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Скорошни</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Отваря дефолтния профил в нов раздел.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Отваря нова SSH или Mosh сесия в нов раздел.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Отваря &quot;Бързо пускане&quot; диалог и стартира сесия в нов раздел.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Отваря прозореца на настройките.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Основна информация за приложението.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Наскоро отваряни сесии.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Стартира нова терминална сесия според дефолтния профил.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Дистанционно свързване...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Отваря диалог за пускане на нова SSH или Mosh терминална сесия.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Бързо Пускане...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Отваря &quot;Бързо пускане&quot; диалог за пуркане на нова терминална сесия.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Нов прозорец</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Нов раздел</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Пуска сесия в нов раздел.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Пуска сесия в нов прозорец.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Тип на менюто на приложението</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Плоско, зачитащо настройката &quot;Отворете нов терминал като&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>Каскадиращо &quot;Нов раздел&quot; / &quot;Нов прозорец&quot;</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Напуснете</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Напуснете Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Активирана от полица.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Фоново изображение</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Използвайте акрилен фон</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Сигурни ли сте, че искате да изтриете това фоново изображение?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Цветове</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Светли цветове</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Копирайте връзката</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Регулярен израз</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Цели думи</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Чувствителност на буквите</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Копирайте селекцията или поставете</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Използвайте умен буфер</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Рестартирайте</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Сесията бе отвързана.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Увеличете размера на шрифта</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Намалете размера на шрифта</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Възстановете размера на шрифта</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Свържете отново раздела</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/bs/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>O</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Pozadina</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Plava</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zatvori</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Pitaj pitaj zatvaranja prozora</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Pitaj pitaj zatvaranja kartica</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Boja</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Boja neaktivnih kartica</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopiraj</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Prikaži naziv kartice i u nazivnoj traci</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Izmijeni naslov</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Opće</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Zelena</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Prikaži novi indikator izlaza u pozadinskim karticama</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Potrebno ponovo pokrenuti kako bi se postavke aktivirale</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Nijedna</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Kartice</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Windows</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Otvori novi terminal</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Narandžasta</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Zalijepi</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Ljubičasta</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Crvena</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Vrati standardne vrijednosti</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Otvori pri pokretanju sistema</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Postavke</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Postavke</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Prikaži u sistemskoj traci</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Kartice prikaži na</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Morska</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Dno</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Vrh</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Podvučeno</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Podvuci selektiranu karticu</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>O</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Opće</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Kratice na tastaturi</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Miš</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Teme</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumenti</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Providnost pozadine</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Svjetlucajući kursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Podebljani tekst</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Zatvori</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Tražim nove verzije...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Tražim nove verzije</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Kliknite na boju kako biste je promijenili</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kloniraj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta boja</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Obavijest o kopiranom tekstu</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopiraj po selektiranju</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Kreiraj novi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Aktualna verzija</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Traka</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blokiraj</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Stil kursora</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Podvuci</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Obriši</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Ne mijenjaj završetke redova (line endings)</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Izmijeni</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Eksportiraj</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Porodica fontova</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Veličina fonta</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importiraj</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Kratica na tastaturi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Kratica na tastaturi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Posljednja verzija</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licenca</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Način prevođenja završetaka redova</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Način prevođenja završetaka redova pri zaljepljivanju</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Akcija srednje tipke na mišu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Miš</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Meni konteksta</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Ništa</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Zalijepi</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Kreiraj novi</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Uvučeno</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Naziv</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Teme</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Zabilješke o verziji</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Akcija desnog klika</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Spasi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limit scrollbacka</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Automatsko prikrivanje</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Skriven</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Stil scrollbara</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Vidljiv</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Postavi za aktivno</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Postavi za standardno</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Lokacija izvršne datoteke Shella</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Boja kartice</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Naziv</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Pretvori završetke redova u CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Pretvori završetke redova u CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Pretvori završetke redova u LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Radni direktorij</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite zatvoriti &quot;{0}&quot; karticu?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite zatvoriti ovaj prozor?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite obrisati obu kraticu na tastaturi?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite obrisati ovu temu?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite poništiti sve izmjene?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite ponovo vratiti opće postavke?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite ponovo vratiti standardne kratice na tasturi?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite ponovo vratit postavke za miš?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite ponovo aktivirati ovaj profil?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite vratiti standardne opcije za terminal?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Onemogućeno.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Onemogućeno od strane korisnika. Molimo ponovo aktivirajte na početnoj kartici Task Managera.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Izmijeni naslov. </value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Greška</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Operacija ne može biti izvršena radi sljedeće greške:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Nije uspjelo importiranje teme</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Odgovarajući parser nije pronađen</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Potvrdite</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Otkaži</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Unesite kraticu na tastaturi</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Ponovo pokreni</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Tekst kopiran</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Dodajte</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Izmijeni naziv kartice</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Počisti</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Zatvori karticu</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Kratice na tastaturi</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Obriši</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Izmijeni</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Novi prozor</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Sljedeća kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Zalijepi bez novih redova</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Prethodna kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Pretraga</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Označi sve</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Prikaži postavke</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Prebaci se na 1. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Prebaci se na 2. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Prebaci se na 3. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Prebaci se na 4. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Prebaci se na 5. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Prebaci se na 6. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Prebaci se na 7. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Prebaci se na 8. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Prebaci se na 9. terminal</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Pokreni prikaz preko cijelog ekrana</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Pokreni prikaz u prozoru</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nova kartica na daljinu</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nova SSH kartica</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH Info</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>korisnik</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Putanja do datoteke identiteta</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Pretraži</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Koristi Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Napredno</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh portovi:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Spasi kraticu</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Aplikacija se mora iznova pokrenuti kako bi se izmjene aktivirale.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Neispravan unos</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port ne može biti 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Korisnik i host su obavezna polja.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Korisničko ime ne može biti prazno.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Host ne može biti prazan.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH Port mora biti veći od 0.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh port ne može biti 0.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Opseg Mosh porta je neispravan.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Jezik</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Nijedan</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Novi izlaz</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Završeno s greškom</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite obrisati ovaj profil?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Novi SSH prozor</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profili</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Boja kartice:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Koristi ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Korisničko ime</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Od broja porta</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>Do broja porta</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Opseg brojeva Mosh porta</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autentificiraj</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Postavke su eksportirane u datoteku</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Postavke su importirane iz datoteke</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Datoteka identiteta ne postoji</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Koristi Windows korisničko ime pri otvaranju SSH URLova za koje nije specificirano</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Mosh je standard za SSH veze</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Izbriši prazne znakove zdesna u kopiranim linijama</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Koristi brzi SSH</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Neispravna naredba.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Lokacija ne može biti prazna.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Utišaj zvukove terminala.</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Unesite naredbu  (e.g. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Naredba</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Nepodržana naredba:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Nedostaju argumenti za naredbu.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Brzo pokretanje</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nova kartica u brzom pokretanju</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Novi prozor u brzom pokretanju</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nova brza kartica.</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Nije pronađena datoteka:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Neispravan link.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Postavi karticu ovdje.</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Zatvori kartice slijeva</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Zatvori ostale kartice</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Zatvori kartice zdesna</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Dupliciraj karticu</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Dupliciraj</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Dvije varijable okruženja ne smiju imati identičan naziv.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Varijabla okruženja mora imati naziv.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Varijable okruženja</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zatvori panel za pretragu</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Pronađi sljedeći</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Pronađi prethodni</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Unesite pojam za pretragu</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Pretraži</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Samo izlaz koji se može printati</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Prikaži izlaz za debugiranje</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Znakovi za razmake između riječi</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Nedavno</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Otvara standardni profil u novoj kartici.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Pokreće novu SSH ili Mosh sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Otvara dijalog za brzo pokretanje i pokreće sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Otvara prozor za postavke.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Osnovne informacije o aplikacije.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Nedavno pokrenute sesije.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Pokreni novu terminal sesiju baziranu na standardnom profilu.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Veza na daljinu...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Pokreće novi dijalog za pokretanje novi SSH ili Mosh terminalne sesije</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Brzo pokretanje...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Pokreće dijalog za brzo pokretanje nove terminalne sesije</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Novi prozor</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Pokreće sesiju u novoj kartici</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Pokreće sesiju u novom prozoru</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Tip menija aplikacije</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Ravan, poštujući &quot;Otvori novi terminal kao&quot; postavku</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nova kartica&quot; / &quot;Novi prozor&quot; jedan ispred drugog</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Zatvori</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Zatvori Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Omogućeno.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Pozadinska slika</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Koristi akrilnu pozadinu</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Jeste li sigurni da želite obrisati ovu pozadinsku sliku?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Boje</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Svijetle boje</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopiraj link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Čitavu riječ</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Osjetljiv na velika i mala slova</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopiraj selektirano ili zalijepi</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Koristi pametni buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Ponovo pokreni</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sesija odspojena.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Uvečaj font</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Umanji font</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Vrati standardnu veličinu fonta</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Poveži ponovo karticu</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/de/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Über</value>\n    <comment>MainPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Hintergrund</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Blau</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Schließen</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Nachfragen bevor Fenster geschlossen wird</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Nachfragen bevor Tab geschlossen wird</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Farbe</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Inaktive Tabs einfärben</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopieren</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Benutzerdefinierten Tabtitel auch in der Titelleiste anzeigen</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Titel ändern</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Allgemein</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Grün</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Über neue Ausgabe auf inaktiven Tabs informieren</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Neustart benötigt um vollständig angewandt zu werden.</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Neuer Tab</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Keine</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Tabs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Fenster</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Neue Terminals öffnen als</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Orange</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Einfügen</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Lila</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Rot</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Standard wiederherstellen</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Bei Systemstart ausführen</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Einstellungen</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Einstellungen</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Im System Tray anzeigen</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Position der Tabs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Türkis</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Unten</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Oben</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Unterstreichen</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Aktiven Tab unterstreichen</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Über</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Allgemein</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Tastaturbelegung</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Maus</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profile</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Themes</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Hinzufügen</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumente</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Hintergrundtransparenz</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Blinkender Cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Fette Schrift</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Suche nach Updates...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Nach Updates suchen</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Zum Ändern auf Farbe klicken</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Duplizieren</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Farbpalette</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Informieren wenn Text kopiert wurde</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Auswahl kopieren</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Erstellen</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Installierte Version</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Linie</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Block</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Cursor-Stil</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Unterstrich</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Löschen</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Nicht anpassen</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Bearbeiten</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exportieren</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Schriftart</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Schriftgröße</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importieren</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Tastaturbelegung</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Tastaturkürzel</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Neueste Version</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Lizenz</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Zeilenenden-Anpassung</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Zeilenenden-Anpassung beim Einfügen:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Funktion der mittleren Maustaste</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Maus</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Kontextmenü</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Keine</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Einfügen</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Erstellen</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Abstand</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Name</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profile</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Theme</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Versionshinweise</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Funktion der rechten Maustaste</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Speichern</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Maximales Hochscrollen</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Automatisch ausblendend</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Versteckt</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollleisten-Darstellung</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Sichtbar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aktiv setzen</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Als Standard verwenden</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Pfad zur Shell-Anwendung</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Tab-Farbe</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Theme:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Name</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Zeilenenden zu CR konvertieren</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Zeilenenden zu CR+LF konvertieren</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Zeilenenden zu LF konvertieren</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Arbeitsverzeichnis</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie den Tab &quot;{0}&quot; schließen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie dieses Fenster schließen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie dieses Tastaturkürzel löschen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie dieses Theme löschen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie alle Änderungen widerrufen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie die Standard-Einstellungen wiederherstellen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie die Standard-Tastaturbelegung wiederherstellen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie Standard-Mauseinstellungen wiederherstellen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie die Standard-Einstellungen für dieses Profile wiederherstellen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie die Standard-Terminal-Einstellungen wiederherstellen wollen?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Durch Gruppenrichtlinie deaktiviert.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Durch den Benutzer deaktiviert. Bitte im Startup-Tab im Task Manager wieder aktivieren.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Titel ändern</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Fehler</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Der Befehl konnte aufgrund des folgenden Fehlers nicht ausgeführt werden:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Theme importieren fehlgeschlagen</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Kein passender Parser gefunden.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Bitte Bestätigen</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Jetzt Tastaturkürzel eingeben</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Zurücksetzen</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Text kopiert</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Hinzufügen</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Tab-Titel anpassen</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Bildschirm leeren</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Tab schließen</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Tastaturkürzel</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Löschen</value>\n    <comment>KeyBindingsView.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Bearbeiten</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Neuer Tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Neues Fenster</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Nächster Tab</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Ohne Zeilenumbrüche einfügen</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Vorheriger Tab</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Suchen</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Alles auswählen</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Einstellungen öffnen</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Zu Terminal 1 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Zu Terminal 2 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Zu Terminal 3 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Zu Terminal 4 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Zu Terminal 5 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Zu Terminal 6 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Zu Terminal 7 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Zu Terminal 8 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Zu Terminal 9 wechseln</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Vollbildmodus ein/ausschalten</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Fenster ein-/ausblenden</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Neuer SSH-Tab</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Neuer SSH-Tab</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH Informationen</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Benutzer</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Pfad zur Identitätsdatei</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Durchsuchen</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Mosh verwenden</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Erweitert</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh ports:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Verknüpfung speichern</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Neustart benötigt um vollständig angewandt zu werden.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Ungültige Eingabe</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port darf nicht 0 sein.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Benutzer und Host sind erforderlich.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Benutzername darf nicht leer sein.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Host darf nicht leer sein.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH-Port muss größer als 0 sein.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh-Port darf nicht 0 sein.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Ungültiger Mosh-Port-Spanne</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Nein</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Sprache</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Keine</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Neue Ausgabe</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mit Fehler beendet</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie dieses Profil löschen wollen?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Neues SSH-Fenster</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH-Profile</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Tab-Farbe:</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty verwenden</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Benutzername</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Von Port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>bis Port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh-Ports</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Authentifizieren</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Einstellungen wurden exportiert.</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Einstellungen wurden importiert.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identittätsdatei existiert nicht</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Windows-Benutzernamen verwenden wenn nicht in SSH-Url angegeben</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Für SSH-Verbindungen standardmäßig Mosh verwenden</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Nachfolgende Leerzeichen aus kopierten Zeilen entfernen</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Quick SSH standardmäßig benutzen</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Ungültiger Befehl</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Dateipfad darf nicht leer sein</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Hinweistöne stummschalten</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>SSH-Befehl (z.b. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Befehl</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Nicht unterstüzter Befehl:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Befehlsargumente fehlen</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Quick Launch</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Neuer Quick Launch-Tab</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Neues Quick Launch-Fenster</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Neuer Quick Launch-Tab</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Datei nicht gefunden:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Ungültiger Verweis.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Tab hier ablegen</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Linke Tabs schließen</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Andere Tabs schließen</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Rechte Tabs schließen</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Tab duplizieren</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplizieren</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Es können keine zwei Umgebungsvariablen mit dem gleichen Namen erstellt werden.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Es kann keine Umgebungsvariable ohne Name erstellt werden.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Umgebungsvariablen</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Suche schließen</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nächstes Ergebnis</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Vorheriges Ergebnis</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Suchbegriff eingeben</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Suche</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Nur darstellbare Ausgaben</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Ausgabe zum Debuggen protokollieren</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Worttrennende Zeichen</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Zuletzt verwendet</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Erstellt einen neuen Tab mit dem Standard-Profil.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Öffnet eine neue SSH- oder Mosh-Verbinding in einem neuen Tab.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Öffnet den Quick Launch-Dialog und startet die Sitzung in einem neuen Tab.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Öffnet das Einstellungen-Fenster.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Allgemeine Informationen zur App.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Zuletzt verwendete Sitzungen.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Erstellt eine neue Sitzung mit dem Standard-Profil.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Verbinden...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Öffnet einen Dialog zum Erstellen einer neuen SSH- oder Mosh-Verbindung.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Quick Launch...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Öffnet einen Quick Launch-Dialog zum Erstellen einer neuen Sitzung.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Neues Fenster</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Neuer Tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Erstellt eine Sitzung in einem neuen Tab.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Erstellt eine Sitzung in einem neuen Fenster.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Menü-Stil</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flach, folgt der &quot;Neue Terminals öffnen als...&quot; Einstellung.</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>In &quot;Neuer Tab&quot;, &quot;Neues Fenster&quot; unterteilt.</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Beenden</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Fluent Terminal beenden</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Durch Windows-Gruppenrichtlinie aktiviert.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Hintergrundbild</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Hintergrund mit Acryl-Effekt</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Sind Sie sicher dass Sie dieses Hintergrundbild löschen möchten?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Farben</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Helle Farben</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Link kopieren</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Ganzes Wort</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Groß-/Kleinschreibung beachten</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Auswahl kopieren oder Einfügen</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Smart Buffer verwenden</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Neu starten</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sitzung wurde getrennt.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Schriftgröße vergrößern</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Schriftgröße verkleinern</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Schriftgröße zurücksetzen</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Tab erneut verbinden</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/en-US/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>About</value>\n    <comment>MainPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Background</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Blue</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Close</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Ask before closing windows</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Ask before closing tabs</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Color</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Color on inactive tabs</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Copy</value>\n    <comment>XtermTerminalView.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Show custom tab title also in titlebar</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Edit Title</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Green</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Show new output indicator on background tabs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Relaunch required to apply setting</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>New tab</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>None</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Tabs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Windows</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Open new terminals as</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Orange</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Paste</value>\n    <comment>XtermTerminalView.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Purple</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Red</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Restore Defaults</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Run on startup</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Settings</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Settings</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Show in system tray</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Show tabs on</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Teal</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Bottom</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Top</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Underline</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Underline selected tab</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>About</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Keybindings</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profiles</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Themes</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Add</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Arguments</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Background opacity</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Blinking cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Bold text</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Cancel</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Checking for updates...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Check for updates</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Click on a color to edit</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Clone</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Color palette</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Text copied notification</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Copy on select</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Create new</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Current version</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Bar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Block</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Cursor style</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Underline</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Delete</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Do not modify line endings</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Edit</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Export</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Font family</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Font size</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Import</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Keyboard shortcut</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Keyboard shortcut</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Latest version</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>License</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Line ending translation mode</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Line ending translation mode on paste:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Middle button action</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Context menu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Nothing</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Paste</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Create new</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Padding</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Name</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profiles</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Theme</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Release notes</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Right button action</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Save</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Scrollback limit</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Auto hiding</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Hidden</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollbar style</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Visible</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Set Active</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Set Default</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell executable location</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Tab color</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Theme:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Author</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Name</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Convert line endings to CR</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Convert line endings to CR+LF</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Convert line endings to LF</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Working directory</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Are you sure you want to close &quot;{0}&quot; tab?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Are you sure you want to close this window?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this keybinding?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this theme?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Are you sure you want to discard all changes?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Are you sure you want to restore the general settings?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Are you sure you want to restore the default keybindings?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Are you sure you want to restore the mouse settings?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Are you sure you want to restore this profile?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Are you sure you want to restore the default terminal options?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Disabled by policy.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Disabled by user. Please reactivate it in the Startup tab of the Task Manager.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Edit Title</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>The operation cannot be completed due to the following error:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Import theme failed</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>No suitable parser found</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Please confirm</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Enter your keybinding now</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Reset</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Text copied</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Add</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Change tab title</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Clear</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Close tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Keybindings</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Delete</value>\n    <comment>KeyBindingsView.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Edit</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>New tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>New window</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Next tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Paste without newlines</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Previous tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Search</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Select all</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Show settings</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Switch to Terminal 1</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Switch to Terminal 2</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Switch to Terminal 3</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Switch to Terminal 4</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Switch to Terminal 5</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Switch to Terminal 6</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Switch to Terminal 7</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Switch to Terminal 8</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Switch to Terminal 9</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Toggle Fullscreen</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Toggle window</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>New remote tab</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>New SSH tab</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH Info</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>user</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Identity file path</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Browse</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Use Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Advanced</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh ports:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Save Shortcut</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Application needs to restart for this change to take effect.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Invalid Input</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port cannot be 0.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>User and host are mandatory fields.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Username cannot be empty.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Host cannot be empty.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH port has to be greater than zero.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh port cannot be zero.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh port range is invalid.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Yes</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Language</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>None</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>New output</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Exited with error</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this profile?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>New SSH window</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH Profiles</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Tab color:</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Use ConPty</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Username</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>From port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>to port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh port range</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Authenticate</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Settings were exported to file</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Settings were imported from file</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identify file does not exist</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Use Windows username when opening SSH URLs that don&apos;t specify one</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Default to Mosh for SSH connections</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Right trim copied lines</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Use quick SSH by default</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Invalid command.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Location cannot be empty.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Mute terminal beeps</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Enter a command (e.g. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Command</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Unsupported command:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Command arguments are missing.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Quick Launch</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>New quick launch tab</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>New quick launch window</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>New quick tab</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>File not found:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Invalid link.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Drop tab here</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Close tabs to the left</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Close other tabs</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Close tabs to the right</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duplicate tab</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplicate</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Cannot define two environment variables with the same name.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Cannot define an environment variable without a name.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Environment variables</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Close search panel</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Find next</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Find previous</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Enter search term</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Search</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Printable output only</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Log output for debugging</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Word separator characters</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recent</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Opens default profile in a new tab.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Opens a new SSH or Mosh session in a new tab.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Opens &quot;Quick Launch&quot; dialog and starts session in a new tab.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Opens settings window.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Basic info about the app.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Recently opened sessions.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Starts new terminal session based on the default profile.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Remote Connect...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Opens a dialog for launching a new SSH or Mosh terminal session.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Quick Launch...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Opens a &quot;Quick Launch&quot; dialog for starting a new terminal session.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>New Window</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>New Tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new tab.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new window.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Application menu type</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flat, honoring &quot;Open new terminals as&quot; setting</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;New Tab&quot; / &quot;New Window&quot; cascading</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Quit</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Quit Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Enabled by policy.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Background image</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Use acrylic background</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this background image?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Colors</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Bright colors</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copy link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Whole word</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Case sensitive</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copy selection or paste</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Use smart buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Session disconnected.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/eo/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Pri</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Fono</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Blua</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Fermi</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Konfirmi antaŭ ol fermi fenestron</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Konfirmi antaŭ ol fermi langeton</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Koloro</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Koloro por malaktivaj langetoj</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopii</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Montri tajloritan langet-titolon ankaŭ sur titola breto</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Redakti Titolon</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Ĝenerale</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Verda</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Montri novan elig-indikilon sur fonaj langetoj</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Re-lanĉo necesa por apliki agordon</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nova langeto</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Neniu</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Langetoj</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Fenestro</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Malfermi novajn terminalojn kiel</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Oranĝa</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Alglui</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Purpura</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Ruĝa</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Restarigi implicajn valorojn</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Memlanĉo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Agordoj</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Agordoj</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Montri je taskopleto</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Montri langetojn</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Verdblua</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Malsupre</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Supre</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Substrekite</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Substreki elektitan langeton</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Pri</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Ĝenerale</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Klavkombinoj</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Muso</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profiloj</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminalo</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Etosoj</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Aldoni</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumentoj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Fona travideblo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Pulsanta musmontrilo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Grasa teksto</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Rezigni</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Kontrolas ĝisdatigojn...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Kontroli ĝisdatigojn</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Alklaku koloron por redakti</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kloni</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paletro</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Sciigo pri tekstokopio</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopii laŭ elekto</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Krei novan</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Nuna versio</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Trabo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bloko</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Musmontrila stilo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Substrekite</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Forviŝi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Ne modifi lini-finojn</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Redakti</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Eksporti</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Tipara familio</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Tipara grando</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importi</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Fulmoklavo</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Fulmoklavo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Plej freŝa versio</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Permesilo</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Reĝimo por traduko de lini-finoj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Reĝimo por traduko de lini-finoj laŭ algluo:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Ago por meza musbutono</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Muso</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Kunteksta menuo</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Neniu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Alglui</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Krei novan</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Ŝtopado</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nomo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profiloj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Etosoj</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Liveraj notoj</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Ago por dekstra musbutono</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Konservi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limo por antaŭrulumado</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Aŭtomate kaŝi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Kaŝita</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Rulumskala etoso</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Videbla</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Agordi kiel aktivan</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Agordi kiel implican</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Plenumebla dosierujo por ŝelo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Langetkoloro</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminalo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Etoso:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Aŭtoro</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nomo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Konverti lini-finojn al CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Konverti lini-finojn al CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Konverti lini-finojn al LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Kuranta dosierujo</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas fermi langeton &quot;{0}&quot;?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas fermi ĉi tiun fenestron?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas forviŝi ĉi tiun klavkombinon?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas forviŝi ĉi tiun etoson?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas forĵeti ĉiujn ŝanĝojn?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas restaŭri ĝeneralajn agordojn?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas restaŭrajn implicajn klavkombinojn?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas restaŭri agordojn de muso?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas restaŭri ĉi tiun profilon?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas restaŭri implicajn opciojn por terminalo?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Malebligita de sistem-regularo.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Malebliglita de uzanto. Reaktivigu ĝin ĉe langeto &quot;Memlanĉo&quot; de Taskadministrilo.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Redakti Titolon</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Eraro</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Operacio ne kompletiĝis pro sekva eraro:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>La importado de etoso malsukcesis</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Ne troviĝas taŭga sintaksa analizilo</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Konfirmu</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Rezigni</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Enigu vian klavkombinon nun</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Bone</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Restarigi</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Teksto kopiita</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aldoni</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Ŝanĝi titolon de langeto</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Malplenigi</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Fermi langeton</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Klavkombinoj</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Forviŝi</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Redakti</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nova langeto</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nova fenestro</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Sekva langeto</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Algui sen linifinoj</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Antaŭa langeto</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Serĉi</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Elekti ĉiujn</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Montri agordojn</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Ŝanĝi al Terminalo 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Baskuligi plenekranan reĝimon</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Baskuligi fenestron</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nova fora langeto</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nova langeto por SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Informoj pri SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>uzanto</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ĉefkomputilo</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>porda numero</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Identeca dosierindiko</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Foliumi</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Uzi Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Altnivele</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Pordoj de Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Konservi ŝparvojon</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Ĉi aplikaĵo postulas restartigon, por ke ĉi tiu ŝango efektiviĝu.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Nevalida enigo</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Pordo ne rajtas esti 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Uzanto kaj ĉefkomputilo estas devigaj kampoj.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Uzantnomo ne rajtas esti malplena</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Ĉefkomputilo ne rajtas esti malplena.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Pordo de SSH devas esti pli granda ol nulo.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Pordo de Mosh ne rajtas esti nulo.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Intervalo de pordoj de Mosh nevalidas.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Jes</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Lingvo</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Neniu</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nova eligo</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Eliris kun eraro</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas forviŝi ĉi tiun profilon?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nova fenestro por SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Profiloj de SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Langeta koloro:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Uzi ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Uzantnomo</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Pordo &quot;from&quot;</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>Pordo &quot;to&quot;</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Intervalo de pordoj de Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Aŭtentikigi</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Eksportiĝis agordoj en dosieron</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Importiĝis agordoj el dosiero</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identeca dosiero ne ekzistas</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Uzi uzantnomon de Windows kiam malfermiĝas URL-j de SSH, kiuj ne indikas unu tian</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Implice uzi Mosh por konektoj SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Stuci dekstre de kopiitaj linioj</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Implice uzi rapidan SSH </value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Nevalida komando.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Loko ne rajtas esti malplena.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Silentigi pepojn de terminalo</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Enigu komandon (ekz. &apos;ssh uzantnomo@ĉefkomputilo&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Komando</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Nesubtenata komando:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Mankas argumentoj de komando.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Rapida lanĉo</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nova rapidlanĉa langeto</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Nova rapidlanĉa fenestro</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nova rapida langeto</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Ne eblis trovi dosieron:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Nevalida ligilo.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Demetu langeton ĉi tien</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Fermi langetojn maldekstre</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Fermi aliajn langetojn</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Fermi langetojn dekstre</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duobligi langeton</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duobligi</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Ne eblas difini du medivariablojn samnomajn.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Ne eblas difini medivariablon sennoman.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Medivariabloj</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Fermi serĉpanelon</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Trovi sekvan</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Trovi antaŭan</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Enigi serĉvorton</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Serĉi</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Nur presebla eligo</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Protokola eligo por sencimigo</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Vort-apartigaj signoj</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Lastatempaj</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Malfermas implicitan profilon je nova langeto.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Malfermas novan seancon de SSH aŭ Mosh je nova langeto.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Malfermas dialogon &quot;Rapida lanĉo&quot; kaj lanĉas seancon je nova langeto.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Malfermas agordaran fenestron.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Simplaj informoj pri ĉi tiu aplikaĵo.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Laste malfermitaj seancoj.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Lanĉas novan terminalan seancon bazitan sur implicita profilo.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Defora konekto...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Malfermas dialogon por lanĉi novan terminalan seancon de SSH aŭ Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Rapida lanĉo...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Malfermas dialogon de &quot;Rapida lanĉo&quot; por lanĉi novan terminalan seancon.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nova fenestro</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nova langeto</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Lanĉas novan seancon je nova langeto.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Lanĉas seancon je nova fenestro.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Speco de aplikaĵa menuo</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plata, laŭ agordo &quot;Malfermi novajn terminalojn kiel&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nova langeto&quot; / &quot;Nova fenestro&quot; parte sinkovrantaj</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Forlasi</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Forlasi Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Ebligita de sistem-regularo.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Fona bildo</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Uzi diafanan fonon</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Ĉu vi vere volas forviŝi ĉi tiun fonan bildon?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Koloroj</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Helaj koloroj</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopii ligilon</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regula esprimo</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tuta vorto</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Usklecodistinga</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopii elektaĵon aŭ alglui</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Uzi inteligentan bufron</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restartigi</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Seanco malkonektiĝis.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Pligrandigi tiparan grandon</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Malpligrandigi tiparan grandon</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Restarigi norman tipar-grandon</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Rekonekti langeton</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/es/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Acerca de</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Fondo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Azul</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Cerrar</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Preguntar antes de cerrar las ventanas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Preguntar antes de cerrar las pestañas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Color</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Color en las pestañas inactivas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Mostrar el título personalizado de la pestaña también en la barra de título</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Editar Título</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Mostrar indicador de nueva salida en las pestañas en segundo plano</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Se necesita reiniciar para aplicar el ajuste</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nueva pestaña</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Ninguno</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Pestañas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Ventanas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Abrir nuevas terminales como</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Naranja</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Pegar</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Morado</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Rojo</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Restaurar por defecto</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Arrancar al encender</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Ajustes</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Opciones</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Mostrar en la bandeja del sistema</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Mostrar pestañas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Turquesa</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Abajo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Arriba</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Subrayado</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Subrayar pestaña seleccionada</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Acerca de</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Atajos</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Ratón</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Perfiles</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Temas</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Añadir</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumentos</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Opacidad del fondo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Cursor parpadeante</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Texto en negrita</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Buscando actualizaciones...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Buscar actualizaciones</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Pulsa un color para editarlo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Clonar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta de colores</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Notificación de texto copiado</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Copiar al seleccionar</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Crear nuevo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Versión actual</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Barra</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bloque</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Estilo del cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Línea</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Borrar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>No modificar finales de línea</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Editar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exportar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Fuente</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Tamaño de fuente</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Atajo de teclado</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Atajo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Última versión</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licencia</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Modo de conversión de final de línea</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Modo de conversión de final de línea al pegar:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Acción del botón central</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Ratón</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Menú contextual</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Nada</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Pegar</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Crear nuevo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Relleno</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nombre</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Perfiles</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Notas de lanzamiento</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Acción del botón derecho</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Guardar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Límite de desplazamiento hacia atrás</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Ocultar automáticamente</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Ocultar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Estilo de la barra de desplazamiento</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Visible</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Activar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Por defecto</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Ubicación del ejecutable</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Color de la pestaña</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nombre</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Convertir final de línea a CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Convertir final de línea a CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Convertir final de línea a LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Directorio de trabajo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres cerrar la pestaña &quot;{0}&quot;?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres cerrar esta ventana?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres eliminar este atajo de teclado?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres eliminar este tema?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres descartar todos los cambios?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres restaurar los ajustes generales?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres restaurar los atajos de teclado por defecto?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres restaurar los ajustes del ratón?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres restaurar este perfil?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres restaurar las opciones por defecto de la terminal?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Deshabilitado por política.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Deshabilitado por el usuario. Por favor reactivalo en la pestaña de Inicio en el Gestor de Tareas.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Editar Título</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Error</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>La operación no se pudo completar por el siguiente error:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Error al importar el tema</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>No se ha encontrado un parser disponible</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Por favor confirma</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Introduce tu combinación de teclas ahora</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Reiniciar</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Texto copiado</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Añadir</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Cambiar título de la pestaña</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Limpiar</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Cerrar pestaña</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Atajos de teclado</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Eliminar</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Editar</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nueva pestaña</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nueva ventana</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Pestaña siguiente</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Pegar sin nuevas líneas</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Pestaña anterior</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Buscar</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Seleccionar todo</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Mostar ajustes</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Cambiar a Terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Alternar Ventana completa</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>A ventana</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nueva pestaña remota</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nueva pestaña SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Información SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>usuario</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Servidor</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>puerto</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Ubicación de la identidad</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Buscar</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Usar Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avanzado</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Puertos de Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Guardar Atajo</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>La aplicación necesita reiniciarse para que el cambio surta efecto.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Entrada Inválida</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>El puerto no puede ser 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Usuario y host son campos obligatorios.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>El nombre de usuario no puede ser vacío.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>El host no puede ser vacío.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>El puerto de SSH tiene que ser mayor que 0.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>El puerto Mosh no puede ser 0.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Rango de puertos de Mosh no es válido.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Si</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Lenguaje</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Ninguno</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nueva salida</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Se salió con error</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>¿Seguro que quieres eliminar este perfil?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nueva ventana SSH</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Perfiles SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Color de pestaña:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Usar ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Nombre de usuario</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Puerto desde</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>a puerto</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Rango de puertos Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autenticar</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Opciones exportadas a archivo</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Se importaron los ajustes del archivo</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>No existe el archivo de identidad</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Usar nombre de Windows al abrir urls SSH que no especifican uno</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Mosh para conexiones SSH por defecto</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Recortar a la derecha las líneas copiadas</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Usar SSH rápido por defecto</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Comando inválido.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>La ubicación no puede estar vacía.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Silenciar sonidos de terminal</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Introduce un comando (p.e. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Comando</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Comando no soportado:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Faltan argumentos del comando.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Inicio Rápido</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nueva pestaña de inicio rápido</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Nueva ventana de inicio rápido</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nueva pestaña rápida</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Archivo no encontrado:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Enlace inválido.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Suelta la pestaña aquí</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Cerrar pestañas a la izquierda</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Cerrar el resto de pestañas</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Cerrar pestañas a la derecha</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duplicar pestaña</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplicar</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>No puedes definir dos variables de entorno con el mismo nombre.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>No puedes definir una variable de entorno sin nombre.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variables de entorno</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Cerrar panel de búsqueda</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Buscar siguiente</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Buscar anterior</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Ingrese el término de búsqueda</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Buscar</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Solo salida imprimible</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Registar salida para depuración</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Caracteres separadores de palabras</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Reciente</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Abre el perfil predeterminado en una nueva pestaña.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Abre una nueva sesión SSH o Mosh en una nueva pestaña.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Abre el cuadro de diálogo &quot;Inicio Rápido&quot; e inicia la sesión en una nueva pestaña.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Abrir ventana de opciones.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Información básica sobre la app.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Sesiones abiertas recientemente.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Inicia una nueva sesión de terminal basada en el perfil predeterminado.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Conexión remota...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Abre un cuadro de diálogo para iniciar una nueva sesión de terminal SSH o Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Inicio Rápido...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Abre un cuadro de diálogo &quot;Inicio Rápido&quot; para iniciar una nueva sesión de terminal.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nueva ventana</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nueva pestaña</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Inicia una sesión en una nueva pestaña.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Lanzar nueva sesión en una nueva ventana.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Tipo de menú de la aplicación</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plano, honrando la configuración &quot;Abrir nuevas terminales como&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nueva pestaña&quot; / &quot;Nueva ventana&quot; en cascada</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Salir</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Salir de Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Habilitado por la política.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Imagen de fondo</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Usar fondo acrílico</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>¿Estás seguro de querer borrar esta imagen de fondo?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Colores</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Colores brillantes</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copiar enlace</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Toda la palabra</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Distinguir mayúsculas/minúsculas</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copiar selección o pegar</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Usar búfer inteligente</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Reiniciar sesión</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sesión finalizada.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Incrementar tamaño de fuente</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Disminuir tamaño de fuente</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reiniciar tamaño de fuente</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconectar pestaña</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/fa/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>درباره</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>پس‌زمینه</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>آبی</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>بستن</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>پرسش پیش از بستن پنجره</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>پرسش پیش از بستن زبانه</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>رنگ</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>رنگ زبانه‌ی غیرفعال</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>رونوشت</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>نمایش عنوان انتخابی در نوار عنوان</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>ویرایش عنوان</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>عمومی</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>سبز</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>نمایش شاخص خروجی جدید روی زبانه‌های پس‌زمینه</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>برای اعمال این تنظیم راه‌اندازی مجدد نیاز است</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>زبانه‌ی جدید</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>هیچکدام</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>زبانه‌ها</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>پنجره‌ها</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>بازکردن پایانه‌های جدید به عنوان</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>نارنجی</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>جایگذاری</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>بنفش</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>قرمز</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>بازنشانی پیش‌فرض‌ها</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>اجرا هنگام راه‌اندازی</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>تنظیمات</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>تنظیمات</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>نمایش در نوار نشانه‌ها</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>نمایش زبانه در</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>سبز دودی</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>پایین</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>بالا</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>زیرخط</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>زیرخط‌دار شدن زبانه‌ی انتخابی</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>درباره</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>عمومی</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>کلید‌ها</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>موشواره</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>نمایه</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>پایانه</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>پوسته‌ها</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>افزودن</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>آرگومان‌ها</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>تیرگی پس‌زمینه</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>نشانگر چشمک‌زن</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>متن ضخیم</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>انصراف</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>در حال بررسی به‌روزرسانی...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>بررسی به‌روزرسانی</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>برای ویرایش روی رنگ کلیک کنید</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>رونوشت</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>پالت رنگ</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>اعلان رونوشت متن</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>رونوشت هنگام انتخاب</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>افزودن جدید</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>نسخه‌ی کنونی</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>خطی</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>مستطیل</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>سبک نشانگر</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>زیرخط</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>حذف</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>ته‌خط تغییر نکند</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>ویرایش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>صادر کردن</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>خانواده‌ی قلم</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>اندازه‌ی قلم</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>وارد کردن</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>کلید میانبر</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>کلید میانبر</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>آخرین نسخه</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>مجوز</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>مدل ترجمه‌ی پایان خط‌ها</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>مدل ترجمه‌ی پایان خط‌ها هنگام جایگذاری</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>کار کلید میانی</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>موشواره</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>باز کردن منو</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>هیچ</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>جایگذاری</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>ایجاد جدید</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>فاصله</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>نام</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>نمایه‌ها</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>پوسته</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>یادداشت‌های انتشار</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>کار کلید راست</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>ذخیره</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>محدودیت پیمایش به عقب</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>پنهان‌سازی خودکار</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>پنهان</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>سبک نوار پیمایش</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>آشکار</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>فعال‌سازی</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>تبدیل به پیش‌فرض</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>مکان فایل اجرایی</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>رنگ زبانه</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>پایانه</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>پوسته</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>نویسنده</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>نام</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>تغییر ته‌خط به CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>تغییر ته‌خط به CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>تغییر ته‌خط به LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>پوشه‌ی کاری</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>آیا مطمئنید می‌خواهید زبانه‌ی &quot;{0}&quot; را ببندید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>آیا مطمئنید می‌خواهید این پنجره را ببندید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>آیا مطمئنید می‌خواهید این کلید را حذف کنید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>آیا مطمئنید می‌خواهید این پوسته را حذف کنید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>آیا مطمئنید که می‌خواهید همه‌ی تغییرات را نادیده بگیرید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>آیا مطمئنید می‌خواهید تنظیمات عمومی را بازنشانی کنید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>آیا مطمئنید که می‌خواهید کلید‌ها را به پیش‌فرض برگردانید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>آیا مطمئنید که می‌خواهید تنظیمات موشواره را برگردانید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>آیا مطمئنید که می‌خواهید تنظیمات این نمایه را برگردانید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>آیا مطمئنید که می‌خواهید تنظیمات پایانه را به پیش‌فرض برگردانید؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>غیرفعال‌شده با خط مشی.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>غیرفعال شده توسط کاربر. لطفا از نمایه‌ی شروع به کار در مدیریت فعالیت‌ها دوباره فعال کنید.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>ویرایش عنوان</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>خطا</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>عملیات به دلیل خطای زیر انجام نشد:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>وارد کردن پوسته ناموفق بود</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>تجزیه‌گر مناسب پیدا نشد</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>لطفا تایید کنید</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>انصراف</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>اکنون کلیدها را وارد کنید</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>قبول</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>بازنشانی</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>رونوشت متن</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>افزودن</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>تغییر عنوان زبانه</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>پاک کردن</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>بستن زبانه</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>کلید‌ها</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>حذف</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>ویرایش</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>زبانه‌ی جدید</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>پنجره‌ی جدید</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>زبانه‌ی بعدی</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>جایگذاری بدون خط جدید</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>زبانه‌ی پیشین</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>جستجو</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>انتخاب همه</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>نمایش تنظیمات</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۱</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۲</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۳</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۴</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۵</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۶</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۷</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۸</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>تعویض به پایانه‌ی ۹</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>تغییر وضعیت تمام‌صفحه</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>تغییر وضعیت پنجره</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>زبانه‌ی از راه دور جدید</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>زبانه‌ی SSH جدید</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>اطلاعات SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>کاربر</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>میزبان</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>درگاه</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مسیر فایل هویت</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>مرور</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>استفاده از Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>پیشرفته</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>درگاه‌های Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>ذخیره‌ی میانبر</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>برای این تغییر نیاز است برنامه مجددا راه‌اندازی شود.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>ورودی غیرمجاز</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>درگاه نمی‌تواند ۰ باشد.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>قسمت‌های کاربر و میزبان اجباریست.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>نام کاربر نمی‌تواند خالی باشد</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>میزبان نمی‌تواند خالی باشد</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>درگاه SSH میبایست بزگتر از صفر باشد.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>درگاه Mosh نمی‌تواند صفر باشد.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>بازه‌ی درگاه Mosh نامعتبر است.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>بله</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>خیر</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>زبان</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>هیچ‌کدام</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>خروجی جدید</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>خروج با خطا</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>آیا مطمئنید می‌خواهید این نمایه را حذف کنید؟</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>پنجره‌ی SSH جدید</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>نمایه‌های SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>رنگ زبانه</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>از ConPty استفاده کن</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>نام کاربر</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>از درگاه</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>تا درگاه</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>بازه‌ی درگاه Mosh.</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>تایید هویت</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>تنظیمات به فایل صادر شد</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>تنظیمات از فایل وارد شد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>فایل هویت وجود ندارد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>زمانی که آدرس SSH مشخص نکرده از نام‌کاربری Windows استفاده کن</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>پیش‌فرض به Mosh برای اتصال SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>رونوشت خط را از سمت راست تمیز کن</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>استفاده از SSH سریع به صورت پیش‌فرض</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>دستور غیرمجاز</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>مکان نمی‌تواند خالی باشد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>ساکت کردن بوق پایانه</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>دستور را وارد کنید (مثلا  &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>دستور</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>دستور پشتیبانی نشده:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>آرگومان‌های دستور ناقص هستند</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>اجرای سریع</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>زبانه‌ی اجرای سریع جدید</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>پنجره‌ی اجرای سریع جدید</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>زبانه‌ی سریع جدید</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>فایل پیدا نشد:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>پیوند غیرمجاز</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>زبانه را اینجا بیندازید</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>بستن زبانه‌‌های سمت چپ</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>بستن سایر زبانه‌ها</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>بستن زبانه‌‌های سمت راست</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>تکثیر زبانه</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>تکثیر</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>نمی‌توان دو متغیر محیطی با نام مشابه تعریف کرد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>نمی‌توان متغیر محیطی بدون نام تعریف کرد</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>متغیر محیطی</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>بستن تابلوی جستجو</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>جستجوی بعدی</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>جستجوی پیشین</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>متن جستجو را وارد کنید</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>جستجو</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>فقط خروجی قابل چاپ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>خروجی گزارش‌ها برای اشکال‌زدایی</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>نویسه‌های جداساز واژه</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>اخیر</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>باز کردن نمایه‌ی پیش‌فرض در زبانه‌ی جدید</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>یک نشست SSH یا Mosh در زبانه‌ی جدید ایجاد میکند.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>پنجره‌ی &quot;اجرای سریع&quot; باز میکند و در زبانه‌ی جدید پایانه شروع میکند.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>پنجره‌ی تنظیمات را باز میکند.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>اطلاعات پایه‌ای در مورد برنامه.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>نشست‌های بازشده‌ی اخیر</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>پایانه‌ی جدید براساس نمایه‌ی پیش‌فرض شروع می‌کند.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>اتصال از راه دور...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>یک پنجره برای اجرای نشست جدید SSH یا Mosh باز میکند.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>اجرای سریع...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>پنجره‌ی &quot;اجرای سریع&quot; را برای ایجاد پایانه‌ی جدید باز میکند.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>پنجره‌ی جدید</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>زبانه‌ی جدید</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>یک نشست در زبانه‌ی جدید اجرا میکند.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>یک نشست در پنجره‌ی جدید اجرا میکند.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>نوع منوی برنامه</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>تخت، شبیه تنظیمات &quot;بازکردن پایانه‌های جدید به عنوان&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>آبشاری &quot;زبانه‌ی جدید&quot; / &quot;پنجره‌ی جدید&quot;</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>خروج</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>بستن Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>فعال‌شده با خط مشی.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>تصویر پس‌زمینه</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>استفاده از پس‌زمینه‌ی آکریلیک</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>آیا مطمئنید می‌خواهید این تصویر پس‌زمینه را حذف کنید؟</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>رنگ‌ها</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>رنگ‌های روشن</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>رونوشت از پیوند</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>عبارت باقاعده</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>تمام واژه</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>حساس به بزرگی و کوچکی حروف</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>رونوشت متن انتخاب شده یا جایگذاری</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>استفاده از حافظه‌ی هوشمند</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>راه‌اندازی مجدد</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>نشست قطع شده است.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>افزایش اندازه‌ی قلم</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>کاهش اندازه‌ی قلم</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>تنظیم مجدد اندازه‌ی قلم</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>اتصال مجدد زبانه</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/fr/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>À propos</value>\n    <comment>MainPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Arrière-plan</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Bleu</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Fermer</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Demander avant de fermer la fenêtre</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Demander avant de fermer les onglets</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Couleur</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Couleur des onglets inactifs</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Copier</value>\n    <comment>XtermTerminalView.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Afficher le titre de l&apos;onglet personnalisé également dans la barre de titre</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Éditer le titre</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Général</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Vert</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Afficher l&apos;indicateur de nouvelle sortie sur les onglets inactifs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Relancez l&apos;application pour appliquer ce réglage</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nouvel onglet</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Aucun</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Onglets</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Fenêtres</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Ouvrir les nouveaux terminaux en tant que</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Orange</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Coller</value>\n    <comment>XtermTerminalView.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Violet</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Rouge</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Réinitialiser</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Exécuter au démarrage</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Réglages</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Réglages</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Afficher dans la barre d&apos;état système</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Disposition des onglets</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Sarcelle</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>En bas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>En haut</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Souligner</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Souligner l&apos;onglet actif</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>À propos</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Général</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Raccourcis clavier</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Souris</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profils</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Thèmes</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Ajouter</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Arguments</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Opacité de l&apos;arrière-plan</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Curseur clignotant</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Texte gras</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Annuler</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Vérification des mises à jour...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Vérifier les mises à jour</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Cliquez sur une couleur pour l&apos;éditer</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Cloner</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Palette de couleurs</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Notification de copie de texte</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Copie automatique</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Créer un profil</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Version actuelle</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Barre</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bloc</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Style de curseur</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Souligner</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Ne pas modifier les fins de ligne</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Éditer</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exporter</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Famille de police</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Taille de police</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importer</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Raccourci clavier</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Raccourci clavier</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Dernière version</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licence</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Conversion de fin de ligne</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Conversion de fin des lignes collées:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Action du bouton central</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Souris</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Menu contextuel</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Rien</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Coller</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Créer un thème</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Bords</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nom</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profils</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Thème</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Notes de version</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Action du bouton droit</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Sauvegarder</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limite de défilement</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Masquer automatiquement</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Masquée</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Barre de défilement</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Visible</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Définir comme actif</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Définir par defaut</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Emplacement de l&apos;exécutable du shell</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Couleur de l&apos;onglet</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Thème:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Auteur</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nom</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Convertir les fins de ligne en CR</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Convertir les fins de ligne en CR+LF</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Convertir les fins de ligne en LF</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Dossier de départ</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Êtes-vous sûr(e) de vouloir fermer &quot;{0}&quot; onglets ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Voulez-vous fermer cette fenêtre ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Voulez-vous supprimer ce raccourci ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Voulez-vous supprimer ce thème ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Voulez-vous annuler toutes les modifications ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Voulez-vous restaurer les paramètres généraux ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Voulez-vous restaurer les raccourcis clavier par défaut ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Voulez-vous restaurer les paramètres de la souris ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Voulez-vous restaurer ce profil ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Voulez-vous restaurer les options du terminal par défaut ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Désactivé par Stratégie de Goupe.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Désactivé par l&apos;utilisateur. Veuillez le réactiver dans l&apos;onglet Démarrage du Gestionnaire des Tâches.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Éditer le titre</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Erreur</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>L&apos;opération ne peut pas être terminée en raison de l&apos;erreur suivante:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>L&apos;importation du thème a échoué</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Aucun analyseur approprié trouvé</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Veuillez confirmer</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Entrez votre raccourci maintenant</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Réinitialiser</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Texte copié</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ajouter</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Changer le titre de l&apos;onglet</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Effacer</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Fermer l&apos;onglet</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Raccourcis clavier</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Effacer</value>\n    <comment>KeyBindingsView.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Éditer</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nouvel onglet</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nouvelle fenêtre</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Onglet suivant</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Coller sans nouvelles lignes</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Onglet précédent</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Recherche</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Sélectionner tout</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Afficher les paramètres</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Passer au Terminal 1</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Passer au Terminal 2</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Passer au Terminal 3</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Passer au Terminal 4</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Passer au Terminal 5</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Passer au Terminal 6</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Passer au Terminal 7</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Passer au Terminal 8</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Passer au Terminal 9</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Plein écran</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Afficher/Masquer la fenêtre</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nouvel onglet distant</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nouvel onglet SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Informations SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>utilisateur</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>hôte</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Chemin du fichier d&apos;identité</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Naviguer</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Utiliser Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avancé</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Ports Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Enregistrer le raccourci</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>L&apos;application doit redémarrer pour que cette modification soit prise en compte.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Entrée invalide</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Le port ne peut pas être 0.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Utilisateur et hôte sont des champs obligatoires.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Le nom d&apos;utilisateur ne peut être vide.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>L&apos;hôte ne peut être vide.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Le port SSH doit être supérieur à zéro.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Le port Mosh ne peut être zéro.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>La plage de ports Mosh n&apos;est pas valide.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Oui</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Non</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Langage</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Aucun</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nouvelle sortie</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sortie avec erreur</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Voulez-vous supprimer ce profil ?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nouvelle fenêtre SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Profils SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Couleur d&apos;onglet:</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Utiliser ConPty</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Nom d&apos;utilisateur</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Du port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>au port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Gamme de ports Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Authentifier</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Les paramètres ont été exportés dans le fichier</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Les paramètres ont été importés du fichier</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Le fichier d&apos;identification n&apos;existe pas</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Utiliser le nom d&apos;utilisateur Windows pour les connexions SSH qui n&apos;en spécifient aucun</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Mosh par défaut pour les connexions SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Rogner les lignes copiées</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Utiliser SSH rapide par défaut</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Commande invalide.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>L&apos;emplacement ne peut pas être vide.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Désactiver les bips du terminal</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Entrez une commande (ex: &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Commande</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Commande non supportée:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Les arguments de la commande sont manquants.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Lancement rapide</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Lancement rapide (onglet)</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Lancement rapide (fenêtre)</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nouvel onglet rapide</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Fichier non trouvé:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Lien invalide.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Déposez l&apos;onglet ici</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Fermer les onglets à gauche</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Fermer les autres onglets</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Fermer les onglets à droite</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Dupliquer l&apos;onglet</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Dupliquer</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Impossible de définir deux variables d’environnement portant le même nom.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Impossible de définir une variable d&apos;environnement sans nom.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variables d&apos;environnement</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Fermer le panneau de recherche</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Résultat suivant</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Résultat précédent</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Entrez le terme de recherche</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Recherche</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Sortie imprimable seulement</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Journal de sortie pour le débogage</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Caractères séparateurs de mots</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Récents</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Ouvre le profil par défaut dans un nouvel onglet.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Ouvre une session SSH ou Mosh dans un nouvel onglet.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Ouvre le dialogue &quot;Lancement rapide&quot; et démarre une session dans un nouvel onglet.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Ouvre les paramètres.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Informations sur l&apos;application.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Sessions récentes.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Démarre une nouvelle session de terminal du profil par défaut.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Connexion à distance...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Ouvre un dialogue permettant de lancer une nouvelle session SSH ou Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Lancement rapide...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Ouvrir un dialogue &quot;Lancement rapide&quot; pour une nouvelle session de terminal.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nouvelle fenêtre</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nouvel onglet</value>\n    <comment>@William Why adding dots everywhere? These are not sentences</comment>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Lance une session dans un nouvel onglet.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Lance une session dans une nouvelle fenêtre.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Style du menu d&apos;application</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plat, honorant le paramètre &quot;Ouvrir les nouveaux terminaux en tant que&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nouvel onglet&quot; / &quot;Nouvelle fenêtre&quot; en cascade.</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Quitter</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Quitter Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Autorisé par Stratégie de Goupe.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Image d&apos;arrière-plan</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Arrière-plan transparent</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Voulez-vous supprimer cet arrière-plan ?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Couleurs</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Couleurs claires</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copier le lien</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Expression régulière</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mot entier</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sensible à la casse</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copier la sélection ou coller</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Utiliser le buffer intelligent</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Redémarrer</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Session déconnectée.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Augmenter la taille de la police</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Diminuer la taille de la police</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Réinitialiser la taille de la police</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Onglet Reconnecter</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/he/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>אודות</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>רקע</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>כחול</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>סגור</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>אשר סגירת חלונות</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>אשר סגירת לשוניות</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>צבע</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>צבע לשוניות לא פעילות</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>העתק</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>הצג כותרת מותאמת אישית גם בשורת כותרת</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>ערוך כותרת</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>כללי</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>ירוק</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>הצג סמן פלט בלשוניות רקע</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>הפעלת אפליקציה מחדש נדרשת עבור החלת הגדרות</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>לשונית חדשה</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>ללא</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>לשוניות</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>חלונות</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>פתח טרמינל חדש כ...</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>כתום</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>הדבק</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>סגול</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>אדום</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>שחזר ברירת מחדל</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>הפעל בעת הפעלת המחשב</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>הגדרות</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>הגדרות</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>הצג במגש המערכת</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>הצג לשוניות ב..</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>ירוק-כחול</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>למטה</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>למעלה</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>קו תחתון</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>הצג קו תחתון בטקסט הלשונית המסומנת</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>אודות</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>כללי</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>צירופי מקשים</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>עכבר</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>פרופילים</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>טרמינל</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>ערכות נושא</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>הוסף</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Arguments</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>שקיפות רקע</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>סמן מהבהב</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>טקסט מודגש</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>בטל</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>בודק עדכונים...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>בדוק עדכונים</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>הקש על צבע לעריכה</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>שכפל</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>לוח צבעים</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>התראה על טקסט שהועתק</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>העתק בעת בחירה</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>צור חדש</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>גרסה עדכנית</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>קו</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>בלוק</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>סוג סמן</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>קו תחתון</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>מחק</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>אל תשנה סיומת שורות</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>ערוך</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>ייצא</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>משפחת גופן</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>גודל גופן</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>ייבא</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>קיצור מקשים</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>קיצור מקשים</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>גרסה אחרונה</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>רשיון</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>מצב תרגום סיומת שורות</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>מצב תרגום סיומת שורות בעת הדבקה</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>פעולת כפתור עמצאי בעכבר</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>עכבר</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>תפריט תלוי-הקשר</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>כלום</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>הדבק</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>צור חדש</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Padding</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>שם</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>פרופילים</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>ערכת נושא</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Release notes</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>פעולת כפתור ימני בעכבר</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>שמור</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>הגבלת גלילה לאחור</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>הסתרה אוטומטית</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>מוסתר</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>עיצוב גלילה לאחור</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>נראה</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>הגדר פעיל</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>הגדר ברירת מחדל</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>מיקום קובץ הרצת Shell</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>צבע לשונית</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>טרמינל</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>ערכת נושא:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>מחבר</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>שם</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>הפוך סיומת שורות ל-CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>הפוך סיומת שורות ל-CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>הפוך סיומת שורות ל-LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>תיקיית עבודה</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך לסגור לשונית &quot;{0}&quot;?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך לסגור חלון זה?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך למחוק צירוף מקשים זה?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך למחוק ערכת נושא זו?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך לבטל את כלל השינויים?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך לשחזר הגדרות כלליות?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך לשחזר צירוף מקשים לברירת המחדל?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך לשחזר הגדרות עכבר?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>האם הנך בטוח שברצונך לשחזר פרופיל?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>האם הנך בטוח ברצונך לשחזר הגדרות ברירת מחדל עבור הטרמינל?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>מבוטל ע&quot;י מדיניות.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>מבוטל ע&quot;י המשתמש. אנא הפעל מחדש בלשונית אתחול במנהל המשימות.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>ערוך כותרת</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>שגיאה</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>הפעולה אינה יכולה להתבצע עקב השגיאה הבאה:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>ייבוא ערכת נושא נכשלה</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>לא נמצא מנתח מתאים</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>אנא אשר</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>בטל</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>הכנס צירוף מקשים כעת</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>אישור</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>איפוס</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>טקסט הועתק</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>הוסף</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>שנה שם לשונית</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>נקה</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>סגור לשונית</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>צירופי מקשים</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>מחק</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>ערוך</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>לשונית חדשה</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>חלון חדש</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>לשונית הבאה</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>הדבק ללא שורה חדשה</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>לשונית קודמת</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>חיפוש</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>סמן הכל</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>הצג הגדרות</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>עבור לטרמינל 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>הפעל/בטל מסך מלא</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>החלף חלון</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>לשונית מרוחקת חדשה</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>לשונית SSH חדשה</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>מידע SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>משתמש</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>שרת יעד</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>זהה נתיב</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Browse</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Use Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>מתקדם</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh ports:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>שמור קיצור דרך</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>היישום צריך להפעיל מחדש כדי שהשינוי ייכנס לתוקף.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>קלט לא תקין</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port cannot be 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>המשתמש והשרת יעד הם שדות חובה.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>שם המשתמש לא יכול להיות ריק.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>שרת יעד לא יכול להיות ריק.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>PORT ה-SSH צריכה להיות גדולה מאפס.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>PORT ה-MOSH יכול לא להיות אפס.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>טווח יציאת מוש אינו חוקי.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>כן</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>לא</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>שפה</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>ללא</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>פלט חדש</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>הסתיים עם שגיאה</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>האם אתה בטוח שברצונך למחוק פרופיל זה?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>חלון SSH חדש</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>פרופילי SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>צבע לשונית:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>השתמש ב- ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>שם משתמש</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>From port</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>to port</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh port range</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>אמת</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>ההגדרות יוצאו לקובץ</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>הגדרות יובאו מהקובץ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>קובץ זיהוי אינו קיים</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Use Windows username when opening SSH URLs that don&apos;t specify one</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Default to Mosh for SSH connections</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Right trim copied lines</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>השתמש ב- SSH מהיר כברירת מחדל</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>פקודה שגויה.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>המיקום לא יכול להיות ריק.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>השתק צפצופי טרמינל</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Enter a command (e.g. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>פקודה</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>פקודה לא נתמכת:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Command arguments are missing.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>הפעלה מהירה</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>לשונית הפעלה מהירה חדשה</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>חלון הפעלה מהירה חדש</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>כרטיסייה מהירה חדשה</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>הקובץ לא נמצא:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>קישור לא חוקי.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>שחרר את הלשונית כאן</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>סגור לשוניות משמאל</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>סגור לשוניות אחרות</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>סגור לשוניות מימין</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>לשונית כפולה</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>שכפל</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>לא ניתן להגדיר שני משתני סביבה עם אותו שם.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>לא ניתן להגדיר משתנה סביבה ללא שם.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>משתני סביבה</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>סגור את לוח החיפוש</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>מצא את הבא</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>מצא קודמות</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>הזן מונח חיפוש</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>חיפוש</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>פלט להדפסה בלבד</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Log output for debugging</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Word separator characters</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recent</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Opens default profile in a new tab.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Opens a new SSH or Mosh session in a new tab.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Opens &quot;Quick Launch&quot; dialog and starts session in a new tab.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Opens settings window.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Basic info about the app.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Recently opened sessions.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Starts new terminal session based on the default profile.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Remote Connect...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Opens a dialog for launching a new SSH or Mosh terminal session.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Quick Launch...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Opens a &quot;Quick Launch&quot; dialog for starting a new terminal session.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>New Window</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>New Tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new tab.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new window.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Application menu type</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flat, honoring &quot;Open new terminals as&quot; setting</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;New Tab&quot; / &quot;New Window&quot; cascading</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Quit</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Quit Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Enabled by policy.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Background image</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Use acrylic background</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this background image?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Colors</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Bright colors</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copy link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Whole word</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Case sensitive</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copy selection or paste</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Use smart buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Session disconnected.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/hi/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>के बारे में</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>पृष्ठभूमि</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>नीला</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>बंद करे</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>खिड़कियां बंद करने से पहले पूछें</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>टैब बंद करने से पहले पूछें</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>रंग</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>निष्क्रिय टैब पर रंग</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>प्रतिलिपि</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>शीर्षक टैब में भी कस्टम टैब शीर्षक दिखाएं</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>शीर्षक संपादित करें</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>सामान्य</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>हरा</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>पृष्ठभूमि टैब पर नया आउटपुट संकेतक दिखाएं</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>सेटिंग लागू करने के लिए पुनः लोड करना आवश्यक है</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>नया टैब</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>कोई नहीं</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>टैब्स</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>खिड़कियाँ</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>के रूप में नए टर्मिनल खोलें</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>संतरा</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>चिपकाएं</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>बैंगनी</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>लाल</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>डिफॉल्ट्स का पुनःस्थापन</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>प्रारम्भ में चले</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>समायोजन</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>समायोजन</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>सिस्टम ट्रे में दिखाएं</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>टैब दिखाएं</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>टील</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>तल</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>ऊपर</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>रेखांकित करना</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>चयनित टैब को रेखांकित करें</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>के बारे में</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>सामान्य</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>कुंजी बाइंडिंग</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>माउस</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>प्रोफाइल</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>टर्मिनल</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>विषय-वस्तु</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>जोड़ना</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>तर्क</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>पृष्ठभूमि की अस्पष्टता</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>ब्लिंकिंग कर्सर</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>बोल्ड अक्षर</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>रद्द करना</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>अपडेट्स के लिए जांच हो रही है...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>अद्यतन के लिए जाँच</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>संपादित करने के लिए एक रंग पर क्लिक करें</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>क्लोन</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>रंगों के प्रकार</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>पाठ की प्रतिलिपि अधिसूचना</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>चयन पर कॉपी करें</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>नया बनाओ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>वर्तमान संस्करण</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>बार</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>खंड</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>कर्सर शैली</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>रेखांकित करना</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>हटाना</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>लाइन एंडिंग्स को संशोधित न करें</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>संपादित करें</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>निर्यात</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>फ़ॉन्ट परिवार</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>फ़ॉन्ट आकार</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>आयात</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>कुंजीपटल संक्षिप्त रीति</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>कुंजीपटल संक्षिप्त रीति</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>नवीनतम संस्करण</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>लाइसेंस</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>लाइन ट्रांसलेशन ट्रांसलेशन मोड</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>पेस्ट पर अनुवाद समाप्त करने वाली पंक्ति:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>मध्य बटन कार्रवाई</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>माउस</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>संदर्भ की विकल्प - सूची</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>कुछ भी तो नहीं</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>चिपकाएं</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>नया बनाओ</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>गद्दी</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>नाम</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>प्रोफाइल</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>विषय</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>रिलीज नोट्स</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>सही बटन कार्रवाई</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>सहेजें</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>स्क्रॉलबैक सीमा</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>ऑटो छुपा रहा</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>छिपा हुआ</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>स्क्रॉलबार शैली</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>दर्शनीय</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>सक्रिय नियत करें</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>डिफॉल्ट सेट करें</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>शैल निष्पादन योग्य स्थान</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>टैब का रंग</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>टर्मिनल</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>थीम:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>लेखक</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>नाम</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>कन्वर्ट लाइन अंत करने के लिए सीआर</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>कन्वर्ट लाइन अंत CR + LF के लिए</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>कन्वर्ट लाइन अंत LF के लिए</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>कार्यकारी डाइरेक्टरी</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>क्या आप वाकई &quot;{0}&quot; टैब को बंद करना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>क्या आप वाकई इस विंडो को बंद करना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>क्या आप वाकई इस कीबाइंडिंग को हटाना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>क्या आप वाकई इस विषय को हटाना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>क्या आप वाकई सभी परिवर्तनों को छोड़ना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>क्या आप वाकई सामान्य सेटिंग्स को पुनर्स्थापित करना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>क्या आप वाकई डिफ़ॉल्ट कीबाइंडिंग को पुनर्स्थापित करना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>क्या आप वाकई माउस सेटिंग्स को पुनर्स्थापित करना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>क्या आप वाकई इस प्रोफ़ाइल को पुनर्स्थापित करना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>क्या आप वाकई डिफ़ॉल्ट टर्मिनल विकल्प को पुनर्स्थापित करना चाहते हैं?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>नीति द्वारा अक्षम।</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>उपयोगकर्ता द्वारा अक्षम। कृपया इसे टास्क मैनेजर के स्टार्टअप टैब में पुनः सक्रिय करें।</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>शीर्षक संपादित करें</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>त्रुटि</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>निम्न त्रुटि के कारण ऑपरेशन पूरा नहीं किया जा सकता है:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>आयात विषय विफल रहा</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>कोई उपयुक्त पार्सर नहीं मिला</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>कृपया पुष्टि करें</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>रद्द करना</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>अब अपनी कीबाइंडिंग दर्ज करें</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>ठीक</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>रीसेट</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>पाठ की प्रतिलिपि बनाई गई</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>जोड़ना</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>टैब शीर्षक बदलें</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>स्पष्ट</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>टैब बंद करें</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>कुंजी बाइंडिंग</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>हटाना</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>संपादित करें</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>नया टैब</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>नयी खिड़की</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>अगला टैब</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>बिना न्यूलाइन्स के पेस्ट करें</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>पिछला टैब</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>खोज</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>सभी का चयन करे</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>सेटिंग दिखाएँ</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>टर्मिनल 1 पर स्विच करें</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>टर्मिनल 2 पर स्विच करें</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>टर्मिनल 3 पर जाएँ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>टर्मिनल 4 पर जाएँ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>टर्मिनल 5 पर स्विच करें</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>टर्मिनल 6 पर जाएँ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>टर्मिनल 7 पर जाएँ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>टर्मिनल 8 पर जाएँ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>टर्मिनल 9 पर स्विच करें</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>पूर्णस्क्रीन चालू करें</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>खिड़की टॉगल करें</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>नया रिमोट टैब</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>न्यू एसएसएच टैब</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH जानकारी</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>उपयोगकर्ता</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>मेज़बान</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>बंदरगाह</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>पहचान फ़ाइल पथ</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>ब्राउज</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>मोश का उपयोग करें</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>उन्नत</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh बंदरगाहों:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>शॉर्टकट बचाओ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>इस परिवर्तन को प्रभावी होने के लिए एप्लिकेशन को पुनरारंभ करना होगा।</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>अमान्य निवेश</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>पोर्ट 0 नहीं हो सकता।</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>उपयोगकर्ता और होस्ट अनिवार्य क्षेत्र हैं।</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>उपयोगकर्ता नाम रिक्त नहीं हो सकता।</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>होस्ट खाली नहीं हो सकता।</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH पोर्ट को शून्य से अधिक होना चाहिए।</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>MOS पोर्ट शून्य नहीं हो सकता।</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh पोर्ट रेंज अमान्य है।</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>हाँ</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>नहीं</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>भाषा: हिन्दी</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>कोई नहीं</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>नया आउटपुट</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>त्रुटि के साथ बाहर निकल गया</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>क्या आप वाकई इस प्रोफ़ाइल को हटाना चाहते हैं?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>नई एसएसएच खिड़की</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH प्रोफाइल</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>टैब रंग:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty का उपयोग करें</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>उपयोगकर्ता नाम</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>बंदरगाह से</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>बायें तरफ़ मुड़ने के लिए</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>मोश पोर्ट रेंज</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>प्रमाणित करें</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>फ़ाइल करने के लिए सेटिंग्स निर्यात की गईं</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>सेटिंग्स फ़ाइल से आयात किए गए थे</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>पहचानें फ़ाइल मौजूद नहीं है</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>SSH URL खोलते समय Windows उपयोगकर्ता नाम का उपयोग करें जो एक निर्दिष्ट नहीं करता है</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH कनेक्शन के लिए Mosh में डिफ़ॉल्ट</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>दाएं ट्रिम कॉपी की गई लाइनें</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>डिफ़ॉल्ट रूप से त्वरित SSH का उपयोग करें</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>अवैध आदेश।</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>स्थान खाली नहीं हो सकता।</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>म्यूट टर्मिनल बीप्स</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>एक कमांड दर्ज करें (उदा। &apos;Ssh username @ host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>आदेश</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>असमर्थित आदेश:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>कमांड तर्क गायब हैं।</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>शीघ्र उदघाटन</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>नया त्वरित लॉन्च टैब</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>नई त्वरित लॉन्च विंडो</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>नया त्वरित टैब</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>फाइल नहीं मिली:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>अमान्य लिंक।</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>यहां टैब ड्रॉप करें</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>बाईं ओर टैब बंद करें</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>अन्य टैब बंद करें</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>दाईं ओर टैब बंद करें</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>डुप्लीकेट टैब</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>प्रतिलिपि</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>एक ही नाम से दो पर्यावरण चर को परिभाषित नहीं किया जा सकता है।</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>बिना नाम के पर्यावरण चर को परिभाषित नहीं किया जा सकता है।</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>पर्यावरण चर</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>खोज पैनल बंद करें</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>अगला तलाशें</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>पिछले खोजें</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>खोज शब्द दर्ज करें</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>खोज</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>प्रिंट करने योग्य उत्पादन ही</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>डीबगिंग के लिए आउटपुट लॉग करें</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>शब्द विभाजक वर्ण</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recent</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Opens default profile in a new tab.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Opens a new SSH or Mosh session in a new tab.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Opens &quot;Quick Launch&quot; dialog and starts session in a new tab.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Opens settings window.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Basic info about the app.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Recently opened sessions.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Starts new terminal session based on the default profile.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Remote Connect...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Opens a dialog for launching a new SSH or Mosh terminal session.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Quick Launch...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Opens a &quot;Quick Launch&quot; dialog for starting a new terminal session.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>New Window</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>New Tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new tab.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Launches a session in a new window.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Application menu type</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flat, honoring &quot;Open new terminals as&quot; setting</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;New Tab&quot; / &quot;New Window&quot; cascading</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Quit</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Quit Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Enabled by policy.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Background image</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Use acrylic background</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this background image?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Colors</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Bright colors</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copy link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Whole word</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Case sensitive</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copy selection or paste</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Use smart buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Session disconnected.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/hr/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Informacije</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Pozadina</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Plava</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zatvori</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Pitaj prije zatvaranja prozora</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Pitaj prije zatvaranja kartica</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Boja</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Boja za neaktivne kartice</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopiraj</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Prikaži prilagođen naslov kartice i u traci naslova</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Uredi naslov</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Opće</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Zelena</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Prikaži indikatora za nove rezultate u stražnjim karticama</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Primjenjuje se nakon ponovnog pokretanja programa</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Bez</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Kartice</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Prozore</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Otvori nove terminale kao</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Narančasta</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Umetni</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Ljubičasta</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Crvena</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Vrati standardne postavke</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Pokreni nakon pokretanja sustava</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Postavke</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Postavke</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Prikaži u programskoj traci</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Prikaži kartice</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Tirkiz</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Dolje</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Gore</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Podcrtano</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Podcrtaj odabranu karticu</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Informacije</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Opće</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Tipkovne funkcije</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Miš</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Teme</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumenti</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Neprozirnost pozadine</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Pokazivač treperi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Podebljani tekst</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Odustani</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Provjera nadogradnji …</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Provjeri nadogradnje</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Pritisni boju koju želiš urediti</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kloniraj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta boja</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Obavijest, da je tekst kopiran</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopiraj odabrano</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Stvori novi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Trenutačna verzija</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Crta</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Pravokutnik</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Vrsta pokazivača</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Podvlaka</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Izbriši</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Ne mijenjaj prijelom redaka</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Uredi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Izvezi</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Obitelj fontova</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Veličina fonta</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Uvezi</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Tipkovnički prečac</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Tipkovnički prečac</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Najnovija verzija</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licenca</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Način prijeloma redaka</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Način prijeloma redaka prilikom umetanja:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Radnja srednje tipke miša</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Miš</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Kontekstualni izbornik</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Ništa</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Umetni</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Stvori novu</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Unutarnji odmak</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Ime</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Napomene uz izdanje</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Rednja desne tipke miša</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Spremi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Ograničenje klizanja unatrag</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Automatski sakriven</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Sakriven</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Prikaz klizača</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Vidljiv</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aktivno</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Standardno</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Mjesto izvršne datoteke ljuske</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Boja kartica</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Ime</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Pretvori prijelome redaka u CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Pretvori prijelome redaka u CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Pretvori prijelome redaka u LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Radna mapa</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Stvarno želiš zatvoriti karticu „{0}”?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Stvarno želiš zatvoriti karticu?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Stvarno želiš izbrisati ovu tipkovnu funkciju?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Stvarno želiš izbrisati ovu temu?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Stvarno želiš odbaciti sve promjene?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Stvarno želiš vratiti standardne postavke?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Stvarno želiš vratiti standardne tipkovne funkcije?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Stvarno želiš vratiti postavke miša?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Stvarno želiš vratiti postavke ovog profila?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Stvarno želiš vratiti standardne opcije terminala?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Deaktivirano na osnovi uvjeta.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Deaktivirano od korisnika. Reaktiviraj na početnoj kartici upravljača zadataka.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Uredi naslov</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Greška</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Nije moguće izvršiti operaciju zbog sljedeće greške:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Uvoz teme neuspio</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nema odgovarajuće mogućnosti za obradu podataka</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Potvrdi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Odustani</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Sada upiši tipkovnu funkciju</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>U redu</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Resetiraj</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Tekst je kopiran</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Promijeni naslov kartice</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Izbriši</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Zatvori karticu</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Tipkovne funkcije</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Izbriši</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Uredi</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Novi prozor</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Sljedeća kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Umetni bez prijeloma retka</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Prethodna kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Traži</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Odaberi sve</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Prikaži postavke</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Prijeđi na terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Uklj./Isklj. cjeloekranski prikaz</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Uklj./Isklj. prozor</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nova vanjska kartica</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nova SSH kartica</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH informacija</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>korisnik</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>računalo</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>priključak</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Utvrdi stazu datoteke</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Pregledaj</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Koristi Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Napredno</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh priključci:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Spremi prečace</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Da bi se promjene primijenile, program se mora ponovo pokrenuti.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Nevaljani unos</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Priključak ne može biti 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Korisnik i računalo su obavezna polja.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Ime korisnika se mora navesti.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Računalo se mora navesti.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH priključak mora biti veći od nula.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh priključak ne može biti nula.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Raspon mosh priključka ne valja.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Jezik</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Bez</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Novi rezultat</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Završeno s greškom</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Stvarno želiš izbrisati ovaj profil?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Novi SSH prozor</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profili</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Boja kartica:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Koristi ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Korisničko ime</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Iz priključka</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>u priključak</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Raspon mosh priključka</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Potvrdi</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Postavke su izvezene u datoteku</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Postavke su uvezene iz datoteke</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Datoteka idetifikacije ne postoji</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Koristi korisničko ime za Windows prilikom otvaranja SSH URL-ova koji ga ne određuju</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Standardno koristi Mosh za SSH veze</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Odreži nepotrebne razmake na kraju kopiranih redaka</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Standardno koristi brzi SSH</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Nevaljana naredba.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Mjesto se mora navesti.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Isključi zvučne signale terminala</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Upiši naredbu (npr. „ssh username@host”)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Naredba</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Nepodržana naredba:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Nedostaju argumenti naredbe.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Brzo pokretanje</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Novo brzo pokretanje kartice</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Novo brzo pokretanje prozora</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nova brza kartica</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Datoteka nije pronađena:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Nevaljana poveznica.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Spusti karticu ovdje</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Zatvori lijeve kartice</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Zatvori ostale kartice</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Zatvori desne kartice</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Dupliciraj karticu</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Dupliciraj</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Nije moguće odrediti dva okruženja s istim imenom.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Nije moguće odrediti okruženje bez imena.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Varijable okruženja</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zatvori ploču pretrage</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Pronađi sljedeće</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Pronađi prethodno</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Upiši traženi izraz</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Traži</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Samo ispisiv rezultat</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Zapiši rezultat za ispravljanje grešaka</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Znakovi za razdvajanje riječi</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Nedavno korišteni</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Otvara standardni profil u novoj kartici.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Otvara novi SSH ili Mosh sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Otvara dijalog za „Brzo pokretanje” i započinje sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Otvara prozor postavki.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Osnovni podaci o programu.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Nedavno otvorene sesije.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Pokreće novi terminal na osnovi standardnog profila.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Povezivanje …</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Otvara dijalog za pokretanje nove sesije SSH ili Mosh terminala.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Brzo pokretanje …</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Otvara dijalog „Brzo pokretanje” za pokretanje nove sesije terminala.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Novi prozor</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Pokreće sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Pokreće sesiju u novom prozoru.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Vrsta izbornika programa</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plošno, s obzirom na postavku „Otvori terminale kao”</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>„Nova kartica”/„Novi prozor” kaskadno</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Zatvori</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Zatvori Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Aktivirano pravilima.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Slika pozadine</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Akrilna pozadina</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Stvarno želiš izbrisati ovu sliku pozadine?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Boje</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Svijetle boje</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopiraj poveznicu</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regularni izraz</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Cijele riječi</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Razlikuj velika/mala slova</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopiraj odabir ili umetni</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Koristi pametnu predmemoriju</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Pokreni ponovo</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sesija je prekinuta.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Povećajte veličinu fonta</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Smanji veličinu fonta</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Poništi veličinu fonta</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Ponovno spojite karticu</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/hu/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Alkalmazásról</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Háttérkép</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Kék</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Bezárás</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Ablakok bezárásának megerősítése</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Fülek bezárásának megerősítése</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Szín</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Az interaktív lapok színe</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Másolás</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Fül címének mutatása az ablak címeként</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Cím szerkesztése</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Általános</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Zöld</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Esemény jelzése az inaktív füleken</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Újraindítás szükséges a beállítás alkalmazásához</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Új lap</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Semmi</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Lapok</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Ablakok</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Megnyitás új terminálként</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Narancssárga</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Beillesztés</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Lila</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Piros</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Alapértelmezés visszaállítása</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Automatikus futtatás a számítógép indulásakor</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Beállítások</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Beállítás</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Megjelenítés a tálcán</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Fülek mutatása</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Zöldeskék</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Lent</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Fent</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Aláhúzás</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Kiválasztott fül aláhúzása</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Alkalmazásról</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Általános</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Billentyűparancsok</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Egér</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profilok</value>\n    <comment>SettingsPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Parancssor</value>\n    <comment>SettingsPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Témák</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Hozzáadás</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Paraméterek</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Háttér átlátszatlansága</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Villogó kurzor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Félkövér szöveg</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Mégse</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Frissítések keresése folyamatban</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Frissítéesk keresése</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Kattintson egy színre a szerkesztéshez</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Másolás</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Színpaletta</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Értesítés szöveg kimásolásakor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kijelöléskor másolás</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Új</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Jelenlegi verzió</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Sáv</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blokk</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Kurzor stílus</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Aláhúzott</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Törlés</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>A sorvégek ne változzanak</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Szerkesztés</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exportálás</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Betűtipus</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Betűméret</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Betöltés</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Billentyűparancs</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Billentyűparancs</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Legújabb verzió</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licensz</value>\n    <comment>About.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Line ending translation mode</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Line ending translation mode on paste:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Középső egérgomb eseménye</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Egér</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Context menu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Semmi</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Beillesztés</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Új</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Padding</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Név</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profilok</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Téma</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Kiadási megjegyzések</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Jobb egérgomb eseménye</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Mentés</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Scrollback limit</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Automatikus elrejtés</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Rejtett</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Görgetősáv stílusa</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Látható</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aktívvá tétel</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Alapértelmezetté tétel</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell executable location</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Lap szín</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminál</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Téma:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Szerző</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Név</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Sorvégek konvertálása CR-re</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Sorvégek konvertálása CR+LF-re</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Sorvégek konvertálása LF-re</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Munkakönyvtár</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Biztosan bezárja a &quot;{0}&quot; fület?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Biztosan bezárja ezt az ablakot?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Biztosan törli ezt a billentyűparancsot?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Biztosan el akarja ezt a témát távolítani?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Biztosan vissza akarja dobni az összes változtatásokat?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Biztosan vissza akarja állítani az általános beállításokat?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Biztosan visszaállítja az alapértelmezett billentyűparancsokat?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Biztosan vissza akarja állítani az egér beállításait?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Biztosan vissza akarja állítani ezt a profilt?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Biztosan visszaállítja az alapértelmezett terminal beállításokat?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Policy által tiltva</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Disabled by user. Please reactivate it in the Startup tab of the Task Manager.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Cím szerkesztése</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Hiba</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Az alábbi hiba miatt a művelet nem végrehajtható:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>A téma betöltése nem sikerült</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nincs megfelelő értelmező</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Kérem jóváhagyni</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Mégse</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Billentyűparancs megadása</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Visszaállítás</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>A szöveg kimásolva</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Hozzáadás</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>A lap címének módosítása</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Törlés</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>A lap bezárása</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Billentyűparancsok</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Törlés</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Szerkesztés</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Új lap</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Új ablak</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Következő lap</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Beillesztés új sor nélkül</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Előző lap</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Keresés</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Összes kijelölése</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Beállítások megjelenítése</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Váltás az 1. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Váltás a 2. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Váltás a 3. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Váltás a 4. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Váltás az 5. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Váltás a 6. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Váltás a 7. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Váltás a 8. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Váltás a 9. terminálra</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Teljes képernyőre váltás</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Toggle window</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Új távoli SSH kapcsolat</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Új SSH fül</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH infó</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>felhasználó</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>szerver</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Az azonosító file útvonala</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Keresés</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Mosh használata</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Haladó</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh portok:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Parancsikon mentése</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>A változáshoz újra kell indítani az alkalmazást.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Hibás adat</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>A port nem lehet 0</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Kötelező megadni felhasználónevet és jelszót</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>A felhasználónév nem lehet üres.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>A szervernév nem lehet üres.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Az SSH port legyen nagyobb nullánál</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>A Mosh port legyen nagyobb nullánál</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>A Mosh port tartomány hibás.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Igen</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Nem</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Nyelv</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Semmi</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Új output</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hibával megállt</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Biztosan törölni szeretnéd ezt a profilt?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Új SSH ablak</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profilok</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>A lap színe</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty használata</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Felhasználónév</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Forrás portja</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>Célpont portja</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh port tartomány\n</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Hitelesítés</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>A beállítások mentésre kerültek ebbe a file-ba</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>A beállítások visszatöltésre kerültek innen</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identify file does not exist</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Windows felhasználónév használata olyan SSH kapcsolatokhoz, ahol nincs megadva felhasználónév</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Az SSH kapcsolatok Mosh-sal nyíljanak meg</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Másolásnál a sorok végén lévő szóköz levágása</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Use quick SSH by default</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Hibás parancs.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>A parancs nem lehet üres</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>A terminal hangjának elnémítása</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Parancs megadása (pl. ssh felhasználó@szervernév)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Parancs</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Nem támogatott parancs:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Nem lettek megadva paraméterek a parancsnak.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Gyorsindító</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Új &quot;Gyorsindító&quot; fül</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Új &quot;Gyorsindító&quot; ablak</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Új gyors fül</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>A fájl nem található</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Hibás link.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Fül ledobása ide</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Balra lévő fülek bezárása</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Többi fül bezárása</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Jobbra lévő fülek bezárása</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Fül megduplázása</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Megduplázás</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Nem lehet definiálni két környezeti vátozót ugyanazzal a névvel.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Nem lehet definiálni egy környezeti változót név nélkül.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Környezeti változók</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Kereső panel bezárása</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Következő keresése</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Előző keresése</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Keresett kifejezés</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Keresés</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Csak a nyomtatható kimenet</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Hibakereső naplózás</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Szóelválasztó karakterek</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Előző</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Az alapértelmezett profil megnyitása új fülön</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Új SSH vagy Mosh kapcsolat nyitása új fülön</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>&quot;Gyorsindító&quot; panel megjelenítése és a kapcsolat megnyitása új fülön</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Beállítások megnyitása</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Információ az alkalmazásról</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Legutóbb megnyitott kapcsolatok</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Új kapcsolat nyitása az alapértelmezett profillal</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Távoli kapcsolat</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Új SSH vagy Mosh kapcsolatot megnyitó panel megjelenítése</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Gyorsindító</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>&quot;Gyorsindító&quot; panel megjelenítése új kapcsolat megnyitásához</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Új ablak</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Új lap</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Kapcsolat indítása új lapon</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Kapcsolat indítása új ablakban</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Alkalmazás mentü típusa</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flat, honoring &quot;Open new terminals as&quot; setting</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Új fül&quot; / &quot;Új ablak&quot;</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Kilépés</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Kilépés a Fluent Terminalból</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Pol</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Háttérkép</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Áttetsző háttér használata</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Biztosan törölni szeretnéd ezt a háttérképet?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Színek</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Fényes színek</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Link másolása</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Reguláris kifejezés</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Egész szóra</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Kis/nagybetű érzékeny</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kijelölés másolása vagy beillesztése</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Smart buffer használata</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Kapcsolat újraindítása</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Kapcsolat bontva</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/id/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Tentang</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Latar Belakang</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Birut</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Tutup</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Tanyakan sebelum menutup windows</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Tanyakan sebelum menutup tabs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Warna</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Warna pada tabs tidak aktif</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Menggandakan</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Tampilkan judul tab modifikasi pada judul bar</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Edit Judul</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Umum</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Hijau</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Tampilkan indikator keluaran baru pada latar belakang tabs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Nyalakan ulang untuk menerapkan pengaturan</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Buka tab baru</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Tidak ada</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Kumpulan tab</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Jendela</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Buka terminal baru sebagai</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Orange</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Tempel</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Purple</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Merah</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Kembalikan ke Default</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Jalankan pada startup</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Pengaturan</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Pengaturan</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Tampilkan pada tray sistem</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Tampilkan tab pada</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Teal</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Bawah</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Atas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Garisbawahi</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Garisbawahi tab terpilih</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Tentang</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Umum</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Keybindings</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profil</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Tambahkan</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumen</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Transparansi Latar Belakang</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Blinking cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Teks Tebal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Batal</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Mengecek pembaruan</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Cek pembaruan</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Klik pada warna untuk mengedit</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kloning</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Palet warna</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Text notifikasi di salin</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Gandakan yang terpilih</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Buat baru</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Versi sekarang</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Bar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blok</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Desain cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Garis bawah</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Hapus</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Jangan modifikasi baris terakhir</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Sunting</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Export</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Keluarga font</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Ukuran font</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Import</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Pintasan keyboard</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Pitnasan Keyboard</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Versi terakhir</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Lisensi</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Line ending translation mode</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Line ending translation mode on paste:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Aksi tombol tengah</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Konteks Menu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Tidak ada</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Tempel</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Buat baru</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Padding</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nama</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profil</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Catatan rilis</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Aksi tombol kanan</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Simpan</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Scrollback limit</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Otomatis sembunyikan</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Sembunyikan</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollbar style</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Tampilkan</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Atur Aktif</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Atur ke default</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell executable location</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Warna tab</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Teminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Author</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nama</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Convert line endings to CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Convert line endings to CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Convert line endings to LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Direktori kerja</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk menutup tab &quot;{0}&quot; ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk menutup window ini ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this keybinding?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk menghapus tema ini ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk membatalkan seluruh perubahan ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk mengembalikan pengaturan umum ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Are you sure you want to restore the default keybindings?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk mengembalikan pengaturan mouse ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk mengembalikan profil ini ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Apakah anda yakin untuk mengembalikan pengaturan terminal ke default ?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Matikan melalui policy</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Matikan melalui pengguna. Silahkan aktifkan kembali tab startup pada Task Manager</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Edit judul</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Eror</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Operasi gagal diselesaikan dengan error:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Import tema gagal</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Tidak ada parser yang cocok</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Mohon konfirmasi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Batal</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Masukkan keybinding sekaran</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Ok</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Reset</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Teks dicopy</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Tambahkan</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Ganti judul tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Bersihkan</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Tutup tab</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Keybinding</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Hapus</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Edit</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Tab baru</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Window baru</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Tab selanjutnya</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Tempelkan tanpa baris baru</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Tab sebelumnya</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Cari</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Pilih semua</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Tampilkan pengaturan</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Ganti ke terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Beralih ke Layar penuh</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Beralih ke Window</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Tab kendali baru</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Tab SSH baru</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Informasi SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>pengguna</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Identifikasi lokasi file</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Temukan</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Gunakan mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Lanjutan</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>ports Mosh</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Simpan pintasan</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Aplikasi perlu di restart untuk menerapkan perubahan</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Input tidak valid</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port tidak boleh 0</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>User and host are mandatory fields.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Username tidak boleh kosong</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Host tidak boleh kosong</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Port SSH harus lebih besar dari nol</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Port mosh tidak boleh nol</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Rentang port Mosh tidak valid</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Ya</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Tidak</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Bahasa</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Tidak ada</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Output baru</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Keluar dengan eror</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Apakah anda yakin akan menghapus profil ini ?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Window SSH baru</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Profil SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Warna tab</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Gunakan ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Username</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Dari port</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>Ke port</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Rentang port Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Authenticate</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Pengaturan file yang di export</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Pengaturan file yang di import</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identifikasi file tidak ditemukan</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Use Windows username when opening SSH URLs that don&apos;t specify one</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Standar Mosh untuk koneksi SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Right trim copied lines</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Gunakan SSH cepat berdasarkan standart</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Perintah tidak valid</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Lokasi tidak boleh kosong</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Heningkan bunyi bip terminal</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Masukkan perintah (contoh &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Perintah</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Perintah tidak didukung</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Argumen perintah tidak ditemukan</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Peluncuran cepat</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Tab baru peluncur cepat</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Windows baru peluncur cepat</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Tab baru cepat</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>File tidak ditemukan</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Tautan tidak valid</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Pindahkan ke sini</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Tutup tab di sebelah kiri</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Tutup tab lainnya</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Tutup tab di sebelah kanan</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Gandakan tab</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Gandakan</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Tidak dapat mendefinisikan dua variabel environtment dengan nama yang sama</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Tidak dapat mendefinisikan variabel environtment tanpa nama</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variabel environtment</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tutup panel pencarian</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Temukan selanjutnya</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Temukan sebelumnya</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Masukkan istilah pencarian</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Cari</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Hanya keluaran yang bisa dicetak</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Keluaran Log untuk debugging</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Karakter pemisah kata</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Belakangan ini</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Buka profil default pada tab baru</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Buka SSH baru atau sesi MOSH di tab baru</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Buka dialog &quot;Peluncur Cepat&quot; dan jalankan sesi pada tab baru</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Buka pengaturan window</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Informasi dasar tentang aplikasi</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Sesi terbuka belakangan ini</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Jalankan terminal baru berdasarkan sesi pada profil default</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Menghubungkan pengendali...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Buka dialog untuk menjalankan SSH baru atau sesi terminal Mosh</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Peluncur cepat</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Buka dialog &quot;Peluncur cepat&quot; untuk memulai sesi pada terminal baru</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Window baru</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Tab baru</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Jalankan sesi pada tab baru</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Jalankan sesi pada window baru</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Tipe menu aplikasi</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flat, honoring &quot;Open new terminals as&quot; setting</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>Mengurutkan &quot;Tab baru&quot;  / &quot;Window baru&quot;</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Tutup</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Tutup Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Hidupkan berdasarkan policy</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Gambar latar belakang</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Gunakan latar belakang akrilik</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Apakah anda yakin akan menghapus gambar latar belakang ini ?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Warna</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Kecerahan warna</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Tautan di salin</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Keseluruhan kata</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hal-hal sensitif</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Salin yang terpilih atau tempel</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Use smart buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Session disconnected.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/it/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Informazioni su</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Sfondo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Blu</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Chiudi</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Chiedi conferma prima di chiudere le finestre</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Chiedi conferma prima di chiudere le schede</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Colore</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Colorare le schede inattive</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Copia</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Mostra il nome della scheda nella barra del titolo</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Rinomina scheda</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Generale</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Mostra un indicatore sulle schede inattive quando l&apos;output prosegue</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Per adattare le impostazioni è necessario riavviare l&apos;app</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nuova scheda</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Nessuno</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Schede</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Finestre</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Apri i nuovi terminali come</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Arancione</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Incolla</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Viola</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Rosso</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Ripristina i valori predefiniti</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Esegui all&apos;avvio</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Impostazioni</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Impostazioni</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Mostra icona nell&apos;area di notifica</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Mostra le schede</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Verde acqua</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>In basso</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>In alto</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Linea orizzontale</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Sottolinea la scheda attiva</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Informazioni su</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Generali</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Combinazioni di tasti</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminale</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Temi</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Aggiungi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argomenti linea di comando</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Opacità sfondo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Cursore intermittente</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Usa il testo in grassetto</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Annulla</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Controllo aggiornamenti...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Controlla aggiornamenti</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Fai click su un colore per modificarlo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Duplica</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Schema colori</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Avvisa quando viene copiato del testo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Copia automaticamente il testo dopo la selezione</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Nuovo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Versione attuale</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Barra verticale</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Casella piena</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Forma cursore</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Barra orizzontale</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Elimina</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Non sostituire i terminatori di linea</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Modifica</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Esporta</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Stile carattere</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Dimensioni carattere</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importa</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Scorciatoia da tastiera</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Scorciatoia da tastiera</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Versione più recente</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licenza</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Gestione dei terminatori di linea</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Quando si incolla del testo:</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Azione tasto centrale del mouse</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Apri il menù contestuale</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Nessuna</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Incolla</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Nuovo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Margini</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nome</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Note di rilascio</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Azione click destro</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Salva</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limite di scorrimento (in linee)</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Nascondi automaticamente</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Nascosta</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Stile della barra di scorrimento</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Sempre visibile</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Applica</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Imposta come predefinito</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Percorso dell&apos;eseguibile di shell</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Colore schede</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminale</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autore</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nome</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Converti in CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Converti in CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Converti in LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Directory di lavoro</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Vuoi davvero chiudere la scheda &quot;{0}&quot;?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Vuoi davvero chiudere questa finestra?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Vuoi davvero eliminare questa combinazione di tasti?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Vuoi davvero eliminare questo tema?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Vuoi davvero annullare tutti i cambiamenti?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Vuoi davvero riportare tutte le impostazioni ai valori predefiniti?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Vuoi davvero ripristinare le combinazioni di tasti predefinite?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Vuoi ripristinare le impostazioni del mouse?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Vuoi ripristinare questo profilo ai suoi valori predefiniti?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Vuoi davvero ripristinare le impostazioni predefinite del terminale?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Disattivato da policy</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Disattivato dall&apos;utente. Riattiva Fluent Terminal nella scheda Avvio del Task Manager</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Rinomina scheda</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Errore</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>L&apos;operazione non è stata portata a termine a causa del seguente errore:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Importazione tema fallita</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nessun parser compatibile trovato</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Conferma</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Annulla</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Inserisci la combinazione di tasti</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Ripristina</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Testo copiato</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aggiungi</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Rinomina scheda</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Svuota</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Chiudi scheda</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Combinazioni di tasti</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Elimina</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Modifica</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nuova scheda</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nuova finestra</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Scheda successiva</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Incolla senza andare a capo</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Scheda precedente</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Cerca</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Seleziona tutto</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Mostra le impostazioni</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Passa al Terminale 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Passa al Terminale 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Passa al Terminale 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Passa al Terminale 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Passa al Terminale 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Passa al Terminale 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Passa al Terminale 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Passa al Terminale 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Passa al Terminale 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Attiva/Disattiva modalità schermo intero</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Mostra/Nascondi finestra</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nuova scheda remota</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nuova scheda SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Connessione SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>utente</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>porta</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Percorso file chiave di identità</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Scegli</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Usa Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avanzate</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Porte per Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Salva scorciatoia</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>L&apos;app deve essere riavviata per poter applicare queste modifiche</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Input non valido</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>La porta non può essere 0</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>I campi utente e host sono obbligatori</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Il nome utente non può essere vuoto</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>L&apos;host non può essere vuoto</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Le porte SSH devono essere maggiori di 0</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Le porte Mosh non possono essere 0</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>L&apos;intervallo di porte Mosh non è valido</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Si</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Lingua</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Nessuno</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nuovo output</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Terminato con errore</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Vuoi davvero eliminare questo profilo?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nuova finestra SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Connessioni SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Colore scheda</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Usa ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Nome utente</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>a</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Intervallo porte per Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autenticati</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Le impostazioni sono state esportate</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Le impostazioni sono state importate dal file</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Il file specificato non esiste</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Usa il nome utente di Windows per le sessioni SSH dove non è specificato un nome utente</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Usa Mosh come strumento predefinito per tutte le connessioni SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Rimuovi spazi bianchi a destra durante la copia</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Usa Quick SSH come impostazione predefinita</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Comando non valido</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Il percorso non può essere vuoto</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Non riprodurre i suoni del terminale</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Inserire un comando (ad es. &apos;ssh nomeutente@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Comando</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Comando non supportato:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Argomenti mancanti.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Avvio rapido</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Avvio rapido in una nuova scheda</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Avvio rapido in una nuova finestra</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nuova scheda rapida</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>File non trovato:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Link non valido</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Rilascia la scheda qui</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Chiudi tutte le schede a sinistra</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Chiudi tutte le altre schede</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Chiudi tutte le schede a destra</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duplica scheda</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplica</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Non si possono definire due variabili d&apos;ambiente con lo stesso nome</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Le variabili d&apos;ambiente devono avere un nome</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variabili d&apos;ambiente</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Chiudi il pannello di ricerca</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Trova successivo</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Trova precedente</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Scrivi il testo da cercare</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Cerca</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Solo output stampabile</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Log output per il debug</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Separatori di parole</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recenti</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Apre una nuova scheda con il profilo predefinito</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Apre una sessione SSH o Mosh in una nuova scheda</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Apre la schermata di &quot;Avvio rapido&quot; e avvia la sessione in una nuova scheda</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Apre la finestra impostazioni</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Informazioni sull&apos;app</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Sessioni aperte di recente</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Avvia una nuova sessione di terminale con il profilo predefinito</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Connessione remota...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Apre una schermata per la creazione di una sessione SSH o Mosh</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Avvio rapido...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Apre la schermata di &quot;Avvio rapido&quot; per una nuova sessione di terminale</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nuova finestra</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nuova scheda</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Avvia la sessione in una nuova scheda</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Avvia la sessione in una nuova finestra</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Formato menu applicazione</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Lineare, le azioni seguiranno l&apos;impostazione &quot;Apri i nuovi terminali come&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>Menù a cascata &quot;Nuova Scheda&quot; / &quot;Nuova finestra&quot;</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Chiudi</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Chiudi Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Attivato da policy</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Immagine di sfondo</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Usa la sfumatura acrilica per lo sfondo</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Vuoi davvero eliminare questa immagine di sfondo?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Colori</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Colori brillanti</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copia link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parola intera</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sensibile a maiuscole/minuscole</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copia selezione o incolla</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Usa smart buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Riavvia</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sessione terminata.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Aumenta dimensioni del testo</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Riduci dimensioni del testo</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Ripristina dimensioni del testo</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Riconnetti scheda</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/ja/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>このアプリについて</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>背景色</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>ブルー</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>閉じる</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>ウィンドウを閉じる前に尋ねる</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>タブを閉じる前に尋ねる</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>色</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>非アクティブなタブの色</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>コピー</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>カスタムタブタイトルをタイトルバーにも表示する</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>タイトルを編集</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>一般</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>グリーン</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>バックグラウンドタブで出力されたらアイコンを表示する</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>設定を適用するには再起動が必要です</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>新しいタブ</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>無し</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>タブ</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>ウィンドウ</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>新しいターミナルの開き方</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>オレンジ</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>貼り付け</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>パープル</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>レッド</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>デフォルトに戻す</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>起動時に実行する</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>設定</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>タスクバーに表示する</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>タブを表示する場所</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>ティール</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>下</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>上</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>下線</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>アクティブなタブに下線を表示する</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>このアプリについて</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>一般</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>キーバインド</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>マウス</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>プロファイル</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>ターミナル</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>テーマ</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>追加</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>引数</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>背景の不透明度</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>カーソルを点滅させる</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>太字にする</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>アップデートを確認中…</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>アップデートを確認する</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>編集するには色をクリック</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>複製</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>カラーパレット</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>テキストをコピーしたら通知する</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>選択してコピーする</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>新規作成</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>現在のバージョン</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>縦線</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>矩形</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>カーソルの形</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>下線</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>削除</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>改行を改変しない</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>編集</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>エクスポート</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>フォントファミリー</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>フォントサイズ</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>インポート</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>キーボードショートカット</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>キーボードショートカット</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>最新のバージョン</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>ライセンス</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>改行の変換モード</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>ペーストの際に行末の改行コードを変換する:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>中央ボタンの動作</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>マウス</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>コンテキストメニュー</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>なにもしない</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>貼り付け</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>新規作成</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>余白</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>名前</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>プロファイル</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>テーマ</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>リリースノート</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>右ボタンの動作</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>保存</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>スクロールバックの限界</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>自動的に隠す</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>表示しない</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>スクロールバーのスタイル</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>常に表示する</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>有効にする</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>デフォルトにする</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>シェル実行ファイルの場所</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>タブの色</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>ターミナル</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>テーマ</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>作成者</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>テーマ名</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>改行を CR に変換する</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>改行を CR+LF に変換する</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>改行を LF に変換する</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>作業ディレクトリ</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>このタブを閉じてもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>このウィンドウを閉じてもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>このキーバインドを削除してもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>このテーマを削除してもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>全ての変更を破棄してもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>一般の設定を復元してもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>デフォルトのキーバインドを復元してもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>マウスの設定を復元してもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>このプロファイルを復元してもよろしいですか?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>デフォルトのオプションに戻してもよろしいですか？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>ポリシーにより無効化されています。</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>ユーザーにより無効化されています。タスクマネージャのスタートアップタブにて再起動してください。</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>タイトル編集</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>エラー</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>以下のエラーにより操作が終了できませんでした:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>テーマのインポートに失敗しました</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>適切なパーサーが見つかりません</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>確認してください</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>キーバインドを入力</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>リセット</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>コピーしました</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>追加</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>タブタイトルを変更</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>クリア</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>タブを閉じる</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>キー割り当て</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>削除</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>編集</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>新しいタブ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>新しいウィンドウ</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>次のタブ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>改行無しで貼り付け</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>前のタブ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>検索</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>すべて選択</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>設定表示</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>ターミナル1に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>ターミナル2に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>ターミナル3に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>ターミナル4に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>ターミナル5に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>ターミナル6に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>ターミナル7に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>ターミナル8に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>ターミナル9に切り替え</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>フルスクリーン切替</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>ウィンドウ切り替え</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>新しいリモートタブ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>新しいSSHタブ</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH情報</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ユーザー名</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ホスト</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ポート</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>鍵ファイルへのパス</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>参照</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Moshを使う</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>高度な</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh ポート:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>ショートカットを保存</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>この変更を適用するためにはアプリケーションを再起動する必要があります。</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>無効な入力</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>ポート番号に0は使用できません。</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>ユーザーとホストは必須項目です。</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>ユーザ名は空にできません</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>ホスト名は空にできません</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSHポート番号には0以上の数値を設定してください。</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Moshポートの値に0を設定することはできません</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Moshポートの値のレンジが無効です。</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>はい</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>いいえ</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>言語</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>なし</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>新規出力</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>エラーのため終了しました</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>このプロファイルを消去してもよろしいですか？</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>新規SSH ウィンドウ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH プロファイル</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>タブの色:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPtyを使用する</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>ユーザー名</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>開始ポート番号</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>終了ポート番号</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh ポートレンジ</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>認証する</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>設定がエクスポートされました</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>設定がインポートされました</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>鍵ファイルが存在しません</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>特に指定がない場合、SSH URL を開く際のユーザー名にWindowsのユーザー名を使用する</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH 接続にはデフォルトでMoshを使用する</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>後続の空白を除いてコピー</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>デフォルト設定のクイックSSHを使用する</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>無効なコマンド</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>ロケーションは必須項目です</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>ターミナルのビープ音を無効化する</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>コマンドを入力 (例: &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>コマンド</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>サポートされていないコマンド</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>コマンドの引数が一致しません</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>クイック起動</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>新規クイックローンチタブ</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>新規クイックローンチウィンドウ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>新規クイックタブ</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>ファイルが見つかりません: </value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>無効なリンク</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>タブをここに移動</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>左のタブをすべて閉じる</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>他のタブを閉じる</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>右のタブをすべて閉じる</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>タブを複製</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>複製</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>同じ名前を持った環境変数は定義できません。</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>名前がない環境変数は定義できません。</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>環境変数</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>検索をパネルを閉じる</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>次を検索</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>前を検索</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>検索キーワードを入力</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>検索</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>印字可能なもののみ出力する</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>デバッグ用ログ出力</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>テキスト区切り文字</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>最近</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>新しいタブでデフォルトプロファイルを開く</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>新しいタブで新規SSH/Moshセッションを開く</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>&quot;クイック起動&quot;ダイアログを開き、新しいタブでセッションを開始</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>設定ウィンドウを開く</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>アプリについての基本情報</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>最近開いたセッション</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>デフォルトプロファイルで新しいターミナルセッションを開始</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>リモート接続...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>新しいSSH/Moshターミナルセッションを起動するためのダイアログを開く</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>クイック起動...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>新しいターミナルセッションを開始するため&quot;クイック起動&quot;を開く</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>新しいウィンドウ</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>新しいタブ</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>新しいタブでセッションを起動</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>新しいウィンドウでセッションを起動</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>アプリケーションメニューの形式</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>&quot;新しいターミナルの開き方&quot;の設定に従いフラットにする</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;新しいタブ&quot;／&quot;新しいウィンドウ&quot;を重ねて表示</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>終了</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Fluent Terminalの終了</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>ポリシーによる許可</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>背景画像</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>透過背景</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>この背景画像を削除してもよろしいですか？</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>色</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>明色</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>リンクをコピー</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>正規表現</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>単語単位</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>大/小文字</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>選択部分のコピーあるいは貼り付け</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>スマートバッファを使用</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>再起動</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>セッションが切断されました</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>フォントサイズを拡大</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>フォントサイズを縮小</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>フォントサイズをリセット</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>タブを再接続</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/ko/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>정보</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>배경</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>파란색</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>닫기</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>창을 닫기 전에 물어보기</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>탭을 닫기 전에 물어보기</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>색상</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>비활성 탭 색상</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>복사</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>사용자 정의 탭 제목을 제목 표시줄에도 표시</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>제목 편집</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>일반</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>초록색</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>백그라운드 탭에 &apos;새 출력 표시기&apos; 사용</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>프로그램을 다시 시작하여 설정 적용</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>새 탭</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>없음</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>탭</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>창</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>새 터미널을 다음으로 열기</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>주황색</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>붙여넣기</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>보라색</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>빨간색</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>기본값 복원</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Windows 시작 시 실행</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>설정</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>설정</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>알림 영역에 표시</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>다음 위치에 탭 표시</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>청록색</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>아래</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>위</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>밑줄</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>선택한 탭에 밑줄</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>정보</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>일반</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>키 설정</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>마우스</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>프로필</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>터미널</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>테마</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>추가</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>인수</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>배경 투명도</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>깜빡이는 커서</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>굵은 글씨</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>취소</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>업데이트 확인 중...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>업데이트 확인</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>편집할 색상을 선택하세요.</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>복제</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>색상 팔레트</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>텍스트 복사 알림</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>선택 시 복사</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>새로 만들기</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>현재 버전</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>바</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>블록</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>커서 스타일</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>밑줄</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>삭제</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>줄 끝 변경 안 함</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>편집</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>내보내기</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>글꼴 패밀리</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>글꼴 크기</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>가져오기</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>키보드 단축키</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>키보드 단축키</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>최신 버전</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>라이선스</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>줄 끝 변환 모드</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>붙여넣기 시 줄 끝 변환 모드:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>가운데 버튼 동작</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>마우스</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>오른쪽 클릭 메뉴</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>없음</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>붙여넣기</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>새로 만들기</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>여백</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>이름</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>프로필</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>테마</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>릴리즈 노트</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>오른쪽 버튼 동작</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>저장</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>스크롤 백 제한</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>자동 숨김</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>숨김</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>스크롤 바 모양</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>보이게</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>활성화</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>기본값으로 설정</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>셸 실행 파일 경로</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>탭 색상</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>터미널</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>테마:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>제작자</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>이름</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>줄 끝을 CR로 변환</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>줄 끝을 CR+LF로 변환</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>줄 끝을 LF로 변환</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>작업 디렉터리</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>정말 &quot;{0}&quot; 탭을 닫으시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>정말 이 창을 닫으시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>정말 이 키 설정을 삭제하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>정말 이 테마를 삭제하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>정말 모든 변경 사항을 취소하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>정말 기본 설정으로 복원하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>정말 키 설정을 기본값으로 복원하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>정말 마우스 설정을 복원하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>정말 이 프로필을 복원하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>정말 터미널 기본 설정을 복원하시겠습니까?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>정책에 의해 비활성화되었습니다.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>사용자에 의해 비활성화되었습니다. 작업 관리자의 시작 탭에서 다시 활성화해 주세요.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>제목 편집</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>오류</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>다음 오류로 인해 작업을 완료할 수 없음:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>테마 가져오기 실패</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>적절한 파서를 찾지 못함</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>확인 필요</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>취소</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>지금 설정할 키를 입력하세요.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>확인</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>초기화</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>텍스트 복사됨</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>추가</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>탭 제목 변경</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>모두지움</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>탭 닫기</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>키 설정</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>삭제</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>편집</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>새 탭</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>새 창</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>다음 탭</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>줄 바꿈 없이 붙여넣기</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>이전 탭</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>찾기</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>모두 선택</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>설정 표시</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>터미널 1로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>터미널 2로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>터미널 3으로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>터미널 4로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>터미널 5로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>터미널 6으로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>터미널 7로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>터미널 8로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>터미널 9로 전환</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>전체 화면 전환</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>창 전환</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>새 원격 탭</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>새 SSH 탭</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH 정보</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>사용자</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>호스트</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>포트</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>아이덴티티 파일 경로</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>찾아보기</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Mosh 사용</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>고급</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh 포트:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>바로 가기 저장</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>변경 사항을 적용하려면 앱을 다시 시작해야 합니다.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>잘못된 입력</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>포트는 0으로 설정할 수 없습니다.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>사용자 및 호스트는 반드시 입력해야 합니다.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>사용자 이름은 비워둘 수 없습니다.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>호스트는 비워둘 수 없습니다.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH 포트는 0보다 큰 값으로 설정해야 합니다.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh 포트는 0으로 설정할 수 없습니다.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh 포트 범위가 잘못되었습니다.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>예</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>아니오</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>언어</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>없음</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>새 출력</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>오류로 인해 종료됨</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>정말 이 프로필을 삭제하시겠습니까?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>새 SSH 창</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH 프로필</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>탭 색상:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty 사용</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>사용자 이름</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>발신 포트</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>수신 포트</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh 포트 범위</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>인증</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>설정을 파일로 내보냈습니다.</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>설정을 파일에서 불러왔습니다.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>아이덴티티 파일이 존재하지 않음</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>사용자 이름이 명시되지 않은 SSH URL을 열 때 Windows 사용자 이름 사용</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH 연결에 기본으로 Mosh 사용</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>복사한 줄들의 우측 공백 제거</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>quick SSH를 기본으로 사용</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>잘못된 명령어입니다.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>경로는 비워둘 수 없습니다.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>신호음 음소거</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>명령어를 입력하세요 (예: &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>명령어</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>지원되지 않는 명령어:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>명령어 인수가 없습니다.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>빠른 실행</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>새 빠른 실행 탭</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>새 빠른 실행 창</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>새 빠른 창</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>파일을 찾을 수 없음:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>잘못된 링크입니다.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>여기에 탭 끌어다 놓기</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>좌측 탭 닫기</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>다른 탭 닫기</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>우측 탭 닫기</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>탭 복제</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>복제</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>같은 이름을 가진 환경 변수를 두개씩 정의할 수 없습니다.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>이름이 없는 환경 변수를 정의할 수 없습니다.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>환경 변수</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>검색 패널 닫기</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>다음 찾기</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>이전 찾기</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>검색 단어 입력</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>검색</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>표시 가능한 출력만 기록</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>출력을 로그에 기록 (디버깅용)</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>띄어쓰기 문자</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>최근 세션</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>기본 프로필을 새 탭으로 엽니다.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>새 SSH 또는 Mosh 세션을 새 탭으로 엽니다.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>&quot;빠른 실행&quot; 대화 상자를 띄우고 새 탭에서 세션을 시작합니다.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>설정 창을 엽니다.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>앱의 기본 정보를 봅니다.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>최근에 열었던 세션들입니다.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>기본 프로필에 따라 새 터미널 세션을 시작합니다.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>원격 연결...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>새 SSH 또는 Mosh 터미널 세션을 열 대화 상자를 띄웁니다.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>빠른 실행...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>새 터미널 세션을 열 &quot;빠른 실행&quot; 대화 상자를 띄웁니다.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>새 창</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>새 탭</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>새 탭에서 세션을 엽니다.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>새 창에서 세션을 엽니다.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>애플리케이션 메뉴 타입</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>플랫, &quot;새 터미널을 다음으로 열기&quot; 설정을 따름</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;새 탭&quot; / &quot;새 창&quot; 메뉴 접기</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>끝내기</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Fluent Terminal 끝내기</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>정책에 의해 활성화되었습니다.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>배경 이미지</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Use acrylic background</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>정말 이 배경 이미지를 삭제하시겠습니까?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>색상</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>밝은 색상</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>링크 복사</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Whole word</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>대소문자 구분</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copy selection or paste</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>스마트 버퍼 사용</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>재시작</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>세션 연결 끊어짐.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>글자 크기 +</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>글자 크기 -</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>글자 크기 초기화</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>탭 재연결하기</value>\n    <comment>Fuzzy</comment>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/nl/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Over</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Achtergrond</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Blauw</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Sluit</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Vraag voor het sluiten van alle vensters</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Vraag voor het sluiten van een tab</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Kleur</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Kleuren in interactieve tab&apos;s</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopiëren</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Toon de tab naam in de titelbalk</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Verander Titel</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Algemeen</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Groen</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Laat de nieuwe output indicator zien op de achtergrond tab&apos;s</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>herstart is nodig om de instellingen toe te passen</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nieuwe tab</value>\n    <comment>MainPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Geen</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Tab&apos;s</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Vensters</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Open nieuwe terminal&apos;s als</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Oranje</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Plakken</value>\n    <comment>XtermTerminalView.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Paars</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Rood</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Herstel naar standaard instellingen</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Uitvoeren bij opstart</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Instelling</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Instellingen</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Laat zien in systeem tray</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>tabbladen weergeven op</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Donker cyaan</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Onderkant</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Bovenkant</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Onderstrepen</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Onderstreep geselecteerde tab</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Over</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Algemeen</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Sneltoetsen</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Muis</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profielen</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Thema&apos;s</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Toevoegen</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumenten</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Achtergrond transparantie</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Knipperende cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>vetgedrukte tekst</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Annuleren</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Controleren op updates...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Controleren voor updates</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Klik op een kleur om te veranderen</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>kloon</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Kleurenpalet</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Gekopieerde tekst notificatie</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopiëren wanneer geselecteerd</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Maak nieuw</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Huidige versie</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Balk</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blok</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Cursor style</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Onder lijn</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Verwijder</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Wijzig geen regeleiden</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Verander</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exporteren</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Letter type</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Letter grootte</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importeren</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Sneltoets</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Toetsenbord sneltoetsen</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Laatste versie</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licentie</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Lijn einde translatie mode</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Lijn einde translatie bij plakken:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Midden muisklik</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Muis</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Context menu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Niks</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Plak</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Maak nieuw</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Vulling</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Naam</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profielen</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Thema</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Release aantekeningen</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Rechter muisklik actie</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Opslaan</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Terug scrollen limiet</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Automatisch verbergen</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Verbergen</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollbar stijl</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Zichtbaar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Activeren</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Instellen als standaard</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell executable locatie</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Tab kleur</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Thema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Auteur</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Naam</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Verander lijn eindes naar CR</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Verander lijn eindes naar CR+LF</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Verander lijn eindes naar LF</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Werkmap</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je tab &quot;{0}&quot; wilt sluiten?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je dit venster wilt sluiten?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je deze sneltoets wilt verwijderen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je dit thema wilt verwijderen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je alle wijzigingen wilt negeren?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je de algemene instellingen wilt terug zetten naar de standaard instellingen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je de keybindings wilt terug zetten naar de standaard instellingen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je de muis instellingen wilt terug zetten naar de standaard instellingen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je dit profiel wilt herstellen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je de standaard terminal instellingen wilt herstellen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Uitgeschakeld door beleid.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Uitgezet door gebruiker. Activeer deze opnieuw in de automatisch starten tab in Taak Beheer.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Verander Titel</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Fout</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>De actie kan niet worden voltooid door de volgende fout:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Inporteren van thema mislukt</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Geen geschikte parser gevonden</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Dit bevestigen</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Annuleren</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Voer de sneltoets nu in</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Oké</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Reset</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Tekst gekopieerd</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Toevoegen</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Verander tab titel</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Legen</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Sluit tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Sneltoetsen</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Verwijder</value>\n    <comment>KeyBindingsView.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Verander</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nieuwe tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nieuw venster</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Volgende tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Plak zonder nieuwe lijnen</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Vorige tab</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Zoeken</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Selecteer alles</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Laat instellingen zien</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 1</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 2</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 3</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 4</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 5</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 6</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 7</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 8</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Ga naar Terminal 9</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Schakel naar volledig scherm</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Schakel naar venster</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nieuwe externe tab</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nieuwe SSH tab</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH Info</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>gebruiker</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>poort</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Identiteit bestand pad</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Blader</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Gebruik Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Geavanceerd</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh poorten:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Sneltoets opslaan</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>De applicatie moet herstarten om deze veranderingen in werking te stellen.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Ongeldige Invoer</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Poort kan geen 0 zijn.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Gebruiker en host zijn verplichte velden.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Gebruikersnaam kan niet leeg zijn.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Host kan niet leeg zijn.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH poort moet groter dan nul zijn.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh port kan geen nul zijn.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh poort reeks is ongeldig.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Nee</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Taal</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Geen</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nieuwe uitvoer</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Gestopt met een fout</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je dit profiel wilt verwijderen?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nieuw SSH venster</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH-profielen</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Tab kleur:</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Gebruik ConPty</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Gebruikersnaam</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Vanuit poort</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>Naar poort</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh poort reeks</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Authenticate</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Instellingen zijn geëxporteerd naar bestand</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Instellingen zijn geïmporteerd van bestand</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identiteit bestaat niet, Identiteit bestand bestaat niet</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Gebruik Windows gebruikersnaam bij het openen van SSH URLs die geen gebruikersnaam hebben</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Standaard Mosh gebruiken bij SSH verbindingen</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Trim rechterkant van gekopieerde lijnen</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Gebruik standaard SSH</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Ongeldig command.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Locatie kan niet leeg zijn.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Demp terminal geluiden</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Voer een commando (b.v. &apos;ssh gebruikersnaam@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Commando</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Niet ondersteund commando:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Commando argumenten missen.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Snel Uitvoeren</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nieuwe snel uitvoeren tab</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Nieuw snel uitvoeren venster</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Snel nieuwe tab</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Bestand niet gevonden:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Ongeldige link.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Plaats tab hier</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Sluit alle tabs naar links</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Sluit de andere tabs</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Sluit alle tabs naar rechts</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duplicaat tab</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplicaat</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Kan niet 2 omgeving variabelen met dezelfde naam hebben.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Kan geen omgeving variabele aanmaken zonder een naam.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Omgeving variabelen</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sluit zoekbalk</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Find volgende</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Find vorige</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Voer zoekterm in</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Zoeken</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Print alleen uitvoer</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Log uitvoer voor debugging</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Woord scheidingstekens</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recent</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Opent standaard profiel in een nieuw tab</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Opens a new SSH or Mosh session in a new tab.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Opent &quot;Snel Laden&quot; dialoog en start een sessie in een nieuwe tab</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Opent het instellingen venster</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Basisinformatie over de applicatie.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Recentelijk geopende sessies.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Start een nieuwe Terminal sessie, gebaseerd op het standaard profiel.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Extern verbinden...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Opent een dialoog voor het starten van een nieuwe SSH of Mosh Terminal sessie.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Snel Laden...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Opent een &quot;Snel Laden&quot; dialoog om een nieuwe Terminal sessie te starten.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nieuw Venster</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nieuwe Tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Start een sessie in een nieuw tab</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Start een sessie in een nieuw venster.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Applicatie menu type</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plat, naar de &quot;Open nieuwe terminals als&quot; instelling</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nieuw Tab&quot; / &quot;Nieuw Venster&quot; trapsgewijs</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Stop</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Stop Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Aangezet doot beleid.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Achtergrond afbeelding</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Gebruik een acryl achtergrond</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Weet je zeker dat je deze achtergrond wilt verwijderen?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Kleuren</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Felle kleuren</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopieer link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Heel woord</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hoofdlettergevoelig</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopieer selectie of plak</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Gebruik slimme buffer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Herstart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sessie verbroken.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Verhoog lettertype grootte</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Verlaag lettertype grootte</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Herstel lettertype grootte</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Tab opnieuw verbinden</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/pl/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>O programie</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Tło</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Niebieski</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zamknij</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Pytaj przed zamknięciem okna</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Pytaj przed zamknięciem kart</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Kolor</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Kolor na nieaktywnych kartach</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopiuj</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Pokaż niestandardowe tytuły kart także w pasku tytułu</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Zmień tytuł</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Ogólne</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Zielony</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Pokaż nowy wskaźnik wyjścia na kartach w tle</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Zrestartuj aplikację, aby zastosować zmiany</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nowa karta</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Żaden</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Karty</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Okna</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Otwórz nowe terminale jako</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Pomarańczowy</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Wklej</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Fioletowy</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Czerwony</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Przywróć do domyślnych</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Uruchamiaj z Windowsem</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Ustawienia</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Ustawienia</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Pokaż w zasobniku systemowym</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Pokaż karty na</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Cyrankowy</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Dół</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Góra</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Podkreślenie</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Podkreślaj wybraną kartę</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>O programie</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Ogólne</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Przypisania klawiszy</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Mysz</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profile</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Motywy</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumenty</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Przezroczystość tła</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Migający kursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Pogrubiony tekst</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Sprawdzanie aktualizacji...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Sprawdź aktualizacje</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Kliknij na kolor by edytować</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Klonuj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta kolorów</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Powiadomienia o skopiowaniu tekstu</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopiuj przy zaznaczaniu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Stwórz nowy</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Obecna wersja</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Pionowy</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Prostokąt</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Styl kursora</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Poziomy</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Usuń</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Nie modyfikuj zakończeń linii</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Edytuj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Eksportuj</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Czcionka</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Rozmiar czcionki</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importuj</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Skróty klawsizowe</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Skróty klawiszowe</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Najnowsza wersja</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licencja</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Tryb tłumaczenia kończącego linię</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Tryb tłumaczenia kończącego linię dla wklejania:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Działanie środkowego klawisza myszy</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mysz</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Menu kontekstowe</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Nic</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Wklej</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Stwórz nowy motyw</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Odstęp wewnętrzny</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profile</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Motyw</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Informacje o wydaniu</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Działanie prawego przycisku</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Zapisz</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limit przewijania</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Autoukrywanie</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Ukryty</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Styl paska nawigacyjnego</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Widoczny</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ustaw jako aktywny</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ustaw jako domyślny</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Lokalizacja powłoki</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Kolor karty</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Motyw:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Konwertuj zakończenia linii na CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Konwertuj zakończenia linii na CR + LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Konwertuj zakończenia linii na LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Katalog roboczy</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Czy chcesz zamknąć &quot;{0}&quot; kartę?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Czy chcesz zamknąć to okno?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Czy chcesz usunąć ten skrót klawiszowy?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Czy chcesz usunąć ten motyw?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Czy chcesz odrzucić wszystkie zmiany?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Czy chcesz przywrócić główne ustawienia?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Czy chcesz przywrócić domyślne skróty klawiszowe?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Czy chcesz przywrócić ustawienia myszy?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Czy na pewno chcesz zresetować ten profil?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Czy na pewno chcesz przywrócić wszystkie ustawienia do domyślnych?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Wyłączone przez zasadę</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Wyłączone przez użytkownika. Aktywuj ponownie w karcie &quot;Uruchamianie&quot; Menedżera Zadań</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Edytuj tytuł</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Błąd</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Ta operacja nie powiodła się z powodu następującego błędu:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Błąd importu motywu</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nie znaleziono odpowiedniego analizatora składni</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Proszę potwierdź</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Podaj swój skrót klawiszowy</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Reset</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Skopiowano tekst</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Zmień tytuł karty</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Wyczyść</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Zamknij kartę</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Skróty klawiszowe</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Usuń</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Edytuj</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nowa karta</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nowe okno</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Następna karta</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Wklej bez nowych linii</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Poprzednia karta</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Szukaj</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Zaznacz wszysto</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Pokaż ustawienia</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Przełącz na terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Włącz pełen ekran</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Przełącz okno</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nowa zdalna karta</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nowa karta SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Informacje o SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>użytkownik</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>adres IP</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Ścieżka do pliku identyfikacyjnego</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Przeglądaj</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Użyj Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Zaawansowane</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Porty Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Zapisz skrót</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Zrestartuj aplikację, aby ustawienia zaczęły obowiązywać</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Niepoprawne wejście</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port nie może być 0</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Użytkownik i adres hosta są niezbędne</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Nazwa użytkownika nie może być pusta</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Adres hosta nie może być pusty</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Port SSH musi być większy od 0</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Port Mosh nie może być 0</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Zakres portów Mosh jest nieprawidłowy</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Tak</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Nie</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Język</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Puste</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nowe wyjście</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zakończono z błędem</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Czy na pewno chcesz usunąć ten profil?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nowe okno SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Profile SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Kolor karty:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Użyj ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Nazwa użytkownika</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Od portu</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>do portu</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Zakres portów Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Uwierzytelnij</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Wyeksportowano ustawienia do pliku</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Zaimportowano ustawienia z pliku</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Plik identyfikacyjny nie istnieje</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Użyj nazwy użytkownika Windows jeśli SSH URL nie ma jej zdefiniowanej</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Używaj Mosh przy połączeniach SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Prawe przycięcie skopiowanych linii</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Używaj domyślnie szybkiego SSH</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Nieznane polecenie</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Ścieżka nie może być pusta</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Wycisz dźwięki terminala</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Wpisz polecenie (np. &apos;ssh użytkownik@ip&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Polecenie</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Niewspierane polecenie</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Brakuje argumentów polecenia</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Szybkie uruchomienie</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nowa karta szybkiego uruchamiania</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Nowe okno szybkiego uruchamiania</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nowa szybka karta</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Nie znaleziono pliku</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Błędny link</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Upuść kartę tutaj</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Zamknij karty po lewej</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Zamknij inne karty</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Zamknij karty po prawej</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duplikuj kartę</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplikuj</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Nie można zdefiniować dwóch zmiennych o tej samej nazwie.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Nie można zdefiniować zmiennej bez jej nazwy</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Zmienne środowiskowe</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zamknij panel wyszukiwania</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Znajdź następne</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Znajdź poprzednie</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Podaj frazę</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Szukaj</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Wyświetlaj tylko czytelne symbole</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Zapisuj dane wyjściowe dla debugowania</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Znaki seperujące słowa</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Ostatnie</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Otwórz domyślny profil w nowej karcie.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Otwórz nową sesję SSH lub Mosh w nowej karcie.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Otwiera okno dialogowe &quot;Szybkie uruchomienie&quot;  i rozpoczyna sesję w nowej karcie.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Otwórz okno ustawień.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Podstawowe informacje o aplikacji.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Niedawno otwarte sesje.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Rozpoczyna nowa sesję terminala bazującą na domyślnym profilu.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Połącz zdalnie...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Otwiera okno dialogowe do rozpoczynania nowej sesji terminala SSH lub Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Szybkie uruchomienie...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Otwiera okno dialogowe &quot;Szybkie uruchomienie&quot; aby rozpocząć nową sesje terminala.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nowe okno</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nowa Karta</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Otwiera sesję w nowej karcie.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Otwiera sesję w nowym oknie.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Typ menu aplikacji</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Płaskie, przestrzegające ustawienia &quot;Otwórz nowe terminale jako&quot;.</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nowa karta&quot; / &quot;Nowe okno&quot; kaskadowo</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Zakończ</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Wyjdź z Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Włączone przez polityke.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Obraz tła</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Użyj akrylowego tła</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Czy na pewno chcesz usunąć ten obraz tła?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Kolory</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Jasne kolory</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Skopiuj łącze</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Całe słowo</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Uwzględnij wielkość liter</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Skopiuj zaznaczenie lub wklej</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Użyj inteligentnego buforowania</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Uruchom ponownie</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sesja rozłączona</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Zwiększ rozmiar czcionki</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Zmniejsz rozmiar czcionki</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Zresetuj rozmiar czcionki</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Przełącz zakładke</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/pt/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Sobre</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Fundo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Azul</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Fechar</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Perguntar antes de fechar as janelas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Perguntar antes de fechar as guias</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Cor</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Cor nas abas inactivas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Mostrar o título da aba personalizada também na barra de título</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Editar Titlo</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Geral</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Mostrar novo indicador de saída nas guias de fundo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Reinicialização necessária para aplicar a configuração</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nova aba</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Nenhum</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Abas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Janelas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Abrir novos terminais como</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Laranja</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Colar</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Roxo</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Vermelho</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Restaurar Padrões</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Executar ao iniciar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Configurações</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Configurações</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Mostrar na bandeja do sistema</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Mostrar abas em</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Cerceta</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Fundo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Topo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Sublinhado</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Sublinhar a aba selecionada</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Sobre</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Geral</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Combinações de teclas</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Rato</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Perfis</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Temas</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumentos</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Opacidade do fundo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Cursor piscando</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Texto em negrito</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Verificando atualizações ...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Verifique se há atualizações</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Clique numa cor para editar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Clonar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta de cores</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Notificação de texto copiado</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Copiar na seleção</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Criar novo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Versão Actual</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Barra</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bloco</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Estilo do cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Sublinhado</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Eliminar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Não modifique os finais de linha</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Editar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exportar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Família de fontes</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Tamanho da fonte</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Atalho de teclado</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Atalho de teclado</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Última versão</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licença</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Modo de tradução de final de linha</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Modo de tradução de final de linha ao colar:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Ação do botão do meio</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Menu contextual</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Nada</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Colar</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Criar novo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Preenchimento</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nome</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Perfis</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Notas de lançamento</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Ação do botão direito</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Guardar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limite de retrocesso</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Esconderijo automático</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Escondido</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Estilo da barra de rolagem</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Visível</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ativar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Conjunto padrão</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Local do executável do shell</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Cor da guia</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nome</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Converter finais de linha em CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Converter finais de linha em CR + LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Converter finais de linha em LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Diretório de trabalho</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja fechar a aba &quot;{0}&quot;?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja fechar esta janela?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja excluir este atalho de teclado?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja excluir este tema?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja descartar todas as alterações?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja restaurar as configurações gerais?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja restaurar os atalhos de teclado padrão?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja restaurar as configurações do mouse?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja restaurar este perfil?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja restaurar as opções de terminal padrão?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Desativado por política.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Desativado pelo usuário. Reative-o na guia Inicializar do Gerenciador de Tarefas.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Editar Título</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>A operação não pode ser concluída devido ao seguinte erro:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>A importação do tema falhou</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nenhum analisador adequado encontrado</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Por favor confirme</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Digite seu atalho de teclado agora</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Redefinir</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Texto copiado</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Alterar o título da guia</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Claro</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Aba fechada</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Combinações de teclas</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Excluir</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Editar</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nova aba</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nova janela</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Próxima aba</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Colar sem novas linhas</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Aba anterior</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Procurar</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Selecionar tudo</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Mostrar configurações</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Mudar para o Terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Mudar para o Terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Mudar para o Terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Mudar para o Terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Mudar para o Terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Mude para o Terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Mudar para o Terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Mude para o Terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Mude para o Terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Alternar para o modo tela cheia</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Alternar janela</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nova aba remota</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nova guia SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Informação SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>utilizador</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>porta</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Caminho do arquivo de identidade</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Navegar</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Use Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avançado</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Portas Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Guardar Atalho</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>A aplicação precisa ser reiniciada para que esta alteração tenha efeito.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Valor Inválido</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>A porta não pode ser 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Usuário e host são campos obrigatórios.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>O nome de usuário não pode estar vazio.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>O host não pode estar vazio.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>A porta SSH deve ser maior que zero.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>A porta Mosh não pode ser zero.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>O intervalo de portas Mosh é inválido.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Língua</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Nenhum</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nova saída</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Saiu com erro</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja eliminar este perfil?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nova janela SSH</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Perfis SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Cor da aba:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Use ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Nome de usuário</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Da porta</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>para a porta</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Faixa de mosh port</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autenticar</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>As configurações foram exportadas para o arquivo</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>As configurações foram importadas do arquivo</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>O ficheiro Identify não existe</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Use o nome de usuário do Windows ao abrir URLs SSH que não especificam um</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Padrão para Mosh para conexões SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Cortar à direita as linhas copiadas</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Use SSH rápido por padrão</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Comando inválido.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>A localização não pode estar vazia.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Silenciar sons do terminal</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Digite um comando (por exemplo, &apos;ssh username @ host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Comando</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Comando não suportado:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Faltam argumentos ao comando.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Inicialização rápida</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nova aba de início rápido</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Nova janela de início rápido</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nova aba rápida</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Arquivo não encontrado:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Link inválido.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Solte a aba aqui</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Fechar abas à esquerda</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Fechar outras abas</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Fechar abas à direita</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duplicar aba</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplicar</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Não é possível definir duas variáveis de ambiente com o mesmo nome.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Não é possível definir uma variável de ambiente sem um nome.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variáveis de ambiente</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Fechar painel de pesquisa</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Encontre o próximo</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Encontrar o anterior</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Insira o termo de pesquisa</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Procurar</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Saída imprimível apenas</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Log de saída para depuração</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Caracteres separadores de palavras</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recente</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Abre o perfil padrão em uma nova guia.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Abre uma nova sessão SSH ou Mosh em uma nova guia.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Abre a caixa de diálogo &quot;Quick Launch&quot; e inicia a sessão em uma nova guia.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Abre a janela de configurações.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Informações básicas sobre o aplicativo.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Sessões abertas recentemente.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Inicia uma nova sessão de terminal com base no perfil padrão.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Conexão Remota ...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Abre uma caixa de diálogo para iniciar uma nova sessão de terminal SSH ou Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Inicialização rápida...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Abre uma caixa de diálogo &quot;Quick Launch&quot; para iniciar uma nova sessão de terminal.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nova janela</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nova aba</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Inicia uma sessão em uma nova guia.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Inicia uma sessão em uma nova janela.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Tipo de menu do aplicativo</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plano, respeitando a configuração &quot;Abrir novos terminais como&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nova aba&quot; / &quot;Nova janela&quot; em cascata</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Sair</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Sair do Terminal Fluent</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Ativado pela política.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Imagem de fundo</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Usar fundo acrílico</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja eliminar esta imagem de fundo?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Cores</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Cores brilhantes</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copiar link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Palavra inteira</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sensível a maiúsculas e minúsculas</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copiar seleção ou colar</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Usar buffer inteligente</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Reiniciar</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sessão desconectada.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Aumentar o tamanho da fonte</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Diminuir o tamanho da fonte</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Redefinir o tamanho da fonte</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconectar aba</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/pt-BR/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Sobre</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Papel de parede</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Azul</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Fechar</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Perguntar antes de fechar janela</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Perguntar antes de fechar aba</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Cor</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Cor em abas inativas</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Exibir título de aba personalizada na barra de titulo</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Editar Título</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Geral</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Exibir alerta de atualização nas abas inativas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Requer reinicialização para aplicar configurações</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nova aba</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Nenhum(a)</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Abas</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Janelas</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Abrir novo terminal como</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Laranja</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Colar</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Roxo</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Vermelho</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Restaurar Padrões</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Iniciar com o sistema</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Configurações</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Configurações</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Exibir na bandeja do sistema</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Exibir abas em</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Verde azulado</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Rodapé</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Topo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Sublinhar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Sublinhar aba selecionada</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Sobre</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Geral</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Associação de teclas</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Perfis</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Temas</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumentos</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Opacidade do plano de fundo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Cursor piscante</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Texto em negrito</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Checando atualizações...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Checar atualizações</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Clicar em uma cor para editar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Clonar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta de cores</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Notificação de texto copiado</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Copiar ao selecionar</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Criar novo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Versão atual</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Barra</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bloco</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Estilo do cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Sublinhar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Deletar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Não modificar finais de linha</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Editar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exportar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Fonte</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Tamanho da fonte</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importar</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Tecla de atalho</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Tecla de atalho</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Última versão</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licença</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Modo de tradução do final de linha</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Modo de tradução do final de linha ao colar:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Ação do botão do meio</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Menu de contexto</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Nada</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Colar</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Criar novo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Margem interna</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nome</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Perfis</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Notas de lançamento</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Ação do botão direito</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Salvar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limite do retroceder</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Esconder automaticamente</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Escondido</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Estilo da barra de rolagem</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Visível</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ativar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Definir Padrão</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Local do Shell executável</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Cor da aba</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nome</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Converter finais de linha para CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Converter finais de linha para CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Converter finais de linha para LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Pasta de trabalho</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja fechar aba &quot;{0}&quot;?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja fechar esta janela?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja deletar esta associação de tecla?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja remover este tema?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja descartar todas as mudanças?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja restaurar as configurações gerais?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja restaurar as associações de tecla padrão?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja restaurar as configurações de mouse?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja restaurar este perfil?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja restaurar as opções padrão do terminal?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Desabilitado por política.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Desabilitado pelo usuário. Por favor, reative na aba Inicializar do Gerenciador de Tarefas.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Editar Título</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Erro</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>A operação não pode ser completada devido ao seguinte erro:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Importação de tema falhou</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nenhum interpretador adequado encontrado</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Por favor, confirme</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Informe a tecla associada agora</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Resetar</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Texto copiado</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Mudar título da aba</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Limpar</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Fechar aba</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Teclas associadas</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Deletar</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Editar</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nova aba</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nova janela</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Próxima aba</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Colar sem novas linhas</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Aba anterior</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Buscar</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Selecionar tudo</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Exibir configurações</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Alternar para Terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Alternar para Tela Cheia</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Alternar janela</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nova aba remota</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nova aba SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Informações SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>usuário</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>host</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>porta</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Caminho do arquivo de identidade</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Navegar</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Usar Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avançado</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Portas Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Salvar Atalho</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>O aplicativo precisar ser reiniciado para que as mudanças tenham efeito.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Entrada Inválida</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Porta não pode ser 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Usuário e host são campos obrigatórios.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Nome de usuário não pode ser vazio.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Host não pode ser vazio.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Porta SSH deve ser maior que zero.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Porta Mosh não pode ser zero.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Intervalo de portas Mosh é inválido.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Nenhum(a)</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nova saída</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Saiu com erro</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja remover este perfil?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nova janela SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Perfis SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Cor da aba:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Usar ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Nome de usuário</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Da porta</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>até porta</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Intervalo de portas Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autenticar</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Configurações foram exportadas para arquivo</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Configurações foram importadas do arquivo</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Arquivo de identificação não existe</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Use nome de usuário do Windows para abrir URLs SSH que não especifiquem um</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Padrão Mosh para conexões SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Linhas copiadas aparadas à direita</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Usar SSH rápido por padrão</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Comando inválido.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Local não pode ser vazio.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Silenciar beeps do terminal</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Entrar comando (e.g. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Comando</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Comando não suportado:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Argumentos do comando ausentes.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Inicialização Rápida</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nova aba de inicialização rápida</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Nova janela de inicialização rápida</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nova aba rápida</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Arquivo não encontrado:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Link inválido.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Solte a aba aqui</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Fechar abas à esquerda</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Fechar outras abas</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Fechar abas à direita</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Duplicar aba</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplicar</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Não é permitido definir duas variáveis de ambiente com o mesmo nome.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Não é permitido definir uma variável de ambiente sem nome.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variáveis de ambiente</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Fechar painel de busca</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Buscar próxima</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Buscar anterior</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Informar o termo da busca</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Busca</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Apenas saída imprimível</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Logar saída para debug</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Caractere separador de palavras</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recente</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Abrir novas abas no perfil padrão.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Abrir novas sessões SSH ou Mosh em nova aba.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Abrir caixa de &quot;Inicialização Rápida&quot; e iniciar sessão em nova aba</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Abrir janela de configurações.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Informações básicas do aplicativo.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Sessões abertas recentemente.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Iniciar novas sessões do terminal baseadas no perfil padrão.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Conexão Remota...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Abrir uma caixa de diálogo para iniciar um novo terminal SSH ou Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Inicialização Rápida</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Abrir caixa de &quot;Inicialização Rápida&quot; para iniciar uma nova sessão de terminal</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nova Janela</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nova Aba</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Iniciar uma sessão em uma nova aba</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Iniciar uma sessão em uma nova janela.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Tipo de menu do aplicativo</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plano, concordando com configuração para &quot;Abrir novos terminais como&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nova Aba&quot;/&quot;Nova Janela&quot; em cascata</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Fechar</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Fechar Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Habilitado pela política</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Imagem de fundo</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Usar fundo acrílico</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Tem certeza que deseja remover esta imagem de fundo?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Cores</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Cores claras</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copiar link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Toda a palavra</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sensível à maiúsculas</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copiar seleção ou colar</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Usar buffer inteligente</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Reiniciar</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sessão desconectada</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Aumentar tamanho da fonte</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Reduzir tamanho da fonte</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Redefinir tamanho da fonte</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconectar aba</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/ro/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Despre</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Fundal</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Albastru</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Închidere</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Întreabă înainte de a închide ferestrele</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Întreabă înainte de a închide filele</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Culoare</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Culoarea filelor inactive</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Copiere</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Se afișează titlul filei personalizate și în bara de titlu</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Editare titlu</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Se afișează un nou indicator de ieșire pe filele din fundal</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Este necesară o relansare pentru a aplica setarea</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Filă nouă</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Nimic</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>File</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Ferestre</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Se deschid noi terminale ca</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Orange</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Lipire</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Violet</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Roșu</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Restabiliți setările implicite</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Rulare la pornire</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Setări</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Setări</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Se afișează în zona de notificare</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Se afișează filele</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Turcoaz</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Jos</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Sus</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Subliniere</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Se subliniază fila selectată</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Despre</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>General</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Legare taste</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profiluri</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Teme</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Adăugare</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumente</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Opacitate fundal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Cursor intermitent</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Text aldin</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Anulare</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Se verifică actualizările...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Verificare pentru actualizări</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Faceți clic pe o culoare pentru a edita</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Clonare</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Gamă de culori</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Notificare text copiat</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Copiere la selectare</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Creare nou</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Versiune actuală</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Bară</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bloc</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Stil cursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Subliniere</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ștergere</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Nu se modifică terminațiile liniei</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Editare</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exportare</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Font</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Dimensiune font</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importare</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Scurtături tastatură</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Scurtături tastatură</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Ultima versiune</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licență</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Mod de traducere a sfârșitului de linie</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Mod de traducere a sfârșitului de linie la lipire:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Acțiunea butonului mijlociu</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mouse</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Meniu contextual</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Nimic</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Lipire</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Nouă</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Umplutură</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Nume</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profiluri</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Temă</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Note de lansare</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Acțiunea butonului drept</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Salvare</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Limită de derulare</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Ascundere automată</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Ascunsă</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Stil bară de derulare</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Visibilă</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Setați activ</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Setați implicit</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Locație executabilă Shell</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Culoare filă</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Temă:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Nume</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Convertiți sfârșitul liniei în CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Convertiți terminațiile liniei în CR + LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Convertiți terminațiile liniei în LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Director de lucru</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Sigur doriți să închideți fila „{0}”?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Sigur doriți să închideți această fereastră?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Sigur doriți să ștergeți această legătură de taste?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Sigur doriți să ștergeți această temă?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Sigur doriți să renunțați la modificări?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Sigur doriți să restaurați setările generale?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Sunteți sigur că doriți să restaurați tastele implicite?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Sigur doriți să restaurați setările mouse-ului?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Sigur doriți să restaurați acest profil?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Sigur doriți să restaurați opțiunile implicite ale terminalului?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Dezactivat de politică.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Dezactivat de utilizator. Reactivați în fila Pornire a Managerului de activități.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Editare titlu</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Eroare</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Operațiunea nu poate fi finalizată din următoarea eroare:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Importarea temei a eșuat</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nu a fost găsit un analizor adecvat</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Vă rugăm să confirmați</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Anulare</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Introduceți legătura de taste acum</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Resetare</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Text copiat</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Adăugare</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Schimbați titlul filei</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Ștergere</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Închideți fila</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Legături de taste</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Ștergere</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Editare</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Filă nouă</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Fereastră nouă</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Fila următoare</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Lipire fără linii noi</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Fila anterioară</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Căutare</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Selectează tot</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Afișare setări</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Treceți la terminalul 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Ecran complet</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Comutați fereastra</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Filă nouă de la distanță</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Filă nouă SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Informații SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>utilizator</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>gazdă</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Calea fișierului de identitate</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Navigare</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Folosiți Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avansat</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Porturi Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Salvați comanda rapidă</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Aplicația trebuie să repornească pentru ca această modificare să intre în vigoare.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Intrare nevalidă</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Portul nu poate fi 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Utilizatorul și gazda sunt câmpuri obligatorii.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Numele de utilizator nu poate fi gol.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Gazda nu poate fi goală.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Portul SSH trebuie să fie mai mare de zero.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Portul Mosh nu poate fi zero.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Gama porturilor Mosh este nevalidă.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Nu</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Limba</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Niciunul</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Ieșire nouă</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>A ieșit cu eroare</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Sigur doriți să ștergeți acest profil?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Fereastră nouă SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Profiluri SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Culoare filă:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Utilizați ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Nume de utilizator</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>De la portul</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>până la portul</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Gama porturilor Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autentificare</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Setările au fost exportate în fișier</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Setările au fost importate din fișier</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Fișierul de identificare nu există</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Utilizați numele de utilizator Windows când deschideți URL-uri SSH care nu specifică unul</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Se folosește Mosh În mod implicit la pentru conexiuni SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Liniile copiate potrivite</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Utilizați SSH rapid în mod implicit</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Comandă greșită.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Locația nu poate fi goală.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Silențios</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Introduceți o comandă (de exemplu, „nume de utilizator ssh@gazdă”)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Comandă</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Comandă neacceptată:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Argumentele comenzii lipsesc.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Lansare rapidă</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Filă nouă de lansare rapidă</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Fereastră nouă de lansare rapidă</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Filă nouă rapidă</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Fișierul nu a fost găsit:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Link greșit.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Lăsați fila aici</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Închideți filele din stânga</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Închideți alte file</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Închideți filele din dreapta</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Filă duplicat</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplicat</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Nu se pot defini două variabile de mediu cu același nume.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Nu se poate defini o variabilă de mediu fără nume.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variabile de mediu</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Închideți panoul de căutare</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Înainte</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Înapoi</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Introduceți fraza de căutare</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Căutare</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Numai imprimabil</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Jurnal pentru depanare</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Caractere de separare a cuvintelor</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Recent</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Deschide profilul implicit într-o nouă filă.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Deschide o nouă sesiune SSH sau Mosh într-o nouă filă.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Deschide dialogul „Lansare rapidă” și începe sesiunea într-o nouă filă.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Deschide fereastra de setări.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Informații de bază despre aplicație.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Sesiuni deschise recent.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Începe o nouă sesiune de terminal bazată pe profilul implicit.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Conectare la distanță ...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Deschide un dialog pentru lansarea unei noi sesiuni de terminale SSH sau Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Lansare rapidă...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Deschide un dialog „Lansare rapidă” pentru a începe o nouă sesiune de terminal.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Fereastră nouă</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Filă nouă</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Lansează o sesiune într-o filă nouă.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Lansează o sesiune într-o fereastră nouă.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Tip meniu aplicație</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plat, respectând setarea „Deschidere terminale noi ca”</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>„Filă nouă”/„Fereastră nouă” în cascadă</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Închidere</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Închideţi Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Activat de politică.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Imagine de fundal</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Folosiți fundal acrilic</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Sigur doriți să ștergeți această imagine de fundal?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Culori</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Culori deschise</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Copiere link</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Întregul cuvânt</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Potrivire litere</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Copiați selecția sau lipiți</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Folosiți tampon inteligent</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Repornire</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sesiunea a fost deconectată.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Măriți dimensiunea fontului</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Micșorați dimensiunea fontului</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Resetați dimensiunea fontului</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconectare filă</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/ru/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>О программе</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Фон</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Синий</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Закрыть</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Подтверждать закрытие окон</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Подтверждать закрытие вкладок</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Цвет</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Цвет неактивных вкладок</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Копировать</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Отображать пользовательский заголовок</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Изменить название</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Основное</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Зелёный</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Отображать активность на фоновых вкладках</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Требуется перезапуск</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Новая вкладка</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Нет</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Вкладки</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Окна</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Открывать новые терминалы как</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Оранжевый</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Вставить</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Фиолетовый</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Красный</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>По умолчанию</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Запускать при старте</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Настройки</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Настройки</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Показывать в трее</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Показывать вкладки</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Бирюзовый</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Внизу</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Вверху</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Подчёркивание</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Подчёркивать активную вкладку</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>О программе</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Основное</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Горячие клавиши</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Мышь</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Профили</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Терминал</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Темы</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Добавить</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Аргументы</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Прозрачность фона</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Мерцающий курсор</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Жирный текст</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Отменить</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Проверяем обновления...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Проверить обновления</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Выберите цвет, чтобы изменить</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Клонировать</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Цветовая палитра</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Уведомление при копировании</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Копировать при выделении</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Создать новый</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Текущая версия</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Вертикальная линия</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Блок</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Стиль курсора</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Подчёркивание</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Удалить</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Не изменять перенос строк</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Изменить</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Экспорт</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Шрифт</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Размер шрифта</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Импорт</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Горячая клавиша</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Горячая клавиша</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Последная версия</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Лицензия</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Режим трансляции конца строки</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Режим трансляции конца строки при вставке</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Действие на среднюю кнопку</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Мышь</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Контекстное меню</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Ничего</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Вставить</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Создать новую</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Отступ</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Название</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Профили</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Тема</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Примечания к выпуску</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Действие на правую кнопку</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Сохранить</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Лимит истории скрола</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Авто-скрытие</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Скрытый</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Стиль скролла</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Видимый</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Сделать Активным</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>По умолчанию</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Местоположение исполняемой оболочки</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Цвет вкладки</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Терминал</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Тема:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Автор</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Название</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Конвертировать переносы строк в CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Конвертировать переносы строк в CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Конвертировать переносы строк в LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Рабочая директория</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Вы действительно хотите закрыть вкладку &quot;{0}&quot;?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Вы действительно хотите закрыть окно?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Вы действительно хотите удалить эту горячую клавишу?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Вы действительно хотите удалить эту тему?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Вы действительно хотите отменить все изменения?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Вы действительно хотите восстановить основные?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Вы действительно хотите восстановить горячие клавиши по умолчанию?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Вы действительно хотите восстановить настройки мыши?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Вы действительно хотите восстановить этот профиль?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Вы действительно хотите восстановить настройки терминала по умолчанию?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Отключено политикой.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Отключено пользователем. Включите во вкладке Автозагрузка в Диспетчере задач</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Изменить заголовок</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Ошибка</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Операция не может быть завершена из-за следующей ошибки:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Импорт темы завершился ошибкой</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Не найдено подходящего парсера</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Пожалуйста, подтвердите</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Отменить</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Введите вашу горячую клавишу</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Сбросить</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Текст скопирован</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Добавить</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Изменить заголовок вкладки</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Очистить</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Закрыть вкладку</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Горячие клавиши</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Удалить</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Изменить</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Новая вкладка</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Новое окно</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Следующая вкладка</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Вставить без переносов строк</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Предыдущая вкладка</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Поиск</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Выделить всё</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Показать настройки</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Переключить на терминал 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Переключить на терминал 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Переключить на терминал 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Переключить на терминал 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Переключить на терминал 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Переключить на терминал 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Переключить на терминал 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Переключить на терминал 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Переключить на терминал 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Переключить во весь экран</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Переключить окно</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Новая удалённая вкладка</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Новая SSH вкладка</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Информация SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>пользователь</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>хост</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>порт</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Путь к файлу идентификации</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Обзор</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Использовать Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Дополнительно</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Порты Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Сохранить быструю клавишу</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Требуется перезапуск для применения изменений.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Неверный ввод</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Порт не может быть 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Пользователь и хост обязательные поля.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Пользователь не может быть пустым.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Хост не может быть пустым.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Порт SSH должен быть больше нуля.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Порт Mosh не может быть равен нулю.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Диапазон Mosh портов недействителен.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Да</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Нет</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Язык</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Ничего</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Новый вывод</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Завершилось с ошибкой</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Вы действительно хотите удалить этот профиль?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Новое SSH окно</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH профили</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Цвет вкладки:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Использовать ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Пользователь</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>От порта</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>До порта</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Диапазон Mosh портов</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Аутентификация</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Настройки экспортированы в файл</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Настройки импортированы из файла</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Файл идентификации не существует</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Использовать имя пользователя Windows в SSH если не указано иное</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>По умолчанию использовать Mosh для SSH соединений</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Копировать без концевых пробелов</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Использовать быстрый SSH по умолчанию</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Неверная команда.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Не может быть пустым</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Заглушить звуковый сигналы</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Введите команду (например, &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Команда</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Неподдерживаемая команда:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Пропущены аргументы команды.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Быстрый запуск</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Новая вкладка быстрого запуска</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Новое окно быстрого запуска</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Новая быстрая вкладка</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Файл не найден:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Неверная ссылка.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Вкладку сюда</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Закрыть вкладки слева</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Закрыть другие вкладки</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Закрыть вкладки справа</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Дублировать вкладку</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Дублировать</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Невозможно определить две переменные среды с тем же именем.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Невозможно определить переменную среды без имени.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Переменные среды</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Закрыть панель поиска</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Найти следующее</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Найти предыдущее</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Введите слово для поиска</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Поиск</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Только печатный вывод</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Вывод журнала для отладки</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Символы разделителя слов</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Недавние</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Открыть профиль &apos;по умолчанию&apos; в новой вкладке.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Открыть новую SSH или Mosh сессию в новой вкладке.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Открыть окно Быстрого запуска и запустить сессию в новой вкладке.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Открыть окно настроек.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Базовая информация о приложении.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Недавно открытые сессии.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Запуск новой сессии с профилем &apos;по умолчанию&apos;.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Удалённое подключение...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Открыть окно для запуска новой SSH или Mosh сессии.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Быстрый запуск...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Открыть окно Быстрого запуска для запуска новой сессии.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Новое окно</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Новая вкладка</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Запуск сессии в новой вкладке.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Запуск сессии в новом окне.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Тип меню приложения</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Плоская, с учетом настройки &quot;Открыть новый терминал как&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>Открывать новые окна и вкладки каскадом.</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Выйти</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Выйти из Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Включено политикой.</value>\n    <comment>There should be something explaining by what &quot;policy&quot; this was enabled? (e.g. &quot;local policy&quot; or smth.)</comment>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Фоновое изображение</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Использовать акриловый фон</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Вы действительно хотите удалить это фоновое изображение?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Цвета</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Яркие цвета</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Скопировать ссылку</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Регулярные выражения</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Целый мир</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Деликатный случай</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Скопировать выделение или вставить</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Использовать буфер</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Перезапустить</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Соединение разорвано.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Увеличить размер шрифта</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Уменьшить размер шрифта</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Сбросить размер шрифта</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Вкладка &quot;Повторное подключение&quot;</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/sl/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>O programu</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Ozadje</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Modra</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zapri</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Vprašaj preden zapreš okna</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Vprašaj preden zapreš zavihek</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Barva</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Barva neaktivnih zavihkov</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopiraj</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Prikaži lasten naslov zavihka tudi v naslovni vrstici</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Uredi naslov</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Splošno (za izboljšave prevoda piši kocuvan@gmail.com)</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Zelena</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Prikaži nov izhodni indikator na zavihkih v ozadju</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Za uveljavitev nastavitev je potreben ponovni zagon</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nov zavihek</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Brez</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Zavihkih</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Oknih</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Nove terminale odpri v</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Oranžna</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Prilepi</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Vijolična</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Rdeča</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Obnovi privzeto</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Avtomatsko zaženi</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Nastavitve</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Nastavitve</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Prikaži v sistemski vrstici</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Prikaži zavihke</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Zeleno-modra</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Spodaj</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Zgoraj</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Podčrtaj</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Podčrtaj izbrani zavihek</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>O programu</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Splošno</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Bližnjice</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Miška</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Teme</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Parametri</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Prosojnost ozadja</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Utripajoči kazalček</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Odebeljeno besedilo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Prekliči</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Preverjam posodobitve</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Preveri posodobitve</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Za urejanje klikni barvo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kopiraj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Barvna paleta</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Kopirano obvestilo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Prekopiraj ob izbiri</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Trenutna verzija</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Pokončna črta</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blok</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Stil kazalčka</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Podčrtano</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Izbriši</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Ne spreminjaj konca vrstic</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Uredi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Izvozi</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Pisava</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Velikost pisave</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Uvozi</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Bližnjica</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Bližnjica</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Najnovejša različica</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licenca</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Način pretvarjanja zaključkov vrstic</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Način pretvarjanja zaključkov vrstic ob lepljenju:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Opravilo sredinskega gumba</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Miška</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Priročni meni</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Brez</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Prilepi</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Ustvari novo</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Zamik</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Ime</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Opombe ob izdaji</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Opravilo desnega gumba</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Shrani</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Omejitev zgodovine</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Samodejno skrivanje</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Skrito</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Stil drsnika</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Vidno</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aktiviraj</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Nastavi privzeto</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Lokacija programa ukazne vrstice</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Barva zavihka</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Avtor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Ime</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Pretvori zaključke vrstic v CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Pretvori zaključke vrstic v CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Pretvori zaključke vrstic v LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Delovna mapa</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite zapreti zavihek &quot;{0}&quot;?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite zapreti to okno?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite izbrisati to bližnjico?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite izbrisati to temo?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Ste prepričani za želite zavreči spremembe?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite obnoviti tovarniške nastavitve?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite obnoviti preivzete bližnjice?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite obnoviti nastavitve miške?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite obnoviti ta profil?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite obnoviti privzete lastnosti terminala?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Onemogočeno zaradi sistemskega pravila.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Uporabniško onemogočeno. Ponovno aktivirajte v zavihku Zagon v nastavitvah Aplikacij.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Uredi naslov</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Napaka</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Opravilo se ne more uspešno zaključiti zaradi naslednje napake:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Napaka pri uvozu teme</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Manjka ustrezen razčlenjevalnik (parser)</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Prosim potrdite</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Prekini</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Vstavite želeno bližnjico</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Ponastavi</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Besedilo kopirano</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Spremeni naslov zavihka</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Počisti</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Zapri zavihek</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Bližnjice</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Briši</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Uredi</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nov zavihek</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Novo okno</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Naslednji zavihek</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Prilepi brez novih vrstic</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Prejšnji zavihek</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Išči</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Izberi vse</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Prikaži nastavitve</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Preklopi na terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Preklopi celozaslonski način</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Preklopi okno</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nov oddaljeni zavihek</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nov SSH zavihek</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH Info</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>uporabnik</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>gostitelj</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>vrata</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Pot do zasebnega ključa</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Prebrskaj</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Uporabi Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Napredno</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh vrata:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Shrani bližnjico</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Za uveljavitev te spremembe se mora program ponovno zagnati.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Neveljavni vnos</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Vrata ne morejo biti 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Uporabnik in gostitelj sta obvezni polji.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Uporabniško ime ne more biti prazno.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Gostitelj ne sme biti prazen.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Vrata SSH morajo biti večja od 0.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh vrata ne morejo biti 0</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Napačen razpon vrat Mosh.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Jezik</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Brez</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nov izhod</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zaključeno z napako</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite izbrisati ta profil</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Novo okno SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profili</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Barva zavihka:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Uporabi ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Up. ime</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Od</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>do</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh razpon vrat</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Preverjanje pristnosti</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Nastavitve so bile izvožene v datoteko</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Nastavitve so bile uvožene iz datoteke</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Zasebni ključ ne obstaja</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Uporabi uporabniško ime Windows ko odpiraš SSH povezavo, ki nima določenega uporabniškega imena</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Privzeto uporabi Mosh za SSH povezave</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Kopirane vrstice poreži desno</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Privzeto uporabi hitri SSH način</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Napačen ukaz.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Lokacija ne more biti prazna.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Utišaj zvoke terminala</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Vnesi ukaz (npr. &apos;ssh uporabniško_ime@gostitelj&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Ukaz</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Nepodprt ukaz:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Manjkajo parametri ukaza.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Hitri zagon</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Novi zavihek hitrega zagona</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Novo okno hitrega zagona</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nov hitri zavihek</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Datoteka ni bila najdena:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Napačna povezava:</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Tukaj spustite zavihek</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Zapri zavihke na levi</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Zapri ostale zavihke</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Zapri zavihke na desni</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Podvoji zavihek</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Podvoji</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Dveh spremenljivk okolja z enakim imenom ni mogoče definirati</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Ime spremenljivke je obvezno</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Spremenljivke okolja</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zapri iskalno ploščo</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Najdi naslednjega</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Najdi prejšnjega</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Vnesi iskani pojem</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Išči</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Izhod samo za tiskanje</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Zapiši izhodni dnevnik za odpravljanje napak</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Znaki za ločevanje besed</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Nedavno</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Odpre privzeti profil v novem zavihku.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Odpre novo SSH ali Mosh sejo v novem zavihku.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Odpre dialog &quot;Hitri zagon&quot; in začne sejo v novem zavihku.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Opre okno za nastavitve.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Osnovne informacije o programu.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Nedavno odprte seje.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Začne novo terminalsko sejo na podlagi privzetega profila.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Oddaljena povezava...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Odpre dialog za začetek nove seje SSH ali Mosh terminala.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Hitri zagon...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Odpre dialog &quot;Hitri zagon&quot; za začetek nove terminalske seje</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Novo okno</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nov zavihek</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Zagon seje v novem zavihku.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Zagon seje v novem oknu.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Vrsta menija aplikacije</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Enonivojsko, upoštevaj nastavitev &quot;Odpri nov terminal kot&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>Kaskadno, &quot;Nov zavihek&quot; / &quot;Novo okno&quot;</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Izhod</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Zapusti Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Omogočeno zaradi sistemskega pravila.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Slika ozadja</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Uporabite akrilno ozadje</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Ste prepričani da želite izbrisati to sliko ozadja?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Barve</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Svetle barve</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopiraj povezavo</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Celotna beseda</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Razlikovanje velikih in malih črk</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopiraj izbrano ali prilepi</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Uporabi &quot;smart buffer&quot;</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Ponovno zaženi</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Seja je prekinjena.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Povečaj velikost pisave</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Zmanjšaj velikost pisave</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Ponastavi velikost pisave</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Ponovno vspostavi zavihek</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/sq/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Rreth</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Sfondi</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Blu</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Mbylle</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Pyesni para se të mbyllni dritaret</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Pyesni përpara se të mbyllni skedat</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Ngjyrë</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Ngjyra në skedat joaktive</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopjoni</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Shfaq titullin e personalizuar të skedës edhe në shiritin e titullit</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Redakto Titullin</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Gjeneral</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Jeshile</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Trego treguesin e ri të daljes në skedat e sfondit</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Kërkohet rinisja për të aplikuar cilësimin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Tab i ri</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Asnje</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Skedat</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Dritaret</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Hapni terminale të reja si</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Portokalli</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Ngjit</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Vjollcë</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>E kuqe</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Rikthe Parazgjedhjet</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Vraponi në fillimin</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Cilësimet</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Cilësimet</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Trego në sirtarin e sistemit</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Shfaq skedat e ndezura</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Luledele</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Fund</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Top</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Nënvizo</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Nënvizo skedën e zgjedhur</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Rreth</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Gjeneral</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Lidhëse çelësash</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Miu</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profilet</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Temat</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Shto</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumente</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Perde e sfondit</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Kurse kursorin</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Teksti i trashë</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Anulo</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Po kontrollon për azhurnime ...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Kontrolloni për azhurnime</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Klikoni në një ngjyrë për të ndryshuar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kloni</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta e ngjyrave</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Njoftimi i kopjuar me tekst</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopjoni në zgjedh</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Krijoni të reja</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Versioni aktual</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Lokal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bllokoj</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Stili i kursorit</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Nënvizo</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Fshij</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Mos modifiko mbaresat e rreshtit</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Redakto</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Eksporto</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Familja e shkronjave</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Përmasa e germave</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importit</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Shkurtorja e tastierës</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Shkurtorja e tastierës</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Versioni i fundit</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Liçensë</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Modaliteti i përkthimit që përfundon rreshtin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Modaliteti i përkthimit që përfundon rreshtin në ngjitje:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Veprimi i butonit të mesëm</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Miu</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Menyja e kontekstit</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Asgjë</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Ngjit</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Krijoni të reja</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Mbushje</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Emrin</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profilet</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Lëshoni shënime</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Veprimi i butonit të djathtë</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ruaj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Kufiri i kthimit</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Fshehja automatike</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>I fshehur</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Stili i shiritit lëvizës</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>E dukshme</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Vendosni Aktiv</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Vendos Default</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Vendndodhja e ekzekutueshme e Shellit</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Ngjyra e skedës</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Emrin</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Shndërroni mbaresat e linjës në CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Shndërroni mbaresat e linjës në CR + LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Shndërroni mbaresat e linjës në LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Drejtoria e punës</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Je i sigurt që dëshiron të mbyllësh skedën &quot;{0}&quot;?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Je i sigurt që dëshiron ta mbyllësh këtë dritare?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Je i sigurt që dëshiron ta fshish këtë lidhëse çelësash?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Je i sigurt që dëshiron ta fshish këtë temë?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Jeni i sigurt që doni të hidhni të gjitha ndryshimet?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>A jeni i sigurt që dëshironi të riktheni cilësimet e përgjithshme?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Jeni i sigurt që dëshironi të riktheni lidhjet e paracaktuara të çelësave?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>A jeni i sigurt që doni të rivendosni cilësimet e miut?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Jeni i sigurt që doni ta riktheni këtë profil?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Jeni i sigurt që dëshironi të riktheni opsionet e paracaktuara të terminalit?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Paaftësi nga politika.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Paaftësi nga përdoruesi. Ju lutemi riaktivizoni atë në skedën Startup të Task Manager.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Redakto Titullin</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Gabim</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Operacioni nuk mund të përfundojë për shkak të gabimit të mëposhtëm:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Tema e importit dështoi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Nuk u gjet asnjë analizues i përshtatshëm</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Ju lutemi konfirmoni</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Anulo</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Futni lidhjen tuaj tani</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Ne rregull</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Rivendos</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Teksti u kopjua</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Shto</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Ndrysho titullin e skedës</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Qartë</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Mbylle skedën</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Lidhëse çelësash</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Fshij</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Redakto</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Tab i ri</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Dritare e re</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Skeda tjetër</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Ngjit pa linja të reja</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Skeda e mëparshme</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Kërko</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Selektoj të gjitha</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Shfaq cilësimet</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Kaloni në Terminalin 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Aktivizo ekranin e plotë</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Ndërro dritaren</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Skedë e re e largët</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Skeda e re SSH</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH Info</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>përdorues</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>mikpritës</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Rruga e skedarit të identitetit</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Shfletoni</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Përdorni Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avancuar</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Portet Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Ruaj shkurtoren</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Aplikimi duhet të riniset që ky ndryshim të hyjë në fuqi.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Input i pavlefshëm</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Porti nuk mund të jetë 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Përdoruesi dhe hosti janë fusha të detyrueshme.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Emri i përdoruesit nuk mund të jetë bosh.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Pritësi nuk mund të jetë bosh.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Porta SSH duhet të jetë më e madhe se zero.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Porta Mosh nuk mund të jetë zero.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Diapazoni i portit Mosh është i pavlefshëm.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>po</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Jo</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Gjuhe</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Asnje</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Prodhim i ri</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Dalur me gabim</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Je i sigurt që dëshiron ta fshish këtë profil?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Dritare e re SSH</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Profilet e SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Ngjyra e skedës:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Përdorni ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Emri i përdoruesit</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Nga porti</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>në port</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Diapazoni i portit Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Vërtetoj</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Cilësimet u eksportuan për të skeduar</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Cilësimet u importuan nga skedari</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identifikoni skedarin nuk ekziston</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Përdorni emrin e përdoruesit të Windows kur hapni URL-të SSH që nuk specifikojnë një</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Default në Mosh për lidhjet SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Prerjet e djathta të kopjuara</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Përdorni SSH të shpejtë si parazgjedhje</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Komandë e pavlefshme.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Vendndodhja nuk mund të jetë bosh.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Bip-bileta terminale të heshtura</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Vendosni një komandë (p.sh. &apos;ssh emrin e përdoruesit @ host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Komanda</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Komanda e pambështetur:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Argumentet e komandës mungojnë.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Lëshimi i shpejtë</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Skedë e re e nisjes së shpejtë</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Dritare e re e lëshimit të shpejtë</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Skedë e re e shpejtë</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Dosja nuk u gjet:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Lidhje e pavlefshme.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Hidhni skedën këtu</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Mbyllni skedat në të majtë</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Mbyllni skedat e tjera</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Mbyllni skedat në të djathtë</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Skeda e kopjuar</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Dublikatë</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Nuk mund të përcaktojë dy variabla të mjedisit me të njëjtin emër.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Nuk mund të përcaktojë një ndryshore të mjedisit pa një emër.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Variablat e mjedisit</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mbyll panelin e kërkimit</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Gjeni tjetër</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Gjeni të mëparshmen</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Vendos termin e kërkimit</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Kërko</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Vetëm prodhimi i printueshëm</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Regjistro prodhimin për korrigjimin e gabimeve</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Karakteret ndarëse të fjalëve</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Kohët e fundit</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Hap profilin e paracaktuar në një skedë të re.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Hap një sesion të ri SSH ose Mosh në një skedë të re.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Hap dialogun &quot;Nisja e Shpejtë&quot; dhe fillon seancën në një skedë të re.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Hap dritaren e cilësimeve.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Informacion bazë për aplikacionin.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Seancat e hapura së fundmi.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Fillon sesionin e ri të terminalit bazuar në profilin e paracaktuar.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Lidhu në distancë ...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Hap një dialog për fillimin e një sesioni të ri terminali SSH ose Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Nisja e shpejtë ...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Hap dialogun &quot;Nisja e Shpejtë&quot; për fillimin e një seance të re terminali.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Dritare e Re</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Tab i ri</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Nis një sesion në një skedë të re.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Nis një sesion në një dritare të re.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Lloji i menusë së aplikacionit</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Flat, duke nderuar cilësimin &quot;Hapni terminalet e reja si&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;New Tab&quot; / &quot;New Window&quot; duke u kaskaduar</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Lini</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Dal terminalin e rrjedhshëm</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Aktivizuar nga politika.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Imazhi i sfondit</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Përdorni sfond akrilik</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Je i sigurt që dëshiron ta fshish këtë imazh në sfond?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Ngjyrat</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Ngjyra të ndritshme</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopjoni lidhjen</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Fjala e tërë</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Të ndjeshme ndaj çështjeve</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopjoni zgjedhjen ose ngjitni</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Përdorni tampon inteligjent</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Rifillo, fillo përsëri</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Seanca e shkëputur.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Rritni madhësinë e shkronjave</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Zvogëlo madhësinë e shkronjave</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Rivendosni madhësinë e shkronjave</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Rilidhni skedën</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/sr-Latn/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>O programu</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Pozadina</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Plava</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zatvori</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Pitaj pre zatvaranja prozora</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Pitaj pre zatvaranja kartica</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Boja</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Boja neaktivnih kartica</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopiraj</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Prikaži i u naslovu prilagođen naziv kartice</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Izmeni naziv</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Opšte</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Zeleno</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Prikaži indikator novog izlaza na pozadinskim karticama</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Neophodno je ponovno pokretanje za primenu podešavanja</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Ništa</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Kartice</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Prozori</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Otvori nove terminale kao</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Narandžasto</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Nalepi</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Ljubičasto</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Crveno</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Vrati predefinisano</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Pokreni po pokretanju računara</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Podešavanja</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Podešavanja</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Prikaži u treju</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Prikaži kartice na</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Tirkizna</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Dnu</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Vrhu</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Podvučeno</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Podvuci izabranu karticu</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>O programu</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Opšte</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Prečice</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Miš</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Teme</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argumenti</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Prozirnost pozadine</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Trepćući kursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Podebljan tekst</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Poništi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Provera nadogradnji...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Proveri nadogradnje</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Klikni na boju za izmenu</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kloniraj</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Paleta boja</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Obaveštenje o kopiranju teksta</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopiraj pri markiranju</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Napravi novi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Trenutna verzija</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Linija</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blok</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Stil kursora</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Podvučeno</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Obriši</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Ne menjaj krajeve linije</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Izmeni</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Izvezi</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Font</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Veličina fonta</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Uvezi</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Prečica na tastaturi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Prečica na tastaturi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Poslednja vezija</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licenca</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Tip prevođenja završetka linije</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Tip prevođenja završetka linije pri nalepljivanju:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Akcija srednjeg tastera</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Miš</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Pomoćni meni</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Ništa</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Nalepi</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Napravi novu</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Prostor od ivice</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Naziv</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profili</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Beleške o izdanju</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Akcija desnog dugmeta</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Snimi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Ograničenje skrola</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Automatsko skrivanje</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Sakriven</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Stil linije skrola</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Vidljiv</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Podesi kao aktivan</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Podesi podrazumevano</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Lokacija izvršne datoteke</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Boja kartice</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Autor</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Naziv</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Konvertuj završetke linija u CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Konvertuj završetke linija u CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Konvertuj završetke linija u LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Izvršni folder</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Da li zaista želite da zatvorite &quot;{0}&quot; karticu?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Da li zaista želite da zatvorite ovaj prozor?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Da li zaista želite da obrišete ovu prečicu?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Da li zaista želite da obrišete ovu temu?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Da li zaista želite da odbacite sve izmene?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Da li zaista želite da vratite opšta podešavanja?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Da li zaista želite da vratite predefinisane prečice?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Da li zaista želite da vratite podešavanja miša?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Da li zaista želite da vratite ovaj profil?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Da li zaista želite da vratite predefinisana podešavanja terminala?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Onemogućeno polisom.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Onemogućeno od strane korisnika. Reaktivirajte u kartici pokretanja u Upravljaču zadataka.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Izmeni naslov</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Greška</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Operacija ne može biti završena zbog sledeće greške:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Uvoz teme neuspešan</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Odgovarajući parser nije pronađen</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Molim potvrdi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Poništi</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Unesite svoju kombinaciju tastera</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>U redu</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Resetuj</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Tekst kopiran</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Promeni naslov kartice</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Očisti</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Zatvori karticu</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Prečice tastature</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Obriši</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Izmeni</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Novi prozor</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Sledeća kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Nalepi bez novih redova</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Prethodna kartica</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Pretraži</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Izaberi sve</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Prikaži podešavanja</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Pređi na terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Pređi na terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Pređi na terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Pređi na terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Pređi na terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Pređi na terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Pređi na terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Pređi na terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Pređi na terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Pun ekran</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Promeni prozor</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Nova daljinska kartica</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Nova SSH kartica</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH informacije</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>korisnik</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>domaćin</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Putanja datoteke identiteta</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Izaberi</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Koristi Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Napredno</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh portovi:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Snimi prečicu</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Aplikacija mora da se restartuje da bi ovo imalo efekta.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Neispravan unos</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port ne može biti 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Korisnik i domaćin su obavezna polja.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Korisničko ime ne može biti prazno.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Domaćin ne može biti prazno.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH port mora biti veći od nule.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh port ne može biti nula.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh opseg porta je neispravan.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Jezik</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Ništa</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Novi izlaz</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Izlazak sa greškom</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Da li zaista želite da obrišete ovaj profil?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Novi SSH prozor</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profili</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Boja kartice:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Koristi ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Korisničko ime</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Od porta</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>do porta</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh opseg porta</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autentifikuj</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Podešavanja su izvezena u datoteku</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Podešavanja su uvezena iz datoteke</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Datoteka identiteta ne postoji</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Koristi Windows korisničko ime pri otvaranju SSH adresa koje ga ne navedu</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Predefinisano na Mosh za SSH konekcije</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Skrati desno kopirane redove</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Predefinisano koristi brzi SSH </value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Neispravna komanda</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Lokacija ne može biti prazna.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Isključi zvuke terminala</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Unesite komandu (npr. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Komanda</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Nepodržana komanda:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Nedostaju argumenti komande.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Brzo pokretanje</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Nova kartica brzog pokretanja</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Novi prozor brzog pokretanja</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Nova brza kartica</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Datoteka nije pronađena:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Neispravna veza.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Ovde ispusti karticu</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Zatvori kartice levo</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Zatvori ostale kartice</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Zatvori kartice desno</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Dupliraj karticu</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Dupliraj</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Nemoguće je definisati dve promenljive okruženja sa istim imenom.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Nemoguće je definisati promenljivu okruženja bez imena.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Promenljive okruženja</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zatvori panel pretrage</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nađi sledeće</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Nađi prethodno</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Unesi termin pretrage</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Pretraži</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Samo štampajući izlaz</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Zapiši izlaz za ispravljanje</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Karakteri odvajanja reči</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Skorašnje</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Otvara predefinisani profil u novoj kartici.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Otvara novu SSH ili Mosh sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Otvara &quot;Brzo pokretanje&quot; prozor i pokreće sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Otvara prozor podešavanja.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Osnovne informacije o programu.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Nedavno otvarane sesije.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Pokreće novu sesiju terminala prema predefinisanom profilu.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Daljinsko povezivanje...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Otvara prozor za pokretanje nove SSH ili Mosh sesije terminalom.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Brzo pokretanje...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Otvara &quot;Brzo pokretanje&quot; prozor za pokretanje nove sesije terminalom.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Novi prozor</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Nova kartica</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Pokreće sesiju u novoj kartici.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Pokreće sesiju u novom prozoru.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Vrsta menija aplikacije</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Plutajuće, poštujući &quot;Otvori nove terminale kao&quot; podešavanje</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Nova kartica&quot; / &quot;Novi prozor&quot; kaskadno</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Izlaz</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Izlaz iz Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Omogućeno polisom.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Slika pozadine</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Koristi akrilnu pozadinu</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Da li zaista želite da obrišete ovu sliku pozadine?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Boje</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Jarke boje</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopiraj vezu</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Cele reči</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Kapitalizacija je bitna</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopiraj markirano ili nalepi</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Koristi pametni bafer</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Restartuj</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sesija je prekinuta.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Povećaj veličinu fonta</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Smanji veličinu fonta</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Resetuj veličinu fonta</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Ponovo poveži karticu</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/sr-cyrl/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>О програму</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Позадина</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Плава</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Затвори</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Питај пре затварања прозора</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Питај пре затварања картица</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Боја</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Боја неактивних картица</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Копирај</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Прикажи и у наслову прилагођен назив картице</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Измени назив</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Опште</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Зелено</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Прикажи индикатор новог излаза на позадинским картицама</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Неопходно је поновно покретање за примену подешавања</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Нова картица</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Ништа</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Картице</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Прозори</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Отвори нове терминале као</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Наранџасто</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Налепи</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Љубичасто</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Црвено</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Врати предефинисано</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Покрени по покретању рачунара</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Подешавања</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Подешавања</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Прикажи у треју</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Прикажи картице на</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Тиркизна</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Дну</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Врху</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Подвучено</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Подвуци изабрану картицу</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>О програму</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Опште</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Пречице</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Миш</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Профили</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Терминал</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Теме</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Додај</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Аргументи</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Прозирност позадине</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Блинкајући курсор</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Подебљан текст</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Поништи</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Провера надоградњи...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Провери надоградње</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Кликни на боју за измену</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Клонирај</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Палета боја</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Обавештење о копирању текста</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Копирај при маркирању</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Направи нови</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Тренутна верзија</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Линија</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Блок</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Стил курсора</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Подвучено</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Обриши</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Не мењај крајеве линије</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Измени</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Извези</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Фонт</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Величина фонта</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Увези</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Пречица на тастатури</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Пречица на тастатури</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Последња везија</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Лиценца</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Тип превођења завршетка линије</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Тип превођења завршетка линије при налепљивању:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Акција средњег тастера</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Миш</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Помоћни мени</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Ништа</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Налепи</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Направи нову</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Простор од ивице</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Назив</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Профили</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Тема</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Белешке о издању</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Акција десног дугмета</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Сними</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Ограничење скрола</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Аутоматско скривање</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Сакривен</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Стил линије скрола</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Видљив</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Подеси као активан</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Подеси подразумевано</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Локација извршне датотеке</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Боја картице</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Терминал</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Тема:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Аутор</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Назив</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Конвертуј завршетке линија у CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Конвертуј завршетке линија у CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Конвертуј завршетке линија у LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Извршни фолдер</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да затвориш &quot;{0}&quot; картицу?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да затвориш овај прозор?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да обришеш ову пречицу?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да обришеш ову тему?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да одбациш све измене?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да вратиш општа подешавања?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да вратиш предефинисане пречице?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да вратиш подешавања миша?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да вратиш овај профил?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да вратиш предефинисана подешавања терминала?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Онемогућено полисом.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Онемогућено од стране корисника. Реактивирај у картици покретања у Управљачу задатака.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Измени наслов</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Грешка</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Операција не може бити завршена због следеће грешке:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Увез теме неуспешан</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Одговарајући парсер није пронађен</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Молим потврди</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Поништи</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Унеси твоју комбинацију тастера</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>У реду</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Ресетуј</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Текст копиран</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Додај</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Промени наслов картице</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Очисти</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Затвори картицу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Пречице тастатуре</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Обриши</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Измени</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Нова картица</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Нови прозор</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Следећа картица</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Налепи без нових редова</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Претходна картица</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Претражи</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Изабери све</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Прикажи подешавања</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Пређи на терминал 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Пређи на терминал 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Пређи на терминал 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Пређи на терминал 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Пређи на терминал 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Пређи на терминал 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Пређи на терминал 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Пређи на терминал 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Пређи на терминал 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Пун екран</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Промени прозор</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Нова даљинска картица</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Нова SSH картица</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH информације</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>корисник</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>домаћин</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>порт</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Путања датотеке идентитета</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Изабери</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Користи Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Напредно</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh портови:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Сними пречицу</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Апликација мора да се рестартује да би ово имало ефекта.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Неисправан унос</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Порт не може бити 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Корисник и домаћин су обавезна поља.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Корисничко име не може бити празно.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Домаћин не може бити празно.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH порт мора бити већи од нуле.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh порт не може бити нула.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh опсег порта је неисправан.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Да</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Не</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Језик</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Ништа</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Нови излаз</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Излазак са грешком</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да обришеш овај профил?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Нови SSH прозор</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH профили</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Боја картице:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Користи ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Корисничко име</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Од порта</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>до порта</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh опсег порта</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Аутентификуј</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Подешавања су извезена у датотеку</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Подешавања су увезена из датотеке</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Датотека идентитета не постоји</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Користи Windows корисничко име при отварању SSH адреса које га не наведу</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Предефинисано на Mosh за SSH конекције</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Скрати десно копиране редове</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Предефинисано користи брзи SSH </value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Неисправна команда</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Локација не може бити празна.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Искључи звуке терминала</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Унеси команду (нпр. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Команда</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Неподржана команда:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Недостају аргументи команде.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Брзо покретање</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Нова картица брзог покретања</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Нови прозор брзог покретања</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Нова брза картица</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Датотека није пронађена:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Неисправна веза.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Овде испусти картицу</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Затвори картице лево</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Затвори остале картице</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Затвори картице десно</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Дуплирај картицу</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Дуплирај</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Немогуће је дефинисати две променљиве окружења са истим именом.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Немогуће је дефинисати променљиву окружења без имена.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Променљиве окружења</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Затвори панел претраге</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Нађи следеће</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Нађи претходно</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Унеси термин претраге</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Претражи</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Само штампајући излаз</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Запиши излаз за исправљање</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Карактери одвајања речи</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Скорашње</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Отвара предефинисани профил у новој картици.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Отвара нову SSH или Mosh сесију у новој картици.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Отвара &quot;Брзо покретање&quot; прозор и покреће сесију у новој картици.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Отвара прозор подешавања.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Основне информације о програму.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Недавно отваране сесије.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Покреће нову сесију терминала према предефинисаном профилу.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Даљинско повезивање...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Отвара прозор за покретање нове SSH или Mosh сесије терминалом.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Брзо покретање...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Отвара &quot;Брзо покретање&quot; прозор за покретање нове сесије терминалом.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Нови прозор</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Нова картица</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Покреће сесију у новој картици.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Покреће сесију у новом прозору.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Врста менија апликације</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Плутајуће, поштујући &quot;Отвори нове терминале као&quot; подешавање</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Нова картица&quot; / &quot;Нови прозор&quot; каскадно</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Излаз</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Излаз из Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Омогућено полисом.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Слика позадине</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Користи акрилну позадину</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Да ли заиста желиш да обришеш ову слику позадине?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Боје</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Јарке боје</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Копирај везу</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Целе речи</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Капитализација је битна</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Копирај маркирано или налепи</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Користи паметни бафер</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Рестартуј</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Сесија је прекинута.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Повећај величину фонта</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Смањи величину фонта</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Ресетуј величину фонта</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Поново повежи картицу</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/sv/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Om</value>\n    <comment>MainPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Bakgrund</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Blå</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Stänga</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Fråga innan du stänger fönstret</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Fråga innan du stänger fliken</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Färger</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Färg på inaktiva flikar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopia</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Visa anpassad flikrubrik även i titelraden</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Redigera titel</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Allmän</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Grön</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Visa ny utmatningsindikator på bakgrundsflikar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Omstart krävs för att tillämpa inställningar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Ny flik</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Ingen</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Flikar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Windows</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Öppna nya terminaler som</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Orange</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Klistra in</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Lila</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Röd</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Återställ standardinställningar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Kör vid start</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Inställningar</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Inställningar</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Visa i systemfältet</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Visa flikar på</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Kricka</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Botten</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Topp</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Understryka</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Understryk den valda fliken</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Om</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Allmän</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Nyckelbindningar</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Mus</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profiler</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Teman</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Lägg till</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argument</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Bakgrunds opacitet</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Blinkande markör</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Fettext</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Avbryt</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Kollar efter uppdateringar...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Sök efter uppdateringar</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Klicka på en färg för att redigera</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Klona</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Färgpalett</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Textkopierad avisering</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Kopiera på välj</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Skapa ny</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Nuvarande version</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Bar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Blockera</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Markörstil</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Understrykning</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Radera</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Ändra inte radslut</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Redigera</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Exportera</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Typsnittsfamilj</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Textstorlek</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Importera</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Tangentbordsgenväg</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Tangentbordsgenväg</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Senaste versionen</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Licens</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Översättningsläge för radslut</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Översättningsläge för radslut vid klistra in:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Mittknappsåtgärd</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Mus</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Innehållsmeny</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Ingen</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Klistra in</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Skapa ny</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Stoppning</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Namn</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profiler</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Mjukvaruversioner</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Höger knappåtgärd</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Spara</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Återrullningsgräns</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Dölj automatiskt</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Dold</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollbar-stil</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Synlig</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aktivera</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Sätta som normalt</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell körbar plats</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Flikfärg</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Författare</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Namn</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Konvertera radslut till CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Konvertera radslut till CR + LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Konvertera radslut till LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Arbetskatalog</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill stänga fliken &quot;{0}&quot;?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill stänga det här fönstret?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill ta bort den här nyckelbindningen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill radera detta tema?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill kassera alla ändringar?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill återställa de allmänna inställningarna?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill återställa standardnyckelbindningarna?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill återställa musinställningarna?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill återställa den här profilen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill återställa standardterminalalternativen?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Inaktiverad av policyn.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Inaktiverad av användaren. Aktivera den igen på fliken Startup i Aktivitetshanteraren.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Redigera rubrik</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Fel</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Åtgärden kan inte slutföras på grund av följande fel:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Importtema misslyckades</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Ingen lämplig parser hittades</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Vänligen bekräfta</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Avbryt</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Ange din nyckelbindning nu</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Återställ</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Text kopierad</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Lägg till</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Ändra flikens titel</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Rensa</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Stäng flik</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Nyckelbindningar</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Radera</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Redigera</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Ny flik</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Nytt fönster</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Nästa flik</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Klistra in utan nya rader</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Föregående flik</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Hitta</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Markera allt</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Visa inställingar</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Byt till terminal 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Byt till terminal 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Byt till terminal 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Byt till terminal 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Byt till terminal 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Byt till terminal 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Byt till terminal 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Byt till terminal 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Byt till terminal 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Växla helskärm</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Växla fönster</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Ny fjärrflik</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Ny SSH-flik</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH Info</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>användare</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>värd</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Sökväg till identitetsfil</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Bläddra</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Använd Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Avancerad</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh-portar:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Spara genväg</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Applikationen måste startas om för att denna ändring ska tillämpa.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Ogiltig input</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Porten kan inte vara 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Användare och värd är obligatoriska fält.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Användarnamnet kan inte vara tomt</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Värd får inte vara tom.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH-porten måste vara större än noll.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh-porten kan inte vara noll.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh-portintervallet är ogiltigt.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Nej</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Språk</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Ingen</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Ny produktion</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Avslutad med fel</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill ta bort den här profilen?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Nytt SSH-fönster</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH-profiler</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Flikfärg:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Använd ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Användarnamn</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Från porten</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>till porten</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh portintervall</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Autentisera</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Inställningarna exporterades till filen</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Inställningarna importerades från filen</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identifieringsfil finns inte</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Använd Windows-användarnamn när du öppnar SSH-URL: er som inte anger en</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Standard till Mosh för SSH-anslutningar</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Höger trimkopierade linjer</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Använd snabb-SSH som standard</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Ogiltigt kommando.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Platsen kan inte vara tom.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Stäng av terminalens pip</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Ange ett kommando (t.ex. &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Kommando</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Kommando som inte stöds:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Kommandoargument saknas.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Snabbstart</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Ny snabbstartflik</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Nytt snabbstartfönster</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Ny snabbflik</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Filen hittades inte:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Ogiltig länk.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Släpp fliken här</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Stäng flikarna till vänster</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Stäng andra flikar</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Stäng flikarna till höger</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Kopiera fliken</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Duplicera</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Det går inte att definiera två miljövariabler med samma namn.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Det går inte att definiera en miljövariabel utan namn.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Miljövariabler</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Stäng sökpanelen</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hitta nästa</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hitta föregående</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Ange sökord</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Sök</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Endast utskrivbar utskrift</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Loggutdata för felsökning</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Ord separator tecken</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Nyligen</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Öppnar standardprofil i en ny flik.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Öppnar en ny SSH- eller Mosh-session på en ny flik.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Öppnar dialogrutan &quot;Snabbstart&quot; och startar sessionen i en ny flik.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Öppnar inställningsfönstret.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Grundläggande information om appen.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Nyligen öppnade sessioner.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Startar en ny terminalsession baserat på standardprofilen.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Fjärranslutning...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Öppnar en dialogruta för att starta en ny SSH- eller Mosh-terminalsession.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Snabbstart...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Öppnar en &quot;Snabbstart&quot; -dialog för att starta en ny terminalsession.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Nytt fönster</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Ny flik</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Startar en session på en ny flik.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Startar en session i ett nytt fönster.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Applikationsmenytyp</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Platt, inställning för &quot;Öppna nya terminaler som&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Ny flik&quot; / &quot;Nytt fönster&quot; kaskad</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Avsluta</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Avsluta Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Aktiverad av policyn.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Bakgrundsbild</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Använd akrylbakgrund</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Är du säker på att du vill ta bort den här bakgrundsbilden?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Färger</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Ljusa färger</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Kopiera länk</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hela världen</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Skiftlägeskänsliga</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Kopiera markeringen eller klistra in</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Använd smart buffert</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Omstart</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Sessionen frånkopplad.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Öka teckenstorleken</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Minska teckenstorleken</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Återställ teckenstorleken</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Återanslut fliken</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/tr/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Hakkında</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Arkaplan</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Mavi</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Kapat</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Pencereleri kapatmadan önce sor</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Sekmeleri kapatmadan önce sor</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Renk</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Deaktif sekme rengi</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Kopyala</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Özel sekme başlığını başlık çubuğunda da göster</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Başlığı Düzenle</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Genel</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Yeşil</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Deaktif pencerelerde yeni çıktı olduğunda bilgilendir</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Ayarları uygulamak için yeniden başlatma gereklidir</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Yeni sekme</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Hiçbiri</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Sekmeler</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Pencereler</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Yeni terminalleri şu şekilde aç:</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Turuncu</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Yapıştır</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Mor</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Kırmızı</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Varsayılanları Geri Yükle</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Başlangıçta çalıştır</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Araç çubuğunda göster</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Sekmeleri göster</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Teal</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Alt</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Üst</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Altı çizili</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Seçili sekmenin altını çiz</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Hakkında</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Genel</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Kısayollar</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Fare</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profiller</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Temalar</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Ekle</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Argümanlar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Arkaplan saydamlığı</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Yanıp sönen imleç</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Kalın yazı</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>İptal</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Güncellemeler kontrol ediliyor...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Güncellemeleri kontrol et</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Düzenlemek için bir renge tıklayın</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Klonla</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Renk paleti</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Yazı kopyalandı bildirimi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Seçileni kopyala</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Yeni oluştur</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Mevcut versiyon</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Çizgi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Kalın çizgi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>İmleç stili</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Altı çizili</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Sil</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Satır sonlarını değiştirme</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Düzenle</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Dışa aktar</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Yazı tipi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Yazı boyutu</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>İçe aktar</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Klavye kısayolları</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Klavye kısayolları</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Güncel versiyon</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Lisans</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Satır sonu çeviri modu</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Yapıştırıldığında satır sonu çeviri modu:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Orta tuş eylemi</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Fare</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Sağ tık menü</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Hiçbir şey</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Yapıştır</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Yeni oluştur</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>İç boşluk</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Ad</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profiller</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Sürüm notları</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Sağ tuş eylemi</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Kaydet</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Geri kaydırma sınırı</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Otomatik gizleme</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Gizli</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollbar stili</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Görünür</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Aktifleştir</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Varsayılana ayarla</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Çalıştırılabilir shell konumu</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Sekme rengi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Tema:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Tema sahibi</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Ad</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Satır sonlarını CR&apos;ye dönüştür</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Satır sonlarını CR + LF&apos;ye dönüştür</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Satır sonlarını LF&apos;ye dönüştür</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Çalışma dizini</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>&quot;{0}&quot; sekmesini kapatmak istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Bu pencereyi kapatmak istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Bu tuş takımını silmek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Bu temayı silmek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Tüm değişiklikleri silmek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Genel ayarları geri yüklemek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Varsayılan tuş bağlantılarını geri yüklemek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Fare ayarlarını geri yüklemek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Bu profili geri yüklemek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Varsayılan terminal seçeneklerini geri yüklemek istediğinizden emin misiniz?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Yetki ilkesi tarafından devre dışı bırakıldı.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Kullanıcı tarafından devre dışı bırakıldı. Lütfen Görev Yöneticisi&apos;nin Başlangıç sekmesinde yeniden etkinleştirin.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Başlığı düzenle</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Hata</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Aşağıdaki hata nedeniyle işlem tamamlanamıyor:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Tema içe aktarılamadı</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Uygun ayrıştırıcı bulunamadı</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Lütfen onaylayın</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>İptal</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Tuş bağlantınızı şimdi girin</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Tamam</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Sıfırla</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Metin kopyalandı</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Ekle</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Sekme başlığını değiştir</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Temizle</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Sekmeyi kapat</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Tuş atamaları</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Sil</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Düzenle</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Yeni sekme</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Yeni pencere</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Sonraki sekme</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Yeni satır olmadan yapıştırma</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Önceki sekme</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Ara</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Tümünü seç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Ayarları göster</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Terminal 1&apos;e geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Terminal 2&apos;ye geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Terminal 3&apos;e geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Terminal 4&apos;e geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Terminal 5&apos;e geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Terminal 6&apos;ya geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Terminal 7&apos;ye geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Terminal 8&apos;e geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Terminal 9&apos;a geç</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Tam ekrana geç</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Pencereyi aç / kapat</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Yeni uzaktan bağlantı sekmesi</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Yeni SSH sekmesi</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH bilgisi</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>kullanıcı</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>sunucu</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>bağlantı noktası</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Anahtar dosyası yolu</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Seç</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Mosh kullan</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Gelişmiş</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh bağlantı noktaları:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Kısayolu kaydet</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Bu değişikliğin geçerli olması için uygulamanın yeniden başlatılması gerekiyor.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Geçersiz giriş</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Bağlantı noktası 0 olamaz.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Kullanıcı ve ana bilgisayar zorunlu alanlardır.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Kullanıcı adı boş bırakılamaz.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Sunucu boş olamaz.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH bağlantı noktası sıfırdan büyük olmalıdır.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh bağlantı noktası sıfır olamaz.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh bağlantı noktası aralığı geçersiz.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Evet</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Hayır</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Dil</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Yok</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Yeni çıktı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hatadan çıkıldı</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Bu profili silmek istediğinizden emin misiniz?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Yeni SSH penceresi</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profilleri</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Sekme rengi:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty kullan</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Kullanıcı adı</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Mosh bağlantı noktasından</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>Mosh bağlantı noktasına</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh bağlantı noktası aralığı</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Kimlik doğrulaması</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Ayarlar dosyaya aktarıldı</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Ayarlar dosyadan içe aktarıldı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Anahtar dosyası yok</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>SSH URL&apos;lerini açarken Windows kullanıcı adını kullanın</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH bağlantıları için varsayılan olarak Mosh kullan</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Kopyalanan satırları sonundaki boşlukları kırp</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Varsayılan olarak hızlı SSH kullan</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Geçersiz komut.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Konum boş bırakılamaz.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Terminal bip seslerini kapat</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Bir komut girin (örn. &apos;ssh kullanıcıadı@sunucu&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Komut satırı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Desteklenmeyen komut:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Komut argümanları eksik.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Hızlı başlatma</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Yeni hızlı başlatma sekmesi</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Yeni hızlı başlatma penceresi</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Yeni hızlı sekme</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Dosya bulunamadı:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Geçersiz link.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Sekmeyi buraya bırakın</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Soldaki sekmeleri kapat</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Diğer sekmeleri kapat</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Sağdaki sekmeleri kapat</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Yinelenen sekme</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Yinele</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Aynı ada sahip iki ortam değişkeni tanımlanamıyor.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Adsız bir ortam değişkeni tanımlanamıyor.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Ortam değişkenleri</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Arama panelini kapat</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sonraki bul</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Öncekini bul</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Aranacak terimi yazınız</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Ara</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Yalnızca yazdırılabilir çıktı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Hata ayıklama için günlük çıktısı</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Kelime ayırıcı karakterler</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Son</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Varsayılan profili yeni sekmede açar.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Yeni sekmede yeni bir SSH veya Mosh oturumu açar.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>&quot;Hızlı Başlatma&quot; iletişim kutusunu açar ve oturumu yeni sekmede başlatır.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Ayarlar penceresini açar.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Uygulama hakkında temel bilgiler.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Yakın zamanda açılan oturumlar.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Varsayılan profile göre yeni terminal oturumu başlatır.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Uzaktan bağlantı ...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Yeni SSH veya Mosh terminal oturumu başlatmak için bir iletişim kutusu açar.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Hızlı başlat ...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Yeni terminal oturumu başlatmak için bir &quot;Hızlı Başlatma&quot; iletişim kutusu açar.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Yeni pencere</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Yeni sekme</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Yeni sekmede bir oturum başlatır.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Oturumu yeni pencerede başlatır.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Uygulama menü türü</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Düz, onurlandırma &quot;Yeni terminalleri farklı aç&quot; ayarı</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Yeni Sekme&quot; / &quot;Yeni Pencere&quot; basamaklı</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Çıkış</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Fluent terminalden çık</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Yetki ilkesi tarafından etkinleştirildi.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Arkaplan resmi</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Akrilik arkaplan kullan</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Bu arkaplan resmini silmek istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Renkler</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Parlak renkler</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Bağlantıyı kopyala</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regular Expressions - Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Bütün kelime</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Büyük/Küçük harfe duyarlı</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Seçimi kopyala veya yapıştır</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Akıllı arabellek kullan</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Yeniden başlat</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Oturum bağlantısı kesildi.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Yazı tipi boyutunu büyült</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Yazı tipi boyutunu küçült</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Yazı tipi boyutu ayarını sıfırla</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Sekmeye yeniden bağlan</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/ug-Arab/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>ھەققىدە</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>تەگ</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>كۆك</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>تاقاش</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>كۆزنەكنى تاقاشتىن بۇرۇن جەزىملەشتۈرۈش</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>بەتكۈچنى تاقاشتىن بۇرۇن جەزىملەشتۈرۈش</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>رەڭ</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>سۈكۈتتىكى بەتكۈچ رەڭگى</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>كۆچۈرۈش</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>ماۋزۇ ئىستونىدا خاسلاشتۇرۇلغان بەتكۈچ ماۋزۇسىنىمۇ كۆرسىتىش</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>ماۋزۇنى تەھرىرلەش</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>ئاساسلىق</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>يېشىل</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>تەگلىك بەتكۈچىدە يېڭى چىقىرىش كۆرسەتكۈچىنى كۆرسىتىڭ\n</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>تەڭشەشنى ئىلتىماس قىلىش تەلەپ قىلىنىدۇ</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>يېڭى بەتكۈچ</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>يوق</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>بەتكۈچلەر</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>كۆزنەكلەر</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>يېڭى تېرمىنال ئېچىش نىشانى</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>ئاپېلسىن رەڭ</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>چاپلاش</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>بىنەپشە</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>قىزىل</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>سۈكۈتنىكى ھالەتكە قايتۇرۇش</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>سېستىما قوزغالغاندا قوزغىتىش</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>تەڭشەك</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>تەڭشەك</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>سىستېما تەخسىدە كۆرسىتىڭ</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>بەتكۈچنى كۆرسەت</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>تېئال</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>ئاستى</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>ئۈستى</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>ئاستى سىزىق</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>تاللانغان بەتكۈچتە ئاستى سىزىق كۆرسىتىش</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>ھەققىدە</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>ئاساسلىق</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>تېز كۇنۇپكا</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>مائۇس</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>ئارخىپلار</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>تېرمىنال</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>ئۇسلۇبلار</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>قوشۇش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>پارامېتىرلار</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>تەگ سۈزۈكلىكى</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>چاقنايدىغان نۇر بەلگە</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>توم خەت</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>بىكار قىلىش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>يېڭىلاشنى تەكشۈرىۋاتىدۇ</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>يېڭىلاشنى تەكشۈرۈش</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>بىر رەڭنى چىكىىپ تەھرىرلەشنى باشلاڭ</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>كۆپەيتىش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>رەڭ تاختىسى</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>تېكىست كۆچۈرۈلگەنلىك ئۇقتۇرۇشى</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>تاللانغاندا كۈچۈرۈش</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>يىڭىنى قۇرۇش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>نۆۋەتتىكى نەشرى</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>ئىستون</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>كاتەكچە</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>نۇر بەلگە ئۇسلۇبى</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>ئاستى سىزىق</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>ئۆچۈرۈش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>قۇر ئاخىرىنى ئۆزگەرتمەڭ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>تەھرىرلەش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>ئېكسپورت</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>خەت نۇسقىسى</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>خەت چوڭلۇقى</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>ئىمپورىت</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>كۇنۇپكا تاختىسى تېزلەتمىسى</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>كۇنۇپكا تاختىسى تېزلەتمە كۇنۇپكىلىرى</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>ئەڭ يېڭى نەشرى</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>ئىجازەتنامە</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>قۇر ئاخىرلاشقان ئۆزگەرمە ھالىتى</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>چاپلاشنىڭ قۇر ئاخىرلىشىش شەكلى:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>ئوتتۇرا كۇنۇپكا ھەرىكىتى</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>مائۇس</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>مەزمۇن تىزىملىكى</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>ھېچنېمە</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>چاپلاش</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>يېڭىنى قۇرۇش</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>ئىچكى ئارىلىق</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>ئىسىم</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>ئارخىپلار</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>ئۇسلۇب</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>نەشىر خاتىرىلىرى</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>ئوڭ كۇنۇپكا ھەرىكىتى</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>ساقلاش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>ئايلاندۇرۇپ قايتىش چېكى</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>ئاپتوماتىك يوشۇرۇلىدىغان</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>يۇشۇرۇنغان</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>ئايلانما بالداق ئۇسلۇبى</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>كۈرۈندىغان</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>قوزغىتىش</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>سۈكۈتتىكى ھالەتكە قايتۇرۇش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>ئىجرا بۇلىدىغان شېل پروگرمما ئورنى</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>بەتكۈش رەڭگى</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>تېرمىنال</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>ئوسلۇب</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>ئاپتور</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>ئىسمى</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>قۇر ئاخىرىنى CR غا ئايلاندۇرۇش</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>قۇر ئاخىرىنى CR + LF غا ئۆزگەرتىڭ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>قۇر ئاخىرىنى LF غا ئۆزگەرتىڭ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>خىزمەت مۇندەرىجىسى</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>«{0}» بەتكۈچىنى تاقاشنى خالامسىز؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>بۇ كۆزنەكنى تاقاشنى خالامسىز؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>بۇ تېزلەتمە كۇنۇپكا باغلانمىسىنى ئۆچۈرمەكچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>بۇ ئۇسلۇبنى ئۆچۈرمەكچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>بارلىق ئۆزگىرىشلەرنى تاشلىماقچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>ئاساسلىق تەڭشەكلەرنى ئەسلىگە كەلتۈرمەكچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>سۈكۈتتىكى كۇنۇپكىلارنى ئەسلىگە كەلتۈرمەكچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>مائۇسنىڭ تەڭشىكىنى ئەسلىگە كەلتۈرمەكچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>بۇ ئارخىپىنى ئەسلىگە كەلتۈرمەكچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>سۈكۈتتىكى تېرمىنال تاللانمىلىرىنى ئەسلىگە كەلتۈرمەكچىمۇ؟</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>سىياسەت تەرىپىدىن چەكلەنگەن.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>ئىشلەتكۈچى تەرىپىدىن چەكلەنگەن. ۋەزىپە باشقۇرغۇچىنىڭ باشلاش بەتكۈچىدە ئۇنى قايتا قوزغىتىڭ.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>ماۋزۇنى تەھرىرلەش</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>خاتالىق</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>تۆۋەندىكى خاتالىق سەۋەبىدىن مەشغۇلات تاماملانمايدۇ:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>ئۇسلۇب ئەكىرىش مەغلۇپ بولدى</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>ماس كېلىدىغان تەھلىلچى تېپىلمىدى</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>جەزملەشتۈرۈڭ</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>بىكار قىلىش</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>ھازىر كۇنۇپكا باغلانمىڭىزنى كىرگۈزۈڭ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>ماقۇل</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>ئەسلىگە قايتۇرۇش</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>تېكىست كۆچۈرۈلدى</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>قوشۇش</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>بەتكۈچ نامىنى ئۆزگەرتىڭ</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>تازىلاش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>بەتكۈچنى تاقاش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>كونۇپكا باغلانمىلىرى</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>ئۆچۈرۈش</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>تەھرىر</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>يېڭى بەتكۈچ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>يېڭى كۆزنەك</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>كېيىنكى بەتكۈچ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>قۇر ئاتلىماي چاپلاش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>ئالدىنقى بەتكۈچ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>ئىزدەش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>ھەممىنى تاللاش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>تەڭشەكلەرنى كۆرسىتىش</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>1-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>2-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>3-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>4-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>5-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>6-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>7-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>8-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>9-تېرمىنالغا ئالماشتۇرۇش</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>پۈتۈن ئېكران ھالىتىنى ئالماشتۇرۇش</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>كۆزنەكنى ئالماشتۇرۇش</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>يىڭى يىراق بەتكۈچ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>يىڭى SSH بەتكۈچ</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH ئۇچۇرى</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ئابونىت</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>مۇلازىمىتىر</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ئېغىز</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>كىملىك ھۆججەت ئورنى</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>توركۆرگۈ</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Mosh ئىشلىتىش</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>ئىچكىرىلىگەن</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh ئېغىرلىرى</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>تېزلەتمە ساقلاش</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>بۇ ئۆزگەرتىشنىڭ كۈچكە ئىگە بولۇشى ئۈچۈن قايتا قوزغىتىش كېرەك.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>ئىناۋەتسىز كىرگۈزۈش</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>ئېغىز 0 بولالمايدۇ.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>ئابونىت ۋە مۇلازىمىتىر چوقۇم تەمىنلىنىدىغان ئۇچۇرلار</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>ئابونىت ئىسمى قۇرۇق بولمايدۇ.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>مۇلازىمىتىر قورۇق بولسا بولمايدۇ</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH ئېغىزى نۆلدىن چوڭ بولۇشى كېرەك.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh ئېغىزى نۆل بولالمايدۇ.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh ئېغىزى دائىرىسى ئىناۋەتسىز</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>ھەئە</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>ياق</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>تىل</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>يوق</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>يىڭى چىقىرىش</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>خاتالىق بىلەن چېكىندى</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>بۇ ئارخىپنى ئۆچۈرمەكچىمۇ؟</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>يېڭى SSH كۆزنىكى</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH ئارخىپى</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>بەتكۈچ رەڭگى:\n</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty نى ئىشلىتىش</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>ئىشلەتكۈچى ئىسمى</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>ئېغىزدىن</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>ئېغىزغا</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh ئېغىز دائىرىسى</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>دەلىللەش</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>تەڭشەكلەر ھۆججەتكە چىقىرىلدى</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>تەڭشەكلەر ھۆججەتتىن كىرگۈزۈلدى</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>پەرقلەندۈرۈش ھۆججىتى مەۋجۇت ئەمەس</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>SSH ئادىرىسىنى نى ئاچقاندا ۋىندوۋىس ئىشلەتكۈچى نامىنى ئىشلىتىش</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH ئۇلىنىشى ئۈچۈن Mosh غا سۈكۈتتىكى ھالەت</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>كۆچۈرۈلگەن قۇرنىڭ ئوڭدىكى قۇرۇق بەلگىلىرىنى ئۆچۈرۈش</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>سۈكۈتتىكى تېز SSH نى ئىشلىتىش</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>ئىناۋەتسىز بۇيرۇق.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>ئورنى بوش بولمايدۇ.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>تېرمىنال ئەسكەرتمە ئاۋازىنى تاقاش</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>بۇيرۇق كىرگۈزۈڭ (مەسىلەن: ssh ئىشلەتكۈچى ئىسمى @ host &apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>بۇيرۇق</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>قوللىمايدىغان بۇيرۇق:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>بۇيرۇق ئۇچۇرلىرى كەم.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>تېز قوزغىتىش</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>يېڭى تېز قوزغىتىش بەتكۈچى</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>يېڭى تېز قوزغىتىش كۆزنىكى</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>يېڭى تېز بەتكۈچ</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>ھۆججەت تېپىلمىدى:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>ئىناۋەتسىز ئۇلانما.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>بەتكۈچنى بۇ يەرگە تاشلاڭ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>سول تەرەپتىكى بەتكۈچلەرنى تاقاش</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>باشقا بەتكۈچلەرنى تاقاش</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>ئوڭ تەرەپتىكى بەتكۈچلەرنى تاقاش</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>بەتكۈچنى كۈپەيتىش</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>كۆپەيتىش</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>ئوخشاش ئىسىمدىكى ئىككى مۇھىت ئۆزگەرگۈچى مىقدارنى بەلگىلىيەلمەيدۇ.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>ئىسىمسىز مۇھىت ئۆزگەرگۈچى مىقدارنى بەلگىلىيەلمەيدۇ.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>مۇھىت ئۆزگەرگۈچى مىقدار</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>ئىزدەش تاختىسىنى تاقاش</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>كېيىنكىسىنى تېپىش</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>ئالدىنقىسىنى تېپىش</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ئىزدەش ئاتالغۇسىنى كىرگۈزۈش</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>ئىزدەش</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>پەقەت بېسىپ چىقىرىشقىلا بولىدۇ</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>ھەل قىلىش ئۈچۈن خاتىرە چىقىرىش</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>سۆز ئايرىش ھەرپلىرى</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>يېقىنقى</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>يېڭى بەتكۈچتە سۈكۈتتىكى ئارخىپنى ئاچىدۇ.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>يېڭى بەتكۈچتە يېڭى SSH ياكى Mosh ئۇلانمىسى ئاچىدۇ.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>«تېز قوزغىتىش» سۆزلىشىش رامكىسىنى ئاچىدۇ ۋە يېڭى بەتكۈچتە ئۇلانمىسىنى باشلايدۇ.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>تەڭشەك كۆزنىكىنى ئاچىدۇ.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>ئەپ ھەققىدىكى ئاساسلىق ئۇچۇرلار.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>يېقىندا ئېچىلغان ئۇلانمىلار .</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>سۈكۈتتىكى ئارخىپقا ئاساسەن يېڭى تېرمىنال ئۇلانمىسى باشلىنىدۇ.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>يىراقتىن ئۇلىنىش ...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>يېڭى SSH ياكى Mosh تېرمىنال ئۇلانمىسى قوزغىتىش ئۈچۈن دىئالوگ ئاچىدۇ.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>تېز قوزغىتىش ...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>يېڭى تېرمىنال ئۇلانما باشلاش ئۈچۈن «تېز قوزغىتىش» سۆزلىشىش رامكىسىنى ئاچىدۇ.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>يېڭى كۆزنەك</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>يېڭى بەتكۈچ</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>يېڭى بەتكۈچتە ئۇلانما ئېچىش</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>يېڭى كۆزنەكتە ئۇلانما ئاچىش.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>ئەپ تىزىملىك تىپى</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>تەكشى ،ھۆرمەت «يېڭى تېرمىنالنى ئېچىش» تەڭشىكى</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>«يېڭى بەتكۈچ» / «يېڭى كۆزنەك» مايىللىقى</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>چېكىنىش</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>راۋان تېرمىنالدىن چېكىنىش</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>سىياسەت ئارقىلىق قوزغىتىلدى.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>تەگلىك رەسىمى</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>ئاكرىل تەگلىكىنى ئىشلىتىڭ</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>بۇ تەگلىك رەسىمنى ئۆچۈرمەكچىمۇ؟</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>رەڭلەر</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>ئوچۇق رەڭلەر</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>ئۇلانمىنى كۆچۈرۈش</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>تەھلىللىمە</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>پۈتۈن سۆز</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>يېزىلىشقا سەزگۈر</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>تاللانمىنى كۆچۈرۈش ياكى چاپلاش</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>ئەقلىي ئىقتىدارلىق بۇففېر ئىشلىتىڭ</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>قايتا قوزغىتىش</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>ئۇلانما ئۈزۈلۈپ قالدى.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Increase font size</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Decrease font size</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Reset font size</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Reconnect tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/uk/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Про додаток</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Тло</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Синя</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Закрити</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Запитувати перед закриттям вікон</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Запитувати перед закриттям вкладок</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Колір</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Колір активних вкладок</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Копіювати</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Показувати назву вкладки у назві вікна</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Редагувати назву</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Загальні</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Зелена</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Показувати індикатор змін на фонових вкладках</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Необхідно перезапустити програму для застосування налаштувань</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Нова вкладка</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Немає</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Вкладки</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Вікна</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Відкрити новий термінал як</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Помаранчева</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Вставити</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Фіолетовий</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Червона</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Відновити замовчування</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Автозапуск</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Показувати у системному треї</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Показувати вкладки на</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Синьо-зелений</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Знизу</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Зверху</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Підкреслювати</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Підкреслювати вибрану вкладку</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Про додаток</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Загальні</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Гарячі клавіші</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Миша</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Профілі</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Термінал</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Теми</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Додати</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Аргументи</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Прозорість тла</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Миготливий курсор</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Жирний текст</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Відмінити</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Перевірка на наявність оновлень...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Перевірити на наявність оновлень...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Натисніть на колір для редагування</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Клонувати</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Палітра</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Сповіщення про скопійований текст</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Копіювати текст при виділенні</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Створити новий</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Поточна версія</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Вертикальна лінія</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Блок</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Стиль курсору</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Підкреслення</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Видалити</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Не змінювати закінчення рядків</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Редагувати</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Експортувати</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Шрифт</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Розмір шрифта</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Імпортувати</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Гаряча клавіша</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Гаряча клавіша</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Остання версія</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Ліцензія</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Режим конвертації закінчень рядків</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Режим конвертації закінчень рядків при вставці тексту:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Дія середньої кнопки миші</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Миша</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Контекстне меню</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Нічого</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Вставити</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Створити нову</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Відступ</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Назва</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Профілі</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Тема</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Список змін</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Дія правої кнопки миші</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Зберегти</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Ліміт прокрутки назад</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Ховати автоматично</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Схована</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Стиль смуги прокрутки</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Видно</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Зробити активним</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Встановити за замовчуванням</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Шлях до виконавчого файлу терміналу</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Колір вкладки</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Термінал</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Тема:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Автор</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Назва</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Конвертувати закінчення рядків в CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Конвертувати закінчення рядків в CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Конвертувати закінчення рядків в LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Робоча папка</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете закрити вкладку &quot;{0}&quot;?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете закрити це вікно?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете видалити ці гарячі клавіші?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете видалити цю тему?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете скасувати усі зміни?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете відновити загальні налаштування?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете відновити гаряі клавіші за замовчуванням?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете відновити налаштування миші?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете відновити цей профіль?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете відновити налаштування терміналу за замовчуванням?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Заборонено правилами.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Виключено користувачем. Будь ласка, активуйте це знову на вкладці Автозапуск Менеджера задач.</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Редагувати назву</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Помилка</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Операція не може бути завершена через наступну помилку:</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Не вдалось імпортувати тему</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Не знайдено відповідного аналізатора</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Будь ласка, підтвердіть</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Відміна</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Натисніть необхідні клавіші</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Гаразд</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Скинути</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Текст скопійовано</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Додати</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Змінити назву вкладки</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Очистити</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Закрити вкладку</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Гарячі клавіші</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Видалити</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Редагувати</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Нова вкладка</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Нове вікно</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Наступна вкладка</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Вставити без нових рядків</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Попередня вкладка</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Пошук</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Виділити все</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Показати налаштування</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Переключитись до 1 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Переключитись до 2 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Переключитись до 3 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Переключитись до 4 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Переключитись до 5 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Переключитись до 6 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Переключитись до 7 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Переключитись до 8 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Переключитись до 9 терміналу</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Повноекранний режим</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Переключити вікно</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Нова вкладка з віддаленим підключенням</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Нова SSH вкладка</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Інформація про SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>користувач</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>адреса</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>порт</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Шлях до ключа</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Перегляд</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Використовувати Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Додатково</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Порти Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Зберегти посилання</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Додаток необхідно перезапустити для застосування змін.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Невірний ввід</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Порт не може бути 0</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Користувач та хост - обов&apos;язкові поля</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Поле Користувач не може бути пустим</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Поле Хост не може бути пустим</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH порт повинен бути більше 0</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh порт не може буи 0</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Діапазон портів Mosh не вірний</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Так</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Ні</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Мова</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Ніц</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Новий вивід</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Вихід з помилкою</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете видалити цей профіль?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Нове вікно з SSH</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Профілі SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Колір вкладки:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Використовувати ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Ім&apos;я користувача</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Від порта</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>до порта</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Діапазон портів для Mosh з&apos;єднань</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Автентифікація</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Налаштування були експортовані у файл</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Налаштування були імпортовані з файлу</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Файл ключа не існує</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Використовувати ім&apos;я користувача Windows при SSH з&apos;єднанні за посиланням, у якому немає імені користувача</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Використовувати Mosh за замовчуванням при підключенні по SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Обрізати скопійовані рядки справа</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Використовувати швидкий SSH за замовчуванням</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Невірна команда.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Шлях не може бути пустим.</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Вимкнути звуки терміналу</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Введіть команду (наприклад &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Команда</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Команда не підтримуєтсья:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Відсутні аргументи.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Швидкий запуск</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Нова вкладка швидкого запуску</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Нове вікно швидкого запуску</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Нова швидка вкладка</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Файл не знайдено:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Невірне посилання.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Скидайте вкладку сюди</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Закрити вкладки зліва</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Закрити інші вкладки</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Закрити вкладки справа</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Дублювати вкладку</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Дублювати</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Неможливо створити дві змінні середовища з однаковою назвою</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Неможливо визначити змінну середовища без назви</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Змінні середовища</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Закрити панель пошуку</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Знайти далі</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Знайти позаду</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Введіть що шукатимемо</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Пошук</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Тільки видимий вивід</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Логувати вивід</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Розділюючі символи</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Останні</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Відкривати профіль за замовчуванням у новій вкладці.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Відкривати нову сесію SSH або Mosh в новій вкладці.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Відкрити діалогове вікно «Швидкий запуск» і розпочати сеанс у новій вкладці.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Відкрити вікно налаштувань.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Основна інформація про програму.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Останні відкриті сесії.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Запускати новий термінальну сесію на основі профілю за замовчуванням.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Віддалене підключення...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Відкрити діалогове вікно для запуску нового сеансу терміналу SSH або Mosh.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Швидкий запуск...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Відкривати діалогове вікно &quot;Швидкий запуск&quot; для початку нової сесії терміналу.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Нове вікно</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Нова вкладка</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Запускає сесію у новій вкладці.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Запускає сесію у новому вікні.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Тип меню програми</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Плоска, з урахуванням налаштування &quot;Відкрити новий термінал як&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Нова вкладка&quot; / &quot;Нове вікно&quot; каскадом</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Вийт</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Вийдіть із Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Увімкнено політикою.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Фонове зображення</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Використовувати акриловий фон</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете видалити це фонове зображення?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Кольори</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Яскраві кольори</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Копіювати посилання</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Регулярний вираз</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Ціле слово</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Чутливий регістр</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Скопіювати виділене або вставити</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Використовувати розумний буфер</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Перезавантаження</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Сесія відключена.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Збільшити розмір шрифту</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Зменшити розмір шрифту</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Скинути розмір шрифту</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Перепідключити вкладку</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/uz-Latn/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Dastur haqida</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Orqa fon</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Ko&apos;k</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Yopish</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Oynani yopishdan avval tasdiq so&apos;rash</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Bo&apos;limni yopishdan avval tasdiq so&apos;rash</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Rang</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Nofaol bo&apos;limlardagi rang</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Nusxa ko&apos;chirish</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Foydalanuvchi yorlig&apos;i sarlavhasini sarlavha panelida ham ko&apos;rsatish</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Sarlavhani tahrirlash</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Umumiy</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Yashil</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Fondagi bo&apos;limlarda yangi chiqish indikatorini ko&apos;rsatish</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Sozlamani saqlash uchun dasturni qayta ishga tush kerak</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Yangi bo&apos;lim</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Yo&apos;q</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Bo&apos;limlar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Oynalar</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Yangi terminallarni ochish holati</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>To&apos;q sariq</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Qo&apos;shish</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Siyohrang</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Qizil</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Birlamchi sozlamalarni tiklash</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Kompyuter ishga tushganda dasturni ham ishga tushirish</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Sozlamalar</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Sozlamalar</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Tizim treyida ko‘rsatish</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Bo&apos;limlarni ko&apos;rsatish joyi</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Firuza rang</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Pastda</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Yuqorida</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Tagiga chizish</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Belgilangan bo&apos;limlarni belgilash</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Dastur haqida</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Umumiy sozlamalar</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Klavish qisqartmalari</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Sichqoncha</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profillar</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Mavzular</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Qo&apos;shing</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Dalillar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Fon shaffofligi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Miltillovchi kursor</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Qalin matn</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Bekor qilish</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Yangilanishlar tekshirilmoqda ...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Yangilanishlarni tekshiring</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Tahrirlash uchun rangni bosing</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Klon</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Ranglar palitrasi</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Matndan nusxa olingan xabarnoma</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Tanlangandan nusxa oling</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Yangisini yarating</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Joriy versiya</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Bar</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Bloklash</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Kursor uslubi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Pastga chizish</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Yo&apos;q qilish</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Chiziq uchlarini o&apos;zgartirmang</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Tahrirlash</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Eksport qilish</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Shrift turkumi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Shrift hajmi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Import</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Klaviatura yorlig&apos;i</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Klaviatura yorlig&apos;i</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>So&apos;nggi versiya</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Litsenziya</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Tarjima rejimi bilan tugaydigan satr</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Joylashtirish tugagan tarjima rejimi:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>O&apos;rta tugmacha harakati</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Sichqoncha</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Kontekst menyusi</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Hech narsa</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Yopish</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Yangisini yarating</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>Padding</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Ism</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Profillar</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Mavzu</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Qaydlarni chiqaring</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>O&apos;ng tugmacha harakati</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Saqlash</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Scrollback cheklovi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Avtomatik yashirish</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Yashirin</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Scrollbar uslubi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Ko&apos;rinadi</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Faol sozlash</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Birlamchi sozlash</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell bajariladigan joy</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Tab rangi</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Terminal</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Mavzu:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Muallif</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Ism</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Chiziq sonlarini CR ga o&apos;zgartiring</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Chiziq uchlarini CR + LF ga o&apos;zgartiring</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>LF uchlarini LF ga aylantirish</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Ishchi katalog</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Haqiqatan ham &quot;{0}&quot; ichki oynasini yopmoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Haqiqatan ham bu oynani yopmoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Haqiqatan ham ushbu tugmachani yo&apos;q qilmoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Haqiqatan ham ushbu mavzuni yo&apos;q qilmoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Haqiqatan ham barcha o‘zgarishlarni bekor qilmoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Haqiqatan ham umumiy sozlamalarni tiklamoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Haqiqatan ham standart tugmachalarni tiklamoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Sichqoncha sozlamalarini tiklamoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Haqiqatan ham ushbu profilni qayta tiklamoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Haqiqatan ham terminal terminal parametrlarini tiklamoqchimisiz?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Siyosat tomonidan o‘chirilgan.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Foydalanuvchi tomonidan o&apos;chirilgan. Iltimos, uni Vazifa menejerining &quot;Ishga tushirish&quot; yorlig&apos;ida qayta yoqing.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Sarlavhani tahrirlash</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>Xato</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Quyidagi xato tufayli operatsiyani yakunlab bo&apos;lmaydi:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Mavzuni import qilib bo‘lmadi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Kerakli tahlil qiluvchi topilmadi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Iltimos, tasdiqlang</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Bekor qilish</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Endi tugmachangizni kiriting</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Qayta o&apos;rnatish</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Matn nusxa olindi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Qo&apos;shing</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Yorliq sarlavhasini o&apos;zgartirish</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Aniq</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Yorliqni yopish</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Keybindings</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Yo&apos;q qilish</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Tahrirlash</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Yangi tab</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Yangi oyna</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Keyingi yorliq</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Yangi chiziqlarsiz joylashtiring</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Oldingi tab</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Qidirmoq</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Hammasini belgilash</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Sozlamalarni ko&apos;rsatish</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>1-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>2-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>3-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>4-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>5-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>6-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>7-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>8-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>9-terminalga o&apos;ting</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>To&apos;liq ekranga o&apos;tish</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Oynani almashtirish</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Yangi masofaviy tab</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Yangi SSH yorlig&apos;i</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH haqida ma&apos;lumot</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>foydalanuvchi</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>mezbon</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>port</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Identifikatsiya faylining yo&apos;li</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Ko&apos;rish</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Mosh-dan foydalaning</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Ilg&apos;or</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh portlari:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Yorliqni saqlash</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Ushbu o&apos;zgartirish kuchga kirishi uchun dasturni qayta ishga tushirish kerak.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>Noto‘g‘ri kiritish</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Port 0 bo&apos;lmasligi kerak.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Foydalanuvchi va xost majburiy maydonlardir.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Foydalanuvchi nomi bo‘sh bo‘lishi mumkin emas.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Xost bo‘sh bo‘lishi mumkin emas.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH porti noldan katta bo&apos;lishi kerak.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh porti nolga teng bo&apos;lmaydi.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh porti oralig&apos;i noto‘g‘ri.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Ha</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Yo&apos;q</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Til</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>Yo&apos;q</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Yangi chiqish</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Xatolik bilan chiqarildi</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Haqiqatan ham ushbu profilni yo&apos;q qilmoqchimisiz?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Yangi SSH oynasi</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH profillari</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Tab rangi:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>ConPty-dan foydalaning</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>Foydalanuvchi ismi</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Portdan</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>portga</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh port oralig&apos;i</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Haqiqiylikni tekshirish</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Sozlamalar faylga eksport qilindi</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Sozlamalar fayldan import qilindi</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Identifikatsiya fayli mavjud emas</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Bittasini ko&apos;rsatmaydigan SSH URL-larini ochishda Windows foydalanuvchi nomidan foydalaning</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH ulanishlari uchun standart Mosh</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>O&apos;ng trim nusxalangan chiziqlar</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>SSH-dan tezkor foydalaning</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Noto‘g‘ri buyruq.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Joylashuv bo‘sh bo‘lishi mumkin emas.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Terminal ovozini o&apos;chirish</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Buyruqni kiriting (masalan, &quot;ssh username @ host&quot;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Buyruq</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Qo&apos;llab-quvvatlanmaydigan buyruq:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Buyruq dalillari yo&apos;q.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Tez ishga tushirish</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Yangi tezkor yorliq</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Yangi tezkor ishga tushirish oynasi</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Yangi tezkor yorliq</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Fayl topilmadi:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Noto‘g‘ri havola.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Yorliqni bu yerga tashlang</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Yorliqlarni chap tomonga yoping</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Boshqa ichki oynalarni yoping</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Yorliqlarni o&apos;ng tomonga yoping</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Yorliqni nusxalash</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Dublikat</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Xuddi shu nomli ikkita atrof-muhit o&apos;zgaruvchisini aniqlab bo&apos;lmaydi.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Atrof muhit o&apos;zgaruvchisini nomisiz aniqlab bo&apos;lmaydi.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Atrof muhitning o&apos;zgaruvchilari</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Qidiruv panelini yoping</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Keyingisini toping</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Avvalgisini toping</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Qidiruv so&apos;zini kiriting</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Qidirmoq</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Faqatgina chop etilishi mumkin</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Nosozliklarni tuzatish uchun jurnal chiqishi</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>So‘zni ajratuvchi belgilar</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Yaqinda</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Yangi ichki oynada standart profilni ochadi.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Yangi yorliqda yangi SSH yoki Mosh sessiyasini ochadi.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>&quot;Tez ishga tushirish&quot; muloqot oynasini ochadi va yangi tabda sessiyani boshlaydi.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Sozlamalar oynasini ochadi.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Ilova haqida asosiy ma&apos;lumotlar.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Yaqinda ochilgan sessiyalar.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Standart profil asosida yangi terminal sessiyasini boshlaydi.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Masofadan ulanish ...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>SSH yoki Mosh-ning yangi sessiyasini boshlash uchun dialogni ochadi.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Tez ishga tushirish ...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Yangi terminal sessiyasini boshlash uchun &quot;Tez ishga tushirish&quot; muloqot oynasini ochadi.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Yangi oyna</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Yangi tab</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Seansni yangi tabda ochadi.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Seansni yangi oynada ochadi.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Ilova menyusi turi</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>&quot;Yangi terminallarni ochish&quot; sozlamasini sharaflagan holda tekis</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>&quot;Yangi tab&quot; / &quot;Yangi oyna&quot; kaskadli</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Chiqing</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Ravon terminaldan chiqish</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Siyosat tomonidan yoqilgan.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Fon rasmi</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Akril fondan foydalaning</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Haqiqatan ham ushbu fon rasmini yo&apos;q qilmoqchimisiz?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Ranglar</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Yorqin ranglar</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Havolani nusxalash</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Regex</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Butun so&apos;z</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Katta-kichik harfni farqlash</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Nusxalash yoki joylashtirish</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Aqlli buferdan foydalaning</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Qayta ishga tushirish</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Seans uzildi.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Shriftning o&apos;lchamini kattalashtiring</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Shriftning o&apos;lchamini kamaytirish</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Shriftning o&apos;lchamini tiklash</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Qayta ulanish yorlig&apos;i</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/vi/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>Giới thiệu</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>Nền</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>Xanh dương</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Đóng</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>Hỏi trước khí đóng cửa sổ</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>Hỏi trước khi đóng tab</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>Màu sắc</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>Màu trên các tab không hoạt động</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>Sao chép</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>Hiển thị tiêu đề tab tùy chỉnh trên thanh tiêu đề</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>Sửa tiêu đề</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>Chung</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>Xanh lá cây</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>Hiển thị chỉ báo đầu ra mới trên các tab nền</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>Yêu cầu khởi động lại ứng dụng để áp dụng thay đổi</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>Tab mới</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>Không</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>Tabs</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>Các cửa sổ</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>Mở cửa sổ mới với</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>Cam</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>Dán</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>Tím</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>Đỏ</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>Khôi phục mặc định</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>Chạy khi khởi động</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n    <comment>SettingsPage.xaml.cs</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>Hiển thị trong khay hệ thống</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>Hiển thị các tab trên</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>Teal</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>Dưới cùng</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>Hàng đầu</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>Gạch chân</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>Gạch chân tab đã chọn</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>Giới thiệu</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>Chung</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>Tổ hợp phím</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>Chuột</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>Hồ sơ</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>Thiết bị đầu cuối</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>Chủ đề</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>Thêm vào</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>Tranh luận</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>Độ mờ của nền</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>Con trỏ nhấp nháy</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>Chữ in đậm</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Huỷ bỏ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>Đang kiểm tra các bản cập nhật ...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>Kiểm tra cập nhật</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>Nhấp vào một màu để chỉnh sửa</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Nhân bản</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>Bảng màu</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>Thông báo đã sao chép văn bản</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>Sao chép vào lựa chọn</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>Tạo mới</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>Phiên bản hiện tại</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>Quán ba</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>Khối</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>Kiểu con trỏ</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>Gạch chân</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Xóa bỏ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>Không sửa đổi phần cuối của dòng</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Sửa</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Xuất ra</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>Họ phông chữ</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>Cỡ chữ</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>Nhập vào</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>Phim tăt</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>Phim tăt</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>Phiên bản mới nhất</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>Giấy phép</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>Chế độ dịch kết thúc dòng</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>Chế độ dịch kết thúc dòng khi dán:</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>Hành động nút giữa</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>Chuột</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>Danh mục</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>Không có gì</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>Dán</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>Tạo mới</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>padding</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>Tên</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>Hồ sơ</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>Chủ đề</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>Ghi chú phát hành</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>Hành động nút bên phải</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Lưu</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>Giới hạn cuộn lại</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>Tự động ẩn</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>Ẩn</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>Kiểu thanh cuộn</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>Có thể nhìn thấy</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Đặt hoạt động</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Đặt mặc định</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Vị trí thực thi của Shell</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>Màu tab</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>Thiết bị đầu cuối</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>Chủ đề:</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>Tác giả</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>Tên</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>Chuyển đổi cuối dòng thành CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>Chuyển đổi cuối dòng thành CR + LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>Chuyển đổi cuối dòng thành LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>Thư mục làm việc</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn đóng tab &quot;{0}&quot; không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn đóng cửa sổ này không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn xóa keybinding này không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn xóa chủ đề này không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn hủy tất cả các thay đổi không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn khôi phục cài đặt chung không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn khôi phục các liên kết khóa mặc định không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn khôi phục cài đặt chuột không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn khôi phục hồ sơ này không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn khôi phục các tùy chọn thiết bị đầu cuối mặc định không?</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>Bị vô hiệu hóa bởi chính sách.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>Người dùng đã tắt. Vui lòng kích hoạt lại nó trong tab Khởi động của Trình quản lý Tác vụ.</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>Chỉnh sửa tiêu đề</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>lỗi</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>Không thể hoàn thành thao tác do lỗi sau:</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>Nhập chủ đề không thành công</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>Không tìm thấy trình phân tích cú pháp phù hợp</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>Vui lòng xác nhận</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Huỷ bỏ</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>Nhập keybinding của bạn ngay bây giờ</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>đồng ý</value>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>Cài lại</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>Đã sao chép văn bản</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>Thêm vào</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>Thay đổi tiêu đề tab</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>Thông thoáng</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>Đóng tab</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>Tổ hợp phím</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>Xóa bỏ</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>Biên tập</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>Tab mới</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>Cửa sổ mới</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>Tab tiếp theo</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>Dán không có dòng mới</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>Tab trước</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>Tìm kiếm</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>Chọn tất cả</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>Hiển thị cài đặt</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>Chuyển sang nhà ga số 9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>Bật chế độ toàn màn hình</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>Chuyển đổi cửa sổ</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>Tab điều khiển từ xa mới</value>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>Tab SSH mới</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>Thông tin SSH</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>người sử dụng</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>tổ chức</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Hải cảng</value>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Đường dẫn tệp danh tính</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>Duyệt qua</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>Sử dụng Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>Nâng cao</value>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Cổng Mosh:</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>Lưu lối tắt</value>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>Ứng dụng cần khởi động lại để thay đổi này có hiệu lực.</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>đâu vao không hợp lệ</value>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>Cổng không được là 0.</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>Người dùng và máy chủ lưu trữ là các trường bắt buộc.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>Tên ngươi dung không được để trông.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>Máy chủ không được để trống.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Cổng SSH phải lớn hơn 0.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Cổng Mosh không được bằng không.</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Dải cổng Mosh không hợp lệ.</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>Đúng</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>Không</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>Ngôn ngữ</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>không ai</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Đầu ra mới</value>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Đã thoát với lỗi</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn xóa hồ sơ này không?</value>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>Cửa sổ SSH mới</value>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>Hồ sơ SSH</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>Màu tab:</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>Sử dụng ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>tên tài khoản</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>Từ cảng</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>đến cảng</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Dải cổng Mosh</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>Xác thực</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>Cài đặt đã được xuất sang tệp</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>Cài đặt đã được nhập từ tệp</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>Xác định tệp không tồn tại</value>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>Sử dụng tên người dùng Windows khi mở các URL SSH không chỉ định một</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>Mặc định thành Mosh cho các kết nối SSH</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>Các dòng đã sao chép</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>Sử dụng SSH nhanh theo mặc định</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>Lệnh không hợp lệ.</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>Vị trí không được để trống.</value>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>Tắt tiếng bíp thiết bị đầu cuối</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Nhập lệnh (ví dụ: &apos;ssh username @ host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>Chỉ huy</value>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>Lệnh không được hỗ trợ:</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>Đối số lệnh bị thiếu.</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>Khởi động nhanh</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>Tab khởi chạy nhanh mới</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>Cửa sổ khởi chạy nhanh mới</value>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>Tab nhanh mới</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>Không tìm thấy tệp:</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>Liên kết không hợp lệ.</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>Thả tab ở đây</value>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>Đóng các tab ở bên trái</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>Đóng các tab khác</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>Đóng các tab ở bên phải</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>Tab trùng lặp</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>Bản sao</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>Không thể xác định hai biến môi trường có cùng tên.</value>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>Không thể xác định một biến môi trường mà không có tên.</value>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>Các biến môi trường</value>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Đóng bảng điều khiển tìm kiếm</value>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tìm tiếp theo</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tìm trước</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Nhập cụm từ tìm kiếm</value>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>Tìm kiếm</value>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>Chỉ đầu ra có thể in</value>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>Nhật ký đầu ra để gỡ lỗi</value>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>Các ký tự phân tách từ</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>Gần đây</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>Mở hồ sơ mặc định trong một tab mới.</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>Mở phiên SSH hoặc Mosh mới trong tab mới.</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>Mở hộp thoại &quot;Khởi chạy nhanh&quot; và bắt đầu phiên trong tab mới.</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>Mở cửa sổ cài đặt.</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>Thông tin cơ bản về ứng dụng.</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>Các phiên mở gần đây.</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>Bắt đầu phiên đầu cuối mới dựa trên cấu hình mặc định.</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>Kết nối từ xa ...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>Mở hộp thoại để khởi chạy phiên thiết bị đầu cuối SSH hoặc Mosh mới.</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>Khởi động nhanh...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>Mở hộp thoại &quot;Khởi chạy nhanh&quot; để bắt đầu phiên đầu cuối mới.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>Cửa sổ mới</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>Tab mới</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>Khởi chạy một phiên trong một tab mới.</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>Khởi chạy một phiên trong một cửa sổ mới.</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>Loại menu ứng dụng</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>Phẳng, tôn trọng cài đặt &quot;Mở thiết bị đầu cuối mới dưới dạng&quot;</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>Xếp tầng &quot;Tab mới&quot; / &quot;Cửa sổ mới&quot;</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>Thoát</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>Thoát khỏi thiết bị đầu cuối Fluent</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>Được kích hoạt bởi chính sách.</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>Hình nền</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>Sử dụng nền acrylic</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn xóa hình nền này không?</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>Màu sắc</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>Màu sáng</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>Sao chép liên kết</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Biểu thức chính quy</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Cả từ</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Trường hợp nhạy cảm</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>Sao chép văn bản đã chọn hoặc dán</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>Sử dụng đệm thông minh</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>Khởi động lại</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>Đã ngắt kết nối phiên.</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>Tăng kích thước phông chữ</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>Giảm kích thước phông chữ</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>Đặt lại kích thước phông chữ</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>Kết nối lại tab</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/zh-Hans/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>关于</value>\n    <comment>MainPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>背景色</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>蓝色</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>关闭</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>在关闭窗口之前询问</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>在关闭标签页之前询问</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>标签颜色</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>非活动选项卡上的颜色</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>复制</value>\n    <comment>XtermTerminalView.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>在标题栏显示自定义标题</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>修改标题</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>常规</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>绿色</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>非活动选项卡输出提示</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>下次启动生效</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>新标签页</value>\n    <comment>MainPage.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>无</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>新的标签页</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>新的窗口</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>打开新的终端</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>橙色</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>粘贴</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>紫色</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>红色</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>恢复默认</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>开机自启</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>设置</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>设置</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>在系统托盘中显示</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>标签栏位置</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>青色</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>底部</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>顶部</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>下划线</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>当前标签栏下划线</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>关于</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>常规</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>快捷键</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>鼠标</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>配置文件</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>终端</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>主题</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>添加</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>参数</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>背景不透明度</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>光标闪烁</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>粗体</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>取消</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>正在检查更新 ...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>检查更新</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>单击要编辑的颜色</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>复制</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>调色板</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>文本复制提示</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>自动复制选中的文本</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>新建</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>当前版本</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>垂直</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>块状</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>光标样式</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>下划线</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>删除</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>不改变结束行</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>编辑</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>导出</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>字体</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>字体大小</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>导入</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>快捷键</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>快捷键</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>最新版本</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>许可</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>行结束标志转换</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>粘贴时转换行结束标识符</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>鼠标中键动作</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>鼠标</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>打开弹出式菜单</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>没做什么</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>粘贴剪切板内容</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>新建</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>内边距</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>名称</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>终端配置</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>主题</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>发行说明</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>鼠标右键动作</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>保存</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>滚动限制</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>自动隐藏</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>隐藏</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>滚动条样式</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>显示</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>应用</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>设为默认</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>可执行程序位置</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>标签栏颜色</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>终端</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>主题</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>作者</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>主题名</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>转换行结尾为 CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>转换行结尾为 CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>转换行结尾为 LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>工作目录</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>你确定要关闭第{0}个标签页吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>你确定要关闭这个窗口吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>你确定要删除此快捷键绑定吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>你确定呢要删除此主题吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>你确定要放弃所有更改吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>你确定要还原常规设置吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>你确定要还原默认的快捷键绑定吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>你确定要还原鼠标设置吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>你确定要还原此配置吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>你确定要还原默认终端选项吗？</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>已被组策略禁止。</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>已被用户禁用。请在任务管理器的“启动”选项卡中重新激活它。</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>编辑标题</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>错误</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>由于以下错误，操作无法完成：</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>导入主题失败</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>解析失败</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>请确认</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>请键入要绑定的快捷键</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>确定</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>重置</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>已复制</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>添加</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>修改标签页标题</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>清屏</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>关闭标签页</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>快捷键</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>删除</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>编辑</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>新建标签页</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>新建窗口</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>下一标签页</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>粘贴（不换行）</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>上一标签页</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>搜索</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>全选</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>显示设置</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>切换到终端 #1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>切换到终端 #2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>切换到终端 #3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>切换到终端 #4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>切换到终端 #5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>切换到终端 #6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>切换到终端 #7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>切换到终端 #8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>切换到终端 #9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>切换全屏</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>切换窗口</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>新建远程标签页</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>新建 SSH 标签页</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH 信息</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>用户名</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>主机</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>端口</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>SSH 认证文件路径</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>浏览</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>使用 Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>高级</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Mosh 端口</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>保存快捷键</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>应用需要重启才能使更改生效</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>非法输入</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>端口不能为 0</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>用户名和主机是必填字段</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>用户名不能为空</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>主机不能为空</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH 端口需大于 0</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Mosh 端口不能为 0</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh 端口范围无效</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>语言</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>无</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>新输出</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>进程退出错误</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>你确定要删除这个配置文件吗？</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>新的 SSH 窗口</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH 配置文件</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>标签页颜色</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>使用 ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>用户名</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>从端口</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>到端口</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>MOSH 端口范围</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>认证</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>设置已导出至文件</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>已经从文件导入设置</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>身份认证文件不存在</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>当 SSH 地址未指定用户名时使用 Windows 用户名</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH 连接默认使用 Mosh</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>复制内容右侧空格清空</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>默认使用 quick SSH</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>无效命令</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>地址不能为空</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>关闭终端声音</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>SSH 命令（如：ssh username@host）</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>命令</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>不支持的命令</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>缺少命令参数</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>快速启动</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>新建快速启动标签页</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>新建快速启动窗口</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>新建快速标签页</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>文件未找到</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>无效的链接</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>删除此标签</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>关闭左侧标签</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>关闭其它标签</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>关闭右侧标签</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>复制选项卡</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>复制</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>无法定义具有相同名称的两个环境变量</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>无法定义没有名称的环境变量</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>环境变量</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>关闭搜索框</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>搜索下一个</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>搜索上一个</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>输入搜索内容</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>搜索</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>只输出可打印内容</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>记录 Debug 日志</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>单词分隔符</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>最近</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>在新标签打开默认配置。</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>从新标签页打开SSH或Mosh会话</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>打开“快速启动”对话框并在新标签中开启会话。</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>打开设置页面</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>关于</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>最近打开的会话</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>基于默认配置开启新的终端会话。</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>远程连接</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>打开对话框开启新的 SSH 或 Mosh 终端会话。</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>快捷启动</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>打开“快速启动”对话框并开启终端会话。</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>新建窗口</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>新建标签页</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>从新标签页启动会话</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>从新窗口启动会话</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>应用菜单类型</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>扁平式，跟随&quot;打开新的终端&quot;菜单</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>“新标签”/“新窗口”级联菜单</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>退出关于</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>根据策略启用。</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>背景图片</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>使用亚克力背景</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>你确定你想要删除这个背景图片吗？</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>颜色</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>亮色</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>复制链接</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>正则表达式</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>全字匹配</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>大小写敏感</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>复制或者粘贴选中的文本</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>使用智能缓冲</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>重启</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>会话已断开</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>放大字体</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>缩小字体</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>重置字体大小</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>重连标签页</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Strings/zh-Hant/Resources.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AboutDialog.Title\" xml:space=\"preserve\">\n    <value>關於</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"Background.Content\" xml:space=\"preserve\">\n    <value>背景</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Blue\" xml:space=\"preserve\">\n    <value>藍色</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ConfirmWindowClosing.Header\" xml:space=\"preserve\">\n    <value>關閉視窗前詢問</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmTabClosing.Header\" xml:space=\"preserve\">\n    <value>關閉分頁前詢問</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Color.Text\" xml:space=\"preserve\">\n    <value>顏色</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ColorInactiveTabs.Text\" xml:space=\"preserve\">\n    <value>暫不使用的分頁顏色</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Copy\" xml:space=\"preserve\">\n    <value>複製</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"CustomTitle.Header\" xml:space=\"preserve\">\n    <value>在標題欄顯示自訂分頁標題</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitle.Text\" xml:space=\"preserve\">\n    <value>修改標題</value>\n    <comment>TabBar.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"General.Text\" xml:space=\"preserve\">\n    <value>一般</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Green\" xml:space=\"preserve\">\n    <value>綠</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"IndicatorOutput.Header\" xml:space=\"preserve\">\n    <value>顯示新的輸出指示器在分頁背景中</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"NeedRelaunch.Text\" xml:space=\"preserve\">\n    <value>重新啟動以套用設定</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"NewTab.Text\" xml:space=\"preserve\">\n    <value>新分頁</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"TabTheme.None\" xml:space=\"preserve\">\n    <value>無</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"ONTA_Tabs.Content\" xml:space=\"preserve\">\n    <value>分頁</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"ONTA_Windows.Content\" xml:space=\"preserve\">\n    <value>視窗</value>\n    <comment>GeneralSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"OpenNewTerminalAs.Text\" xml:space=\"preserve\">\n    <value>打開新終端機為</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Orange\" xml:space=\"preserve\">\n    <value>橘</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Command.Paste\" xml:space=\"preserve\">\n    <value>貼上</value>\n    <comment>XtermTerminalView.xaml.cs</comment>\n  </data>\n  <data name=\"TabTheme.Purple\" xml:space=\"preserve\">\n    <value>紫</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Red\" xml:space=\"preserve\">\n    <value>紅</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"Restore.Label\" xml:space=\"preserve\">\n    <value>恢復預設值</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"RunOnStartup.Header\" xml:space=\"preserve\">\n    <value>登入時啟動</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting\" xml:space=\"preserve\">\n    <value>設定</value>\n    <comment>SettingsPage.xaml.cs\nFuzzy</comment>\n  </data>\n  <data name=\"Settings.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n    <comment>MainPage.xaml</comment>\n  </data>\n  <data name=\"SystemTray.Header\" xml:space=\"preserve\">\n    <value>在系統匣中顯示圖示</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabsPostion.Text\" xml:space=\"preserve\">\n    <value>顯示分頁</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TabTheme.Teal\" xml:space=\"preserve\">\n    <value>深藍綠</value>\n    <comment>TabBar.xaml</comment>\n  </data>\n  <data name=\"TP_Bottom.Content\" xml:space=\"preserve\">\n    <value>底部</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"TP_Top.Content\" xml:space=\"preserve\">\n    <value>頂部</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Underline.Content\" xml:space=\"preserve\">\n    <value>底線</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"UnderlineTab.Header\" xml:space=\"preserve\">\n    <value>在選取的分頁下加上底線</value>\n    <comment>GeneralSettings.xaml</comment>\n  </data>\n  <data name=\"Setting_About.Content\" xml:space=\"preserve\">\n    <value>關於</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_General.Content\" xml:space=\"preserve\">\n    <value>一般</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Keybindings.Content\" xml:space=\"preserve\">\n    <value>快捷鍵</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Mouse.Content\" xml:space=\"preserve\">\n    <value>滑鼠</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Profiles.Content\" xml:space=\"preserve\">\n    <value>終端機設定</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Terminal.Content\" xml:space=\"preserve\">\n    <value>終端機</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Setting_Themes.Content\" xml:space=\"preserve\">\n    <value>佈景</value>\n    <comment>SettingsPage.xaml</comment>\n  </data>\n  <data name=\"Add.Content\" xml:space=\"preserve\">\n    <value>增加</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Arguments.Header\" xml:space=\"preserve\">\n    <value>參數</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"BackgroundOpacity.Header\" xml:space=\"preserve\">\n    <value>背景不透明度</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BlinkingCursor.Header\" xml:space=\"preserve\">\n    <value>閃爍游標</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"BoldText.Header\" xml:space=\"preserve\">\n    <value>字體加粗</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CancelAppBarButton.Label\" xml:space=\"preserve\">\n    <value>取消</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CheckingUpdates.Text\" xml:space=\"preserve\">\n    <value>正在檢查更新...</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CheckUpdates.Label\" xml:space=\"preserve\">\n    <value>檢查更新</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"ClickColorEdit.Text\" xml:space=\"preserve\">\n    <value>點擊顏色編輯</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CloneAppBarButton.Label\" xml:space=\"preserve\">\n    <value>複製</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ColorPalette.Text\" xml:space=\"preserve\">\n    <value>調色盤</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"CopiedNotification.Header\" xml:space=\"preserve\">\n    <value>文字複製通知</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CopyOnSelect.Header\" xml:space=\"preserve\">\n    <value>複製選取處</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"CreateProfile.Text\" xml:space=\"preserve\">\n    <value>新增</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"CurrentVersion.Text\" xml:space=\"preserve\">\n    <value>目前版本</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"CursorBar.Content\" xml:space=\"preserve\">\n    <value>直線段</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorBlock.Content\" xml:space=\"preserve\">\n    <value>方塊</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorStyle.Text\" xml:space=\"preserve\">\n    <value>游標樣式</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"CursorUnderline.Content\" xml:space=\"preserve\">\n    <value>底線</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"DeleteAppBarButton.Label\" xml:space=\"preserve\">\n    <value>刪除</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.DoNotModify\" xml:space=\"preserve\">\n    <value>不要修改行末</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"EditAppBarButton.Label\" xml:space=\"preserve\">\n    <value>編輯</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ExportAppBarButton.Label\" xml:space=\"preserve\">\n    <value>匯出</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"FontFamily.Header\" xml:space=\"preserve\">\n    <value>字體</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"FontSize.Header\" xml:space=\"preserve\">\n    <value>字體大小</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ImportTheme.Text\" xml:space=\"preserve\">\n    <value>匯入</value>\n    <comment>ThemeSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut.Header\" xml:space=\"preserve\">\n    <value>快捷鍵</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"KeyboardShortcut1.Text\" xml:space=\"preserve\">\n    <value>快捷鍵</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LatestVersion.Text\" xml:space=\"preserve\">\n    <value>最新版本</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"License.Text\" xml:space=\"preserve\">\n    <value>使用授權</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"LineEndingMode.Header\" xml:space=\"preserve\">\n    <value>自動轉換行末</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingModeOnPaste.Text\" xml:space=\"preserve\">\n    <value>自動轉換行末 (貼上時)</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"MiddleButtonAction.Text\" xml:space=\"preserve\">\n    <value>點擊滑鼠中鍵時</value>\n    <comment>MouseSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Mouse.Text\" xml:space=\"preserve\">\n    <value>滑鼠</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseContextMenu.Content\" xml:space=\"preserve\">\n    <value>打開上下文選單</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MouseNothing.Content\" xml:space=\"preserve\">\n    <value>無</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"MousePaste.Content\" xml:space=\"preserve\">\n    <value>貼上</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"NewTheme.Text\" xml:space=\"preserve\">\n    <value>新增</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"Padding.Header\" xml:space=\"preserve\">\n    <value>內邊距</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ProfileName.Header\" xml:space=\"preserve\">\n    <value>名稱</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Profiles.Text\" xml:space=\"preserve\">\n    <value>設定</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ProfileTheme.Header\" xml:space=\"preserve\">\n    <value>主題</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ReleaseNotes.Text\" xml:space=\"preserve\">\n    <value>發布版本說明</value>\n    <comment>About.xaml</comment>\n  </data>\n  <data name=\"RightButtonAction.Text\" xml:space=\"preserve\">\n    <value>點擊滑鼠右鍵時</value>\n    <comment>MouseSettings.xaml</comment>\n  </data>\n  <data name=\"SaveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>儲存</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbackLimit.Header\" xml:space=\"preserve\">\n    <value>回滾限制</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarAuto.Content\" xml:space=\"preserve\">\n    <value>自動隱藏</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollBarHidden.Content\" xml:space=\"preserve\">\n    <value>隱藏</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"ScrollbarStyle.Text\" xml:space=\"preserve\">\n    <value>捲軸樣式</value>\n    <comment>TerminalSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ScrollBarVisible.Content\" xml:space=\"preserve\">\n    <value>可視</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"SetActiveAppBarButton.Label\" xml:space=\"preserve\">\n    <value>啟用</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"SetDefaultAppBarButton.Label\" xml:space=\"preserve\">\n    <value>預設設定</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"ShellLocation.Header\" xml:space=\"preserve\">\n    <value>Shell 執行路徑</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"TabColor.Header\" xml:space=\"preserve\">\n    <value>分頁顏色</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"Terminal.Text\" xml:space=\"preserve\">\n    <value>終端機</value>\n    <comment>TerminalSettings.xaml</comment>\n  </data>\n  <data name=\"Theme.Text\" xml:space=\"preserve\">\n    <value>佈景：</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeAuthor.Header\" xml:space=\"preserve\">\n    <value>作者</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"ThemeName.Header\" xml:space=\"preserve\">\n    <value>名稱</value>\n    <comment>ThemeSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCR\" xml:space=\"preserve\">\n    <value>將行末轉為 CR</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToCRLF\" xml:space=\"preserve\">\n    <value>將行末轉為 CR+LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"LineEndingStyle.ToLF\" xml:space=\"preserve\">\n    <value>將行末轉為 LF</value>\n    <comment>ShellProfileSettings.xaml</comment>\n  </data>\n  <data name=\"WorkingDir.Header\" xml:space=\"preserve\">\n    <value>工作目錄</value>\n    <comment>ShellProfileSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseTab\" xml:space=\"preserve\">\n    <value>確定關閉 &quot;{0}&quot; 分頁?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmCloseWindow\" xml:space=\"preserve\">\n    <value>確定要關閉此視窗嗎?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteKeybindings\" xml:space=\"preserve\">\n    <value>確定刪除此快捷鍵?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDeleteTheme\" xml:space=\"preserve\">\n    <value>確定要刪除此佈景嗎?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmDiscardChanges\" xml:space=\"preserve\">\n    <value>確定放棄所有更改嗎?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreGeneralSettings\" xml:space=\"preserve\">\n    <value>確定還原一般設定嗎?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreKeybindings\" xml:space=\"preserve\">\n    <value>確定恢復預設的組合鍵嗎?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreMouseSettings\" xml:space=\"preserve\">\n    <value>確定要復原滑鼠設定嗎?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreProfile\" xml:space=\"preserve\">\n    <value>確定復原此設定?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ConfirmRestoreTerminalOptions\" xml:space=\"preserve\">\n    <value>確定復原預設的終端機選項嗎?</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByPolicy\" xml:space=\"preserve\">\n    <value>已被規則禁止。</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"DisabledByUser\" xml:space=\"preserve\">\n    <value>已被使用者禁止。請在工作管理員的「開機」分頁中重新啟動它。</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"EditTitleString\" xml:space=\"preserve\">\n    <value>修改標題</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"Error\" xml:space=\"preserve\">\n    <value>錯誤</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"ErrorString1\" xml:space=\"preserve\">\n    <value>操作因下列錯誤而無法完成：</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"ImportThemeFailed\" xml:space=\"preserve\">\n    <value>匯入佈景失敗</value>\n    <comment>ViewModel\nFuzzy</comment>\n  </data>\n  <data name=\"NoSuitableParserFound\" xml:space=\"preserve\">\n    <value>解析失敗</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"PleaseConfirm\" xml:space=\"preserve\">\n    <value>請確認</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"KeybindingDialogTitle.Text\" xml:space=\"preserve\">\n    <value>輸入您希望使用的快捷鍵</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>確定</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ResetBtn.Content\" xml:space=\"preserve\">\n    <value>重設</value>\n  </data>\n  <data name=\"TextCopied\" xml:space=\"preserve\">\n    <value>文字已複製</value>\n    <comment>ViewModel</comment>\n  </data>\n  <data name=\"AddAppBarButton.Label\" xml:space=\"preserve\">\n    <value>增加</value>\n    <comment>KeyBindingSettings.xaml</comment>\n  </data>\n  <data name=\"Command.ChangeTabTitle\" xml:space=\"preserve\">\n    <value>更改分頁標題</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.Clear\" xml:space=\"preserve\">\n    <value>清除</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.CloseTab\" xml:space=\"preserve\">\n    <value>關閉分頁</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Keybindings.Text\" xml:space=\"preserve\">\n    <value>快捷鍵</value>\n    <comment>KeyBindingSettings.xaml\nFuzzy</comment>\n  </data>\n  <data name=\"Delete.Content\" xml:space=\"preserve\">\n    <value>刪除</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"KeyBindingsViewEdit.Content\" xml:space=\"preserve\">\n    <value>編輯</value>\n    <comment>KeyBindingsView.xaml</comment>\n  </data>\n  <data name=\"Command.NewTab\" xml:space=\"preserve\">\n    <value>新分頁</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.NewWindow\" xml:space=\"preserve\">\n    <value>新視窗</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.NextTab\" xml:space=\"preserve\">\n    <value>下個分頁</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PasteWithoutNewlines\" xml:space=\"preserve\">\n    <value>貼上不換行</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.PreviousTab\" xml:space=\"preserve\">\n    <value>前一個分頁</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.Search\" xml:space=\"preserve\">\n    <value>搜尋</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SelectAll\" xml:space=\"preserve\">\n    <value>全選</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ShowSettings\" xml:space=\"preserve\">\n    <value>顯示設定</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm1\" xml:space=\"preserve\">\n    <value>切換至終端機1</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm2\" xml:space=\"preserve\">\n    <value>切換至終端機2</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm3\" xml:space=\"preserve\">\n    <value>切換至終端機3</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm4\" xml:space=\"preserve\">\n    <value>切換至終端機4</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm5\" xml:space=\"preserve\">\n    <value>切換至終端機5</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm6\" xml:space=\"preserve\">\n    <value>切換至終端機6</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm7\" xml:space=\"preserve\">\n    <value>切換至終端機7</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm8\" xml:space=\"preserve\">\n    <value>切換至終端機8</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.SwitchToTerm9\" xml:space=\"preserve\">\n    <value>切換至終端機9</value>\n    <comment>Command</comment>\n  </data>\n  <data name=\"Command.ToggleFullScreen\" xml:space=\"preserve\">\n    <value>全螢幕</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"Command.ToggleWindow\" xml:space=\"preserve\">\n    <value>切換視窗</value>\n    <comment>Command\nFuzzy</comment>\n  </data>\n  <data name=\"NewSshTab.Text\" xml:space=\"preserve\">\n    <value>新增遠端分頁</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshTab\" xml:space=\"preserve\">\n    <value>新 SSH 分頁</value>\n  </data>\n  <data name=\"SshInfoDialog.Title\" xml:space=\"preserve\">\n    <value>SSH 資訊</value>\n  </data>\n  <data name=\"UserTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>使用者</value>\n  </data>\n  <data name=\"HostTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>主機</value>\n  </data>\n  <data name=\"PortTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>連接埠</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"IdentityFileTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>認證檔路徑</value>\n  </data>\n  <data name=\"BrowseButton.Content\" xml:space=\"preserve\">\n    <value>瀏覽</value>\n  </data>\n  <data name=\"UseMoshCheckBox.Content\" xml:space=\"preserve\">\n    <value>使用 Mosh</value>\n  </data>\n  <data name=\"AdvancedExpander.Header\" xml:space=\"preserve\">\n    <value>進階</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MoshPorts.Text\" xml:space=\"preserve\">\n    <value>Most 連接埠：</value>\n  </data>\n  <data name=\"SaveShortcutButton.Content\" xml:space=\"preserve\">\n    <value>儲存快捷鍵</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NeedsToRestart.Text\" xml:space=\"preserve\">\n    <value>重新啟動以套用設定。</value>\n  </data>\n  <data name=\"InvalidInput\" xml:space=\"preserve\">\n    <value>無效輸入</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PortCannotBeZero\" xml:space=\"preserve\">\n    <value>埠號無法為 0。</value>\n  </data>\n  <data name=\"UserAndHostMandatory\" xml:space=\"preserve\">\n    <value>使用者名稱與主機名為必填。</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.UsernameEmpty\" xml:space=\"preserve\">\n    <value>使用者名稱不可空白。</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.HostEmpty\" xml:space=\"preserve\">\n    <value>主機名稱不可空白。</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.SshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>SSH 埠必須大於零。</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortZeroOrNegative\" xml:space=\"preserve\">\n    <value>Most 埠不可為 0。</value>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.MoshPortRangeInvalid\" xml:space=\"preserve\">\n    <value>Mosh 埠範圍無效。</value>\n  </data>\n  <data name=\"Yes.Text\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"No.Text\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"Language.Header\" xml:space=\"preserve\">\n    <value>語言</value>\n  </data>\n  <data name=\"None.Text\" xml:space=\"preserve\">\n    <value>無</value>\n  </data>\n  <data name=\"NewOutput.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>新輸出</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"ExitedWithError.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>關閉時遭遇錯誤</value>\n  </data>\n  <data name=\"ConfirmDeleteProfile\" xml:space=\"preserve\">\n    <value>確定刪除此設定?</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Command.NewSshWindow\" xml:space=\"preserve\">\n    <value>新 SSH 視窗</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Setting_SShProfiles.Content\" xml:space=\"preserve\">\n    <value>SSH 設定</value>\n  </data>\n  <data name=\"SshInfoDialog_TabColor.Text\" xml:space=\"preserve\">\n    <value>分頁顏色：</value>\n  </data>\n  <data name=\"UseConPty\" xml:space=\"preserve\">\n    <value>使用 ConPty</value>\n  </data>\n  <data name=\"Username.Header\" xml:space=\"preserve\">\n    <value>使用者名稱</value>\n  </data>\n  <data name=\"MoshPortFrom.Header\" xml:space=\"preserve\">\n    <value>從埠</value>\n  </data>\n  <data name=\"MoshPortTo.Header\" xml:space=\"preserve\">\n    <value>到埠</value>\n  </data>\n  <data name=\"MoshPortRange.Text\" xml:space=\"preserve\">\n    <value>Mosh 埠範圍</value>\n  </data>\n  <data name=\"Authenticate\" xml:space=\"preserve\">\n    <value>驗證</value>\n  </data>\n  <data name=\"SettingsExported\" xml:space=\"preserve\">\n    <value>已匯出設定至檔案</value>\n  </data>\n  <data name=\"SettingsImported\" xml:space=\"preserve\">\n    <value>已從檔案匯入設定</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"SshConnectionInfoValidationResult.IdentityFileDoesNotExist\" xml:space=\"preserve\">\n    <value>認證檔不存在</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"AutoFallbackToWindowsUsername.Header\" xml:space=\"preserve\">\n    <value>不指定使用者名稱時，使用 Windows 使用者名稱開啟 SSH URLs</value>\n  </data>\n  <data name=\"UseMoshByDefault.Header\" xml:space=\"preserve\">\n    <value>SSH 連接預設使用 Mosh</value>\n  </data>\n  <data name=\"RTrimCopiedLines.Header\" xml:space=\"preserve\">\n    <value>複製內容右端空格清空</value>\n  </data>\n  <data name=\"QuickSshDefault.Header\" xml:space=\"preserve\">\n    <value>預設使用 quick SSH</value>\n  </data>\n  <data name=\"InvalidCommand\" xml:space=\"preserve\">\n    <value>無效的指令。</value>\n  </data>\n  <data name=\"LocationCantBeEmpty\" xml:space=\"preserve\">\n    <value>地址不可為空白。</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"MuteTerminalBeeps.Header\" xml:space=\"preserve\">\n    <value>關閉終端機音效</value>\n  </data>\n  <data name=\"CommandTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>輸入指令 (例: &apos;ssh username@host&apos;)</value>\n  </data>\n  <data name=\"CommandLine.Header\" xml:space=\"preserve\">\n    <value>指令</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"UnsupportedCommand\" xml:space=\"preserve\">\n    <value>不支援的指令：</value>\n  </data>\n  <data name=\"CommandArgumentsMandatory\" xml:space=\"preserve\">\n    <value>缺少指令參數。</value>\n  </data>\n  <data name=\"QuickCommandDialog.Title\" xml:space=\"preserve\">\n    <value>快速啟動</value>\n  </data>\n  <data name=\"Command.NewCustomCommandTab\" xml:space=\"preserve\">\n    <value>快速啟動新分頁</value>\n  </data>\n  <data name=\"Command.NewCustomCommandWindow\" xml:space=\"preserve\">\n    <value>快速啟動新視窗</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"NewQuickTab.Text\" xml:space=\"preserve\">\n    <value>新的快速分頁</value>\n  </data>\n  <data name=\"FileNotFound\" xml:space=\"preserve\">\n    <value>檔案不存在：</value>\n  </data>\n  <data name=\"InvalidLink\" xml:space=\"preserve\">\n    <value>無效的連結。</value>\n  </data>\n  <data name=\"DropTabHere\" xml:space=\"preserve\">\n    <value>刪除此分頁</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseLeft.Text\" xml:space=\"preserve\">\n    <value>關閉左側分頁</value>\n  </data>\n  <data name=\"CloseOther.Text\" xml:space=\"preserve\">\n    <value>關閉其他分頁</value>\n  </data>\n  <data name=\"CloseRight.Text\" xml:space=\"preserve\">\n    <value>關閉右側分頁</value>\n  </data>\n  <data name=\"Command.DuplicateTab\" xml:space=\"preserve\">\n    <value>複製此分頁</value>\n  </data>\n  <data name=\"Duplicate.Text\" xml:space=\"preserve\">\n    <value>複製</value>\n  </data>\n  <data name=\"DuplicateEnvironmentVariable\" xml:space=\"preserve\">\n    <value>無法定義相同名稱的環境變數</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EmptyEnvironmentVariableName\" xml:space=\"preserve\">\n    <value>無法定義無名稱的環境變數</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnvironmentVariables.Text\" xml:space=\"preserve\">\n    <value>環境變數</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"CloseSearchPanel.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>關閉搜尋面板</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"FindNext.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>尋找下一筆</value>\n  </data>\n  <data name=\"FindPrevious.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>尋找上一筆</value>\n  </data>\n  <data name=\"SearchTextBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>搜尋文字</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"Search.Text\" xml:space=\"preserve\">\n    <value>搜尋</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"PrintableOutputOnly.Content\" xml:space=\"preserve\">\n    <value>只輸出可顯示的內容</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"EnableLogging.Header\" xml:space=\"preserve\">\n    <value>紀錄偵錯用的輸出內容</value>\n    <comment>Fuzzy</comment>\n  </data>\n  <data name=\"WordSeparator.Header\" xml:space=\"preserve\">\n    <value>文字分隔符號</value>\n  </data>\n  <data name=\"Recent.Text\" xml:space=\"preserve\">\n    <value>最近使用</value>\n  </data>\n  <data name=\"NewTab_Description\" xml:space=\"preserve\">\n    <value>使用預設設定開啟新分頁</value>\n  </data>\n  <data name=\"NewSshTab_Description\" xml:space=\"preserve\">\n    <value>在新分頁開啟新 SSH 或 Mosh 對談。</value>\n  </data>\n  <data name=\"NewQuickTab_Description\" xml:space=\"preserve\">\n    <value>開啟「快速啟動」對話窗並於新分頁開啟對談。</value>\n  </data>\n  <data name=\"Settings_Description\" xml:space=\"preserve\">\n    <value>打開設定視窗。</value>\n  </data>\n  <data name=\"About_Description\" xml:space=\"preserve\">\n    <value>此應用程式的基本資訊。</value>\n  </data>\n  <data name=\"Recent_Description\" xml:space=\"preserve\">\n    <value>最近開啟的對談。</value>\n  </data>\n  <data name=\"MenuItem_DefaultProfile_Description\" xml:space=\"preserve\">\n    <value>使用預設設定開啟新終端對談。</value>\n  </data>\n  <data name=\"MenuItem_Remote_Text\" xml:space=\"preserve\">\n    <value>遠端連線...</value>\n  </data>\n  <data name=\"MenuItem_Remote_Description\" xml:space=\"preserve\">\n    <value>打開對話框以啟動新的 SSH 或 Mosh 終端對談。</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Text\" xml:space=\"preserve\">\n    <value>快速啟動...</value>\n  </data>\n  <data name=\"MenuItem_QuickLaunch_Description\" xml:space=\"preserve\">\n    <value>打開「快速啟動」對話框以啟動新的終端對談</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Text\" xml:space=\"preserve\">\n    <value>新視窗</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Text\" xml:space=\"preserve\">\n    <value>新分頁</value>\n  </data>\n  <data name=\"MenuItem_NewTab_Description\" xml:space=\"preserve\">\n    <value>在新分頁開啟對談。</value>\n  </data>\n  <data name=\"MenuItem_NewWindow_Description\" xml:space=\"preserve\">\n    <value>在新視窗開啟對談。</value>\n  </data>\n  <data name=\"AppMenuType.Text\" xml:space=\"preserve\">\n    <value>應用程式目錄類型</value>\n  </data>\n  <data name=\"AppMenuType_Flat.Content\" xml:space=\"preserve\">\n    <value>扁平化，使用 「打開新終端機為」設定</value>\n  </data>\n  <data name=\"AppMenuType_Cascading.Content\" xml:space=\"preserve\">\n    <value>「新分頁」 / 「新視窗」級聯目錄</value>\n  </data>\n  <data name=\"Quit.Text\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"Quit.Description\" xml:space=\"preserve\">\n    <value>退出 Fluent Terminal</value>\n  </data>\n  <data name=\"EnabledByPolicy\" xml:space=\"preserve\">\n    <value>已被規則啟用。</value>\n  </data>\n  <data name=\"BackgroundImage.Content\" xml:space=\"preserve\">\n    <value>背景圖片</value>\n  </data>\n  <data name=\"AcrylicBackground.Header\" xml:space=\"preserve\">\n    <value>使用半透明背景</value>\n  </data>\n  <data name=\"ConfirmDeleteBackgroundImage\" xml:space=\"preserve\">\n    <value>確定刪除此背景圖片？</value>\n  </data>\n  <data name=\"Colors.Text\" xml:space=\"preserve\">\n    <value>色彩</value>\n  </data>\n  <data name=\"BrightColors.Text\" xml:space=\"preserve\">\n    <value>明亮顏色</value>\n  </data>\n  <data name=\"CopyLink\" xml:space=\"preserve\">\n    <value>複製連結</value>\n  </data>\n  <data name=\"SearchWithRegex.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>正則表示式</value>\n  </data>\n  <data name=\"SearchWholeWord.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>全字拼寫需相符</value>\n  </data>\n  <data name=\"SearchCaseSensitive.ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>大小寫需相符</value>\n  </data>\n  <data name=\"MouseCopySelectionOrPaste.Content\" xml:space=\"preserve\">\n    <value>複製所選或貼上</value>\n  </data>\n  <data name=\"UseBuffer\" xml:space=\"preserve\">\n    <value>使用智慧緩衝區</value>\n  </data>\n  <data name=\"RestartSession.Content\" xml:space=\"preserve\">\n    <value>重新啟動</value>\n  </data>\n  <data name=\"SessionDisconnected.Text\" xml:space=\"preserve\">\n    <value>連線階段已結束。</value>\n  </data>\n  <data name=\"Command.IncreaseFontSize\" xml:space=\"preserve\">\n    <value>放大字體大小</value>\n  </data>\n  <data name=\"Command.DecreaseFontSize\" xml:space=\"preserve\">\n    <value>縮小字體大小</value>\n  </data>\n  <data name=\"Command.ResetFontSize\" xml:space=\"preserve\">\n    <value>重設字體大小</value>\n  </data>\n  <data name=\"Command.ReconnectTab\" xml:space=\"preserve\">\n    <value>重新連線分頁</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.App/Styles/Custom.xaml",
    "content": "﻿<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n\n    <Thickness x:Key=\"HeaderMargin\">24,0,0,0</Thickness>\n    <Thickness x:Key=\"ContainerMargin\">24,0,24,24</Thickness>\n    <Thickness x:Key=\"ItemMargin\">0,24,0,0</Thickness>\n\n    <Style\n        x:Key=\"WindowTitleTextBlockStyle\"\n        BasedOn=\"{StaticResource CaptionTextBlockStyle}\"\n        TargetType=\"TextBlock\">\n        <Setter Property=\"Margin\" Value=\"12,0,12,0\" />\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n    </Style>\n\n    <Style x:Key=\"TitleBarButtonStyle\" TargetType=\"Button\">\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"BorderThickness\" Value=\"0\" />\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\" />\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\" />\n        <Setter Property=\"FontWeight\" Value=\"Normal\" />\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\" />\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\" />\n        <Setter Property=\"CornerRadius\" Value=\"4\" />\n        <Setter Property=\"Height\" Value=\"32\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"Button\">\n                    <Grid x:Name=\"RootGrid\" Background=\"{TemplateBinding Background}\" CornerRadius=\"{TemplateBinding CornerRadius}\">\n                        <ContentPresenter\n                            x:Name=\"ContentPresenter\"\n                            Padding=\"{TemplateBinding Padding}\"\n                            HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                            VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                            AutomationProperties.AccessibilityView=\"Raw\"\n                            BorderBrush=\"{TemplateBinding BorderBrush}\"\n                            BorderThickness=\"{TemplateBinding BorderThickness}\"\n                            Content=\"{TemplateBinding Content}\"\n                            ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                            ContentTransitions=\"{TemplateBinding ContentTransitions}\" />\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CommonStates\">\n                                <VisualState x:Name=\"Normal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"RootGrid\" Storyboard.TargetProperty=\"Background\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Transparent\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"PointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"RootGrid\" Storyboard.TargetProperty=\"Background\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemListLowColor}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Pressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"RootGrid\" Storyboard.TargetProperty=\"Background\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemListMediumColor}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style x:Key=\"TitleBarRepeatButtonStyle\" TargetType=\"RepeatButton\">\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"BorderThickness\" Value=\"0\" />\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\" />\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\" />\n        <Setter Property=\"FontWeight\" Value=\"Normal\" />\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\" />\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\" />\n        <Setter Property=\"CornerRadius\" Value=\"4\" />\n        <Setter Property=\"Height\" Value=\"32\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"RepeatButton\">\n                    <Grid x:Name=\"RootGrid\" Background=\"{TemplateBinding Background}\" CornerRadius=\"{TemplateBinding CornerRadius}\">\n                        <ContentPresenter\n                            x:Name=\"ContentPresenter\"\n                            Padding=\"{TemplateBinding Padding}\"\n                            HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                            VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                            AutomationProperties.AccessibilityView=\"Raw\"\n                            BorderBrush=\"{TemplateBinding BorderBrush}\"\n                            BorderThickness=\"{TemplateBinding BorderThickness}\"\n                            Content=\"{TemplateBinding Content}\"\n                            ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                            ContentTransitions=\"{TemplateBinding ContentTransitions}\" />\n                        <VisualStateManager.VisualStateGroups>\n                            <VisualStateGroup x:Name=\"CommonStates\">\n                                <VisualState x:Name=\"Normal\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"RootGrid\" Storyboard.TargetProperty=\"Background\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"Transparent\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"PointerOver\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"RootGrid\" Storyboard.TargetProperty=\"Background\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemListLowColor}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Pressed\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"RootGrid\" Storyboard.TargetProperty=\"Background\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemListMediumColor}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                                <VisualState x:Name=\"Disabled\">\n                                    <Storyboard>\n                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"Foreground\">\n                                            <DiscreteObjectKeyFrame KeyTime=\"0\" Value=\"{ThemeResource SystemControlDisabledBaseLowBrush}\" />\n                                        </ObjectAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </VisualState>\n                            </VisualStateGroup>\n                        </VisualStateManager.VisualStateGroups>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style x:Key=\"ColorPreviewButtonStyle\" TargetType=\"Button\">\n        <Setter Property=\"Width\" Value=\"24\" />\n        <Setter Property=\"Height\" Value=\"24\" />\n        <Setter Property=\"BorderThickness\" Value=\"0\" />\n        <Setter Property=\"HorizontalAlignment\" Value=\"Left\" />\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\" />\n        <Setter Property=\"FontWeight\" Value=\"Normal\" />\n        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\" />\n        <Setter Property=\"UseSystemFocusVisuals\" Value=\"True\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"Button\">\n                    <Grid x:Name=\"RootGrid\" Background=\"{TemplateBinding Background}\">\n                        <ContentPresenter\n                            x:Name=\"ContentPresenter\"\n                            Padding=\"{TemplateBinding Padding}\"\n                            HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                            VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                            AutomationProperties.AccessibilityView=\"Raw\"\n                            BorderBrush=\"{TemplateBinding BorderBrush}\"\n                            BorderThickness=\"{TemplateBinding BorderThickness}\"\n                            Content=\"{TemplateBinding Content}\"\n                            ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n                            ContentTransitions=\"{TemplateBinding ContentTransitions}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n</ResourceDictionary>"
  },
  {
    "path": "FluentTerminal.App/Utilities/ColorExtensions.cs",
    "content": "﻿using Microsoft.Toolkit.Uwp.Helpers;\nusing System.Globalization;\nusing Windows.UI;\n\nnamespace FluentTerminal.App.Utilities\n{\n    public static class ColorExtensions\n    {\n        public static string ToColorString(this Color color, bool allowTransparency)\n        {\n            if (allowTransparency)\n            {\n                return $\"rgba({color.R:G}, {color.G:G}, {color.B:G}, {ToDoubleString(color.A)})\";\n            }\n            else\n            {\n                return $\"#{color.R:X2}{color.G:X2}{color.B:X2}\";\n            }\n        }\n\n        private static string ToDoubleString(byte alpha)\n        {\n            return (alpha / 256.0).ToString(CultureInfo.InvariantCulture);\n        }\n\n        public static Color FromString(this string colorString)\n        {\n            if (colorString.Contains(\"rgba(\"))\n            {\n                colorString = colorString.Replace(\"rgba(\", string.Empty);\n                colorString = colorString.Replace(\")\", string.Empty);\n\n                var parts = colorString.Split(\", \");\n\n                return new Color\n                {\n                    A = (byte)(int)(double.Parse(parts[3], CultureInfo.InvariantCulture) * 256.0),\n                    R = byte.Parse(parts[0]),\n                    G = byte.Parse(parts[1]),\n                    B = byte.Parse(parts[2])\n                };\n            }\n            else\n            {\n                return colorString.ToColor();\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Utilities/ContrastHelper.cs",
    "content": "﻿using Microsoft.Toolkit.Uwp.Helpers;\nusing Windows.UI;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\n\nnamespace FluentTerminal.App.Utilities\n{\n    public static class ContrastHelper\n    {\n        public static ElementTheme GetIdealThemeForBackgroundColor(string color)\n        {\n            return GetIdealThemeForBackgroundColor(color.ToColor());\n        }\n\n        public static ElementTheme GetIdealThemeForBackgroundColor(Color color)\n        {\n            if (((color.R * 0.299) + (color.G * 0.587) + (color.B * 0.114)) > 186)\n            {\n                return ElementTheme.Light;\n            }\n            else\n            {\n                return ElementTheme.Dark;\n            }\n        }\n\n        public static void SetTitleBarButtonsForTheme(ElementTheme theme)\n        {\n            var titleBar = ApplicationView.GetForCurrentView().TitleBar;\n\n            titleBar.ButtonBackgroundColor = Colors.Transparent;\n            titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;\n\n            titleBar.ButtonForegroundColor = GetColor(\"SystemBaseHighColor\", theme);\n            titleBar.ButtonInactiveForegroundColor = GetColor(\"SystemBaseHighColor\", theme);\n            titleBar.ButtonHoverForegroundColor = GetColor(\"SystemBaseHighColor\", theme);\n            titleBar.ButtonPressedForegroundColor = GetColor(\"SystemBaseHighColor\", theme);\n\n            titleBar.ButtonHoverBackgroundColor = GetColor(\"SystemListLowColor\", theme);\n            titleBar.ButtonPressedBackgroundColor = GetColor(\"SystemListMediumColor\", theme);\n        }\n\n        public static Color? GetColor(string name, ElementTheme theme)\n        {\n            if (theme == ElementTheme.Light)\n            {\n                switch (name)\n                {\n                    case \"SystemBaseHighColor\":\n                        return new Color { A = 0xFF, R = 0x00, G = 0x00, B = 0x00 };\n\n                    case \"SystemListLowColor\":\n                        return new Color { A = 0x19, R = 0x00, G = 0x00, B = 0x00 };\n\n                    case \"SystemListMediumColor\":\n                        return new Color { A = 0x33, R = 0x00, G = 0x00, B = 0x00 };\n\n                    default:\n                        return null;\n                }\n            }\n            else\n            {\n                switch (name)\n                {\n                    case \"SystemBaseHighColor\":\n                        return new Color { A = 0xFF, R = 0xFF, G = 0xFF, B = 0xFF };\n\n                    case \"SystemListLowColor\":\n                        return new Color { A = 0x19, R = 0xFF, G = 0xFF, B = 0xFF };\n\n                    case \"SystemListMediumColor\":\n                        return new Color { A = 0x33, R = 0xFF, G = 0xFF, B = 0xFF };\n\n                    default:\n                        return null;\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Utilities/DelayedAction.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\n\nnamespace FluentTerminal.App.Utilities\n{\n    public class DelayedAction<T> : IDisposable\n    {\n        private const double DelayThresholdMilliseconds = 5;\n\n        private readonly object _lock = new object();\n\n        private readonly Action<T> _action;\n        private readonly int _delayMilliseconds;\n        private readonly CoreDispatcher _dispatcher;\n\n        private TaskCompletionSource<object> _tcs;\n        private CancellationTokenSource _cts;\n        private DateTime _executionTime;\n        private T _param;\n\n        public DelayedAction(Action<T> action, int delayMilliseconds, CoreDispatcher dispatcher = null)\n        {\n            _action = action;\n            _delayMilliseconds = delayMilliseconds;\n            _dispatcher = dispatcher;\n        }\n\n        public Task InvokeAsync(T parameter)\n        {\n            lock (_lock)\n            {\n                // Canceling previous (if any)\n                _tcs?.TrySetCanceled();\n\n                // Scheduling new\n                _tcs = new TaskCompletionSource<object>();\n                _param = parameter;\n                _executionTime = DateTime.UtcNow.AddMilliseconds(_delayMilliseconds);\n\n                // Launching the loop if not already launched\n                if (_cts == null)\n                {\n                    _cts = new CancellationTokenSource();\n\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = Loop();\n                }\n\n                return _tcs.Task;\n            }\n        }\n\n        private async Task Loop()\n        {\n            while (true)\n            {\n                TimeSpan delay;\n                var param = default(T);\n                CancellationTokenSource cts;\n                TaskCompletionSource<object> tcs = null;\n\n                lock (_lock)\n                {\n                    cts = _cts;\n\n                    if (cts?.IsCancellationRequested ?? true)\n                    {\n                        _tcs?.TrySetCanceled();\n                        _tcs = null;\n                        return;\n                    }\n\n                    delay = _executionTime.Subtract(DateTime.UtcNow);\n\n                    // To avoid waiting for only few milliseconds we're using some threshold\n                    if (delay.TotalMilliseconds < DelayThresholdMilliseconds)\n                    {\n                        param = _param;\n\n                        _cts?.Dispose();\n                        _cts = cts = null;\n                        tcs = _tcs;\n                        _tcs = null;\n                    }\n                }\n\n                if (cts == null)\n                {\n                    if (_dispatcher == null)\n                    {\n                        _action(param);\n                    }\n                    else\n                    {\n                        await _dispatcher.ExecuteAsync(() => _action(param)).ConfigureAwait(false);\n                    }\n\n                    tcs?.TrySetResult(null);\n\n                    return;\n                }\n\n                try\n                {\n                    await Task.Delay(delay, cts.Token).ConfigureAwait(false);\n                }\n                catch\n                {\n                    // Canceled\n                    break;\n                }\n            }\n        }\n\n        public void Cancel()\n        {\n            lock (_lock)\n            {\n                try\n                {\n                    _cts?.Cancel();\n                }\n                catch\n                {\n                    // ignored\n                }\n\n                _cts?.Dispose();\n                _cts = null;\n\n                _tcs?.TrySetCanceled();\n                _tcs = null;\n            }\n        }\n\n        public void Dispose() => Cancel();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Utilities/DispatcherExtensions.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\n\nnamespace FluentTerminal.App.Utilities\n{\n    internal static class DispatcherExtensions\n    {\n        internal static Task ExecuteAsync(this CoreDispatcher dispatcher, Action action,\n            CoreDispatcherPriority priority = CoreDispatcherPriority.Normal, bool enforceNewSchedule = false)\n        {\n            if (enforceNewSchedule || !dispatcher.HasThreadAccess)\n            {\n                return dispatcher.RunAsync(priority, () => action()).AsTask();\n            }\n\n            action();\n\n            return Task.CompletedTask;\n        }\n\n        internal static Task<T> ExecuteAsync<T>(this CoreDispatcher dispatcher, Func<T> func,\n            CoreDispatcherPriority priority = CoreDispatcherPriority.Normal, bool enforceNewSchedule = false)\n        {\n            if (!enforceNewSchedule && dispatcher.HasThreadAccess)\n            {\n                return Task.FromResult(func());\n            }\n\n            var tcs = new TaskCompletionSource<T>();\n\n            // ReSharper disable once AssignmentIsFullyDiscarded\n            _ = dispatcher.RunAsync(priority, () =>\n            {\n                T val;\n\n                try\n                {\n                    val = func();\n                }\n                catch (Exception e)\n                {\n                    tcs.TrySetException(e);\n\n                    return;\n                }\n\n                tcs.TrySetResult(val);\n            });\n\n            return tcs.Task;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Utilities/InteractiveSurface.cs",
    "content": "﻿using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Input;\n\nnamespace FluentTerminal.App.Utilities\n{\n    class InteractiveSurface : ContentControl\n    {\n        public static readonly DependencyProperty HoveredProperty =\n            DependencyProperty.Register(nameof(Hovered), typeof(bool), typeof(InteractiveSurface), new PropertyMetadata(false));\n\n        public bool Hovered\n        {\n            get => (bool)GetValue(HoveredProperty);\n            set => SetValue(HoveredProperty, value);\n        }\n\n        protected override void OnPointerEntered(PointerRoutedEventArgs e)\n        {\n            base.OnPointerEntered(e);\n            Hovered = true;\n        }\n\n        protected override void OnPointerCanceled(PointerRoutedEventArgs e)\n        {\n            base.OnPointerCanceled(e);\n            Hovered = false;\n        }\n\n        protected override void OnPointerExited(PointerRoutedEventArgs e)\n        {\n            base.OnPointerExited(e);\n            Hovered = false;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Utilities/JumpListHelper.cs",
    "content": "﻿using System;\nusing Windows.UI.StartScreen;\nusing System.Threading.Tasks;\nusing FluentTerminal.App.Services;\n\nnamespace FluentTerminal.App.Utilities\n{\n    public static class JumpListHelper\n    {\n        public const string ShellProfileFlag = \"JumpList-ShellProfile-\";\n\n        public static async Task UpdateAsync(ISettingsService settingsService)\n        {\n            if (!JumpList.IsSupported())\n            {\n                return;\n            }\n\n            try\n            {\n                var jumpList = await JumpList.LoadCurrentAsync();\n                jumpList.Items.Clear();\n                foreach (var profile in settingsService.GetAllProfiles())\n                {\n                    var item = JumpListItem.CreateWithArguments(ShellProfileFlag + profile.Id, profile.Name);\n                    item.Description = profile.Location;\n                    jumpList.Items.Add(item);\n                }\n                await jumpList.SaveAsync();\n            }\n            catch (Exception e)\n            {\n                Logger.Instance.Error(e, \"JumpList Update Exception\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/CommandItemViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Documents;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class CommandItemViewModel : ObservableObject\n    {\n        #region Fields\n\n        private readonly string[] _commandWords;\n\n        private readonly int[] _commandWordIndices;\n\n        private string _lastFilter;\n\n        private List<string> _lastMatches;\n\n        private bool _lastMatchesStartsBold;\n\n        #endregion Fields\n\n        #region Properties\n\n        public ExecutedCommand ExecutedCommand { get; }\n\n        public string SimpleText { get; }\n\n        private bool _isMatch = true;\n\n        public bool IsMatch\n        {\n            get => _isMatch;\n            private set => SetProperty(ref _isMatch, value);\n        }\n\n        private RichTextBlock _richTextBlock;\n\n        public RichTextBlock RichTextBlock\n        {\n            get => _richTextBlock;\n            private set\n            {\n                if (SetProperty(ref _richTextBlock, value))\n                {\n                    IsMatch = value != null;\n                }\n            }\n        }\n\n        #endregion Properties\n\n        #region Constructor\n\n        public CommandItemViewModel(ExecutedCommand command)\n        {\n            if (string.IsNullOrEmpty(command.Value))\n            {\n                throw new ArgumentException($\"{nameof(ExecutedCommand.Value)} property is null or empty.\",\n                    nameof(command));\n            }\n\n            ExecutedCommand = command;\n\n            SimpleText = command.Value.Trim();\n\n            _commandWords = SimpleText.SplitWords().Select(w => w.ToLowerInvariant()).ToArray();\n\n            _commandWordIndices = new int[_commandWords.Length];\n\n            var idx = 0;\n\n            for (var i = 0; i < _commandWords.Length; i++)\n            {\n                var word = _commandWords[i];\n\n                idx = SimpleText.IndexOf(word, idx, StringComparison.OrdinalIgnoreCase);\n\n                _commandWordIndices[i] = idx;\n\n                idx += word.Length;\n            }\n\n            _lastMatches = new List<string> {SimpleText};\n\n            CalculateMatchPrivate(null);\n\n            ShowMatch(null, null);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        internal void CalculateMatch(string trimmedFilter, string[] lowercaseFilterWords)\n        {\n            if (!trimmedFilter.NullableEqualTo(_lastFilter))\n            {\n                try\n                {\n                    CalculateMatchPrivate(lowercaseFilterWords);\n\n                    _lastFilter = trimmedFilter;\n                }\n                catch\n                {\n                    // ignored\n                }\n            }\n        }\n\n        /// <summary>\n        /// The purpose of this method is to find matches between filter words (<paramref name=\"lowercaseFilterWords\"/>),\n        /// and the command words (<see cref=\"_commandWords\"/>). I'm aware that the code is quite confusing, but it kinda\n        /// has to be...\n        /// </summary>\n        private void CalculateMatchPrivate(string[] lowercaseFilterWords)\n        {\n            if (lowercaseFilterWords == null || lowercaseFilterWords.Length < 1)\n            {\n                _lastMatchesStartsBold = false;\n\n                _lastMatches = new List<string> { SimpleText };\n\n                return;\n            }\n\n            var matchedPairs = new List<Tuple<int, int, int, int>>();\n            var multiOptionPairs = new Dictionary<int, List<Tuple<int, int, int, int>>>();\n\n            for (var i = 0; i < lowercaseFilterWords.Length; i++)\n            {\n                var word = lowercaseFilterWords[i];\n\n                Tuple<int, int, int, int> singleMatch = null;\n                List<Tuple<int, int, int, int>> multiMatches = null;\n\n                for (var j = 0; j < _commandWords.Length; j++)\n                {\n                    if (matchedPairs.Any(p => p.Item1 == j))\n                    {\n                        // The word is occupied\n                        continue;\n                    }\n\n                    var idx = _commandWords[j].IndexOf(word, StringComparison.Ordinal);\n\n                    if (idx < 0)\n                    {\n                        continue;\n                    }\n\n                    var match = Tuple.Create(j, i, idx, word.Length);\n\n                    if (singleMatch == null)\n                    {\n                        singleMatch = match;\n                    }\n                    else if (multiMatches == null)\n                    {\n                        multiMatches = new List<Tuple<int, int, int, int>> {singleMatch, match};\n                    }\n                    else\n                    {\n                        multiMatches.Add(match);\n                    }\n                }\n\n                if (singleMatch == null)\n                {\n                    _lastMatchesStartsBold = false;\n                    _lastMatches = null;\n\n                    return;\n                }\n\n                if (multiMatches == null)\n                {\n                    matchedPairs.Add(singleMatch);\n\n                    var toRemove = multiOptionPairs.Where(kvp =>\n                        kvp.Value.RemoveAll(p => p.Item1 == singleMatch.Item1) > 0 && kvp.Value.Count == 1).ToList();\n\n                    foreach (var remove in toRemove)\n                    {\n                        var newSingle = remove.Value[0];\n\n                        if (matchedPairs.Any(p => p.Item1 == newSingle.Item1))\n                        {\n                            _lastMatchesStartsBold = false;\n                            _lastMatches = null;\n\n                            return;\n                        }\n\n                        matchedPairs.Add(newSingle);\n\n                        multiOptionPairs.Remove(remove.Key);\n                    }\n                }\n                else\n                {\n                    multiOptionPairs.Add(i, multiMatches);\n                }\n            }\n\n            if (multiOptionPairs.Any())\n            {\n                var byCommandWord = multiOptionPairs.SelectMany(kvp => kvp.Value).GroupBy(p => p.Item1)\n                    .Select(g => g.ToList()).ToList();\n\n                var newSingles = byCommandWord.Where(l => l.Count == 1).Select(l => l[0]).ToList();\n\n                byCommandWord.RemoveAll(l => l.Count < 2);\n\n                while (newSingles.Any())\n                {\n                    matchedPairs.AddRange(newSingles);\n\n                    newSingles.Clear();\n\n                    for (var i = 0; i < byCommandWord.Count; i++)\n                    {\n                        var list = byCommandWord[i];\n\n                        var unsolvedWords = list.Where(p => newSingles.All(s => s.Item2 != p.Item2)).ToList();\n\n                        if (unsolvedWords.Count < 2)\n                        {\n                            newSingles.Add(unsolvedWords.FirstOrDefault() ?? list.First());\n\n                            byCommandWord.RemoveAt(i);\n\n                            i--;\n                        }\n                        else if (unsolvedWords.Count < list.Count)\n                        {\n                            byCommandWord[i] = unsolvedWords;\n                        }\n                    }\n                }\n\n                if (byCommandWord.Any())\n                {\n                    newSingles = Flatten(byCommandWord);\n\n                    if (newSingles == null)\n                    {\n                        _lastMatchesStartsBold = false;\n                        _lastMatches = null;\n\n                        return;\n                    }\n\n                    matchedPairs.AddRange(newSingles);\n                }\n            }\n\n            var matches = new List<string>();\n\n            var next = 0;\n\n            var lastAddedBold = false;\n\n            foreach (var match in matchedPairs.OrderBy(p => p.Item1))\n            {\n                var start = _commandWordIndices[match.Item1] + match.Item3;\n\n                if (next == 0)\n                {\n                    _lastMatchesStartsBold = start == 0;\n                }\n\n                if (start > next)\n                {\n                    var regular = SimpleText.Substring(next, start - next);\n\n                    if (string.IsNullOrWhiteSpace(regular))\n                    {\n                        matches[matches.Count - 1] += regular;\n                    }\n                    else\n                    {\n                        matches.Add(regular);\n\n                        lastAddedBold = false;\n                    }\n                }\n\n                var bold = SimpleText.Substring(start, match.Item4);\n\n                if (lastAddedBold)\n                {\n                    matches[matches.Count - 1] += bold;\n                }\n                else\n                {\n                    matches.Add(bold);\n\n                    lastAddedBold = true;\n                }\n\n                next = start + match.Item4;\n            }\n\n            if (next < SimpleText.Length)\n            {\n                matches.Add(SimpleText.Substring(next));\n            }\n\n            _lastMatches = matches;\n        }\n\n        private List<Tuple<int, int, int, int>> Flatten(List<List<Tuple<int, int, int, int>>> multi,\n            List<Tuple<int, int, int, int>> previous = null)\n        {\n            if (previous == null)\n            {\n                previous = new List<Tuple<int, int, int, int>>();\n            }\n            else if (previous.Count == multi.Count)\n            {\n                return previous;\n            }\n\n            var unsolved = multi[previous.Count].Where(p => previous.All(prev => prev.Item2 != p.Item2)).ToList();\n\n            if (unsolved.Count < 2)\n            {\n                previous.Add(unsolved.FirstOrDefault() ?? multi[previous.Count].First());\n\n                return Flatten(multi, previous);\n            }\n\n            foreach (var pair in unsolved)\n            {\n                previous.Add(pair);\n\n                var result = Flatten(multi, previous);\n\n                if (result != null)\n                {\n                    return result;\n                }\n\n                previous.Remove(pair);\n            }\n\n            return null;\n        }\n\n        public void ShowMatch(string trimmedLowercaseFilter, string[] lowercaseFilterWords)\n        {\n            CalculateMatch(trimmedLowercaseFilter, lowercaseFilterWords);\n\n            if (!(_lastMatches?.Any() ?? false))\n            {\n                RichTextBlock = null;\n            }\n            else\n            {\n                var rtb = new RichTextBlock();\n\n                rtb.Blocks.Add(GetBlock());\n\n                RichTextBlock = rtb;\n            }\n        }\n\n        private Block GetBlock()\n        {\n            var p = new Paragraph();\n\n            var isBold = _lastMatchesStartsBold;\n\n            foreach (var part in _lastMatches)\n            {\n                var run = new Run { Text = part };\n\n                if (isBold)\n                {\n                    var bold = new Bold();\n\n                    bold.Inlines.Add(run);\n\n                    p.Inlines.Add(bold);\n                }\n                else\n                {\n                    p.Inlines.Add(run);\n                }\n\n                isBold = !isBold;\n            }\n\n            return p;\n        }\n\n        public override string ToString()\n        {\n            return ExecutedCommand.Value;\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/CommandProfileProviderViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.IO;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing System.Web;\nusing Windows.Foundation.Metadata;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class CommandProfileProviderViewModel : ProfileProviderViewModelBase\n    {\n        #region Static\n\n        private static readonly Regex WhiteSpaceRx = new Regex(@\"\\s\", RegexOptions.Compiled);\n\n        private static string ExtractCommandAndArgs(string commandAndArgs, out string args)\n        {\n            args = null;\n\n            commandAndArgs = commandAndArgs?.Trim();\n\n            if (string.IsNullOrEmpty(commandAndArgs)) return commandAndArgs;\n\n            switch (commandAndArgs[0])\n            {\n                case '\\'':\n                case '\"':\n\n                    for (var i = 1; i < commandAndArgs.Length; ++i)\n                    {\n                        if (commandAndArgs[0] == commandAndArgs[i])\n                        {\n                            args = commandAndArgs.Length > i + 1\n                                ? commandAndArgs.Substring(i + 1).Trim()\n                                : string.Empty;\n\n                            return commandAndArgs.Substring(1, i - 1).Trim();\n                        }\n                    }\n\n                    return commandAndArgs;\n\n                default:\n\n                    var match = WhiteSpaceRx.Match(commandAndArgs);\n\n                    if (match.Success)\n                    {\n                        args = commandAndArgs.Substring(match.Index).Trim();\n\n                        return commandAndArgs.Substring(0, match.Index).Trim();\n                    }\n\n                    return commandAndArgs;\n            }\n        }\n\n        #endregion Static\n\n        #region Fields\n\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly ICommandHistoryService _historyService;\n\n        private readonly List<CommandItemViewModel> _allCommands;\n        private readonly Lazy<List<ShellProfile>> _allProfiles;\n\n        private string _processedFilter;\n\n        private string _scheduledFilter;\n\n        private readonly object _filteringLock = new object();\n\n        private bool _filterLoopRunning;\n\n        #endregion Fields\n\n        #region Properties\n\n        private string _command;\n\n        public string Command\n        {\n            get => _command;\n            set => SetProperty(ref _command, value);\n        }\n\n        private ObservableCollection<CommandItemViewModel> _commands;\n\n        public ObservableCollection<CommandItemViewModel> Commands\n        {\n            get => _commands;\n            private set => SetProperty(ref _commands, value);\n        }\n\n        #endregion Properties\n\n        #region Constructor\n\n        public CommandProfileProviderViewModel(ISettingsService settingsService, IApplicationView applicationView,\n            ITrayProcessCommunicationService trayProcessCommunicationService, ICommandHistoryService historyService,\n            ShellProfile original = null) : base(settingsService, applicationView, false,\n            original ?? new ShellProfile\n            {\n                UseConPty = settingsService.GetApplicationSettings().UseConPty &&\n                            ApiInformation.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 7)\n            })\n        {\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _historyService = historyService;\n\n            _allProfiles = new Lazy<List<ShellProfile>>(() =>\n                SettingsService.GetSshProfiles().Union(SettingsService.GetShellProfiles()).ToList());\n\n            _allCommands = _historyService\n                .GetHistoryMostUsedFirst(true, profilesProvider: () => _allProfiles.Value.ToList())\n                .Select(c => new CommandItemViewModel(c)).ToList();\n\n            Commands = new ObservableCollection<CommandItemViewModel>(_allCommands);\n\n            Initialize(Model);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        // Fills the view model properties from the input sshProfile\n        private void Initialize(ShellProfile profile)\n        {\n            Command = profile.Name;\n        }\n\n        protected override void LoadFromProfile(ShellProfile profile)\n        {\n            base.LoadFromProfile(profile);\n\n            Initialize(profile);\n        }\n\n        protected override async Task CopyToProfileAsync(ShellProfile profile)\n        {\n            await base.CopyToProfileAsync(profile).ConfigureAwait(false);\n\n            var command = _command?.Trim();\n\n            if (string.IsNullOrEmpty(command))\n            {\n                profile.Location = null;\n                profile.Arguments = null;\n\n                profile.Name = null;\n\n                return;\n            }\n\n            var existingProfile =\n                _allProfiles.Value.FirstOrDefault(p =>\n                    string.Equals(p.Name, command, StringComparison.OrdinalIgnoreCase));\n\n            if (existingProfile != null)\n            {\n                profile.Name = existingProfile.Name;\n                profile.Id = existingProfile.Id;\n                profile.PreInstalled = existingProfile.PreInstalled;\n                profile.Location = existingProfile.Location;\n                profile.Arguments = existingProfile.Arguments;\n                profile.WorkingDirectory = existingProfile.WorkingDirectory;\n\n                profile.EnvironmentVariables.Clear();\n\n                foreach (var kvp in existingProfile.EnvironmentVariables)\n                {\n                    profile.EnvironmentVariables.Add(kvp.Key, kvp.Value);\n                }\n\n                Command = existingProfile.Name;\n\n                return;\n            }\n\n            var cmd = ExtractCommandAndArgs(command, out var args);\n\n            if (cmd.Equals(Constants.MoshCommandName, StringComparison.OrdinalIgnoreCase) ||\n                cmd.Equals($\"{Constants.MoshCommandName}.exe\", StringComparison.OrdinalIgnoreCase) ||\n                cmd.Contains(Path.DirectorySeparatorChar))\n            {\n                profile.Location = cmd;\n            }\n            else\n            {\n                profile.Location =\n                    await _trayProcessCommunicationService.GetCommandPathAsync(cmd).ConfigureAwait(false);\n            }\n\n            profile.Arguments = args;\n\n            profile.Name = command;\n        }\n\n        public override async Task<string> ValidateAsync()\n        {\n            var error = await base.ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return error;\n            }\n\n            var command = _command?.Trim() ?? string.Empty;\n\n            if (!string.IsNullOrEmpty(command) &&\n                _allProfiles.Value.Any(p => string.Equals(p.Name, command, StringComparison.OrdinalIgnoreCase)))\n            {\n                // It's a saved profile\n                return null;\n            }\n\n            command = ExtractCommandAndArgs(command, out var args);\n\n            if (command.Equals(Constants.MoshCommandName, StringComparison.OrdinalIgnoreCase) ||\n                command.Equals($\"{Constants.MoshCommandName}.exe\", StringComparison.OrdinalIgnoreCase) ||\n                command.Equals(Constants.SshCommandName, StringComparison.OrdinalIgnoreCase) ||\n                command.Equals($\"{Constants.SshCommandName}.exe\", StringComparison.OrdinalIgnoreCase))\n            {\n                return string.IsNullOrEmpty(args)\n                    ? I18N.TranslateWithFallback(\"CommandArgumentsMandatory\", \"Command arguments are missing.\")\n                    : null;\n            }\n\n            if (command.Contains(Path.DirectorySeparatorChar))\n            {\n                if (await _trayProcessCommunicationService.CheckFileExistsAsync(command).ConfigureAwait(false))\n                {\n                    return null;\n                }\n\n                return $\"{I18N.TranslateWithFallback(\"FileNotFound\", \"File not found:\")} '{command}'\";\n            }\n\n            try\n            {\n                await _trayProcessCommunicationService.GetCommandPathAsync(command).ConfigureAwait(false);\n            }\n            catch (Exception e)\n            {\n                return\n                    $\"{I18N.TranslateWithFallback(\"UnsupportedCommand\", \"Unsupported command:\")} '{command}'. {e.Message}\";\n            }\n\n            return null;\n        }\n\n        public override bool HasChanges()\n        {\n            return base.HasChanges() || !_command.NullableEqualTo(Model.Name);\n        }\n\n        public void SetProfile(ShellProfile profile)\n        {\n            Model = profile;\n\n            LoadFromProfile(Model);\n        }\n\n        public void SetFilter(string filter)\n        {\n            filter = filter?.Trim().ToLowerInvariant() ?? string.Empty;\n\n            lock (_filteringLock)\n            {\n                _scheduledFilter = filter;\n\n                if (!_filterLoopRunning)\n                {\n                    _filterLoopRunning = true;\n\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = FilteringLoop();\n                }\n            }\n        }\n\n        private async Task FilteringLoop()\n        {\n            while (true)\n            {\n                string filter;\n                bool containsPrevious;\n\n                lock (_filteringLock)\n                {\n                    filter = _scheduledFilter;\n\n                    _scheduledFilter = null;\n\n                    if (filter == null || filter.NullableEqualTo(_processedFilter))\n                    {\n                        _filterLoopRunning = false;\n\n                        return;\n                    }\n\n                    containsPrevious = !string.IsNullOrEmpty(_processedFilter) &&\n                                       filter.Contains(_processedFilter, StringComparison.Ordinal);\n\n                    _processedFilter = filter;\n                }\n\n                try\n                {\n                    await SetFilterAsync(filter, containsPrevious).ConfigureAwait(false);\n                }\n                catch\n                {\n                    // ignored\n                }\n            }\n        }\n\n        private Task SetFilterAsync(string filter, bool containsPrevious)\n        {\n            var toCheck = containsPrevious ? (ICollection<CommandItemViewModel>)Commands : _allCommands;\n\n            var words = filter.SplitWords().ToArray();\n\n            if (toCheck.Count > 1 && toCheck.Count * words.Length > 3)\n            {\n                Parallel.ForEach(toCheck, cmd => cmd.CalculateMatch(filter, words));\n            }\n            else\n            {\n                foreach (var command in toCheck)\n                {\n                    command.CalculateMatch(filter, words);\n                }\n            }\n\n            return ApplicationView.ExecuteOnUiThreadAsync(() => {\n\n                foreach (var command in toCheck)\n                {\n                    command.ShowMatch(filter, null);\n                }\n\n                var index = 0;\n\n                foreach (var commandItem in _allCommands)\n                {\n                    if (commandItem.IsMatch)\n                    {\n                        if (Commands.Count <= index)\n                        {\n                            Commands.Add(commandItem);\n                        }\n                        else if (!ReferenceEquals(commandItem, Commands[index]))\n                        {\n                            Commands.Insert(index, commandItem);\n                        }\n\n                        index++;\n                    }\n                    else if (Commands.Count > index && ReferenceEquals(commandItem, Commands[index]))\n                    {\n                        Commands.RemoveAt(index);\n                    }\n                }\n            });\n        }\n\n        public void RemoveCommand(ExecutedCommand command)\n        {\n            _historyService.Delete(command);\n\n            var toRemove = _allCommands.FirstOrDefault(c =>\n                string.Equals(c.ExecutedCommand.Value, command.Value, StringComparison.Ordinal));\n\n            if (toRemove != null)\n            {\n                _allCommands.Remove(toRemove);\n                Commands.Remove(toRemove);\n            }\n        }\n\n        public bool IsProfileCommand(ExecutedCommand command) => _allProfiles.Value.Any(p =>\n            command.Value.NullableEqualTo(p.Name, StringComparison.OrdinalIgnoreCase));\n\n        #endregion Methods\n\n        #region Links/shortcuts related\n\n        private const string CustomSshUriScheme = \"ftcmd\";\n        private const string CustomUriHost = \"fluent.terminal\";\n        private const string CustomCommandQueryStringName = \"cmd\";\n\n        public static bool CheckScheme(Uri uri) => CustomSshUriScheme.Equals(uri?.Scheme, StringComparison.OrdinalIgnoreCase);\n\n        public static CommandProfileProviderViewModel ParseUri(Uri uri, ISettingsService settingsService,\n            IApplicationView applicationView, ITrayProcessCommunicationService trayProcessCommunicationService,\n            ICommandHistoryService historyService)\n        {\n            var vm = new CommandProfileProviderViewModel(settingsService, applicationView,\n                trayProcessCommunicationService, historyService);\n\n            // ReSharper disable once ConstantConditionalAccessQualifier\n            string queryString = uri.Query?.Trim();\n\n            if (string.IsNullOrEmpty(queryString))\n            {\n                return vm;\n            }\n\n            if (queryString.StartsWith(\"?\", StringComparison.Ordinal))\n            {\n                queryString = queryString.Substring(1);\n            }\n\n            var queryStringParams = ParseParams(queryString, '&').ToList();\n\n            var cmdParam = queryStringParams.FirstOrDefault(t =>\n                CustomCommandQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (cmdParam == null)\n            {\n                throw new Exception(I18N.TranslateWithFallback(\"InvalidLink\", \"Invalid link.\"));\n            }\n\n            vm._command = cmdParam.Item2;\n\n            vm.LoadBaseFromQueryString(queryStringParams);\n\n            return vm;\n        }\n\n        public override async Task<Tuple<bool, string>> GetUrlAsync()\n        {\n            var error = await ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return Tuple.Create(false, error);\n            }\n\n            return Tuple.Create(true,\n                $\"{CustomSshUriScheme}://{CustomUriHost}/?{CustomCommandQueryStringName}={HttpUtility.UrlEncode(_command)}&{GetBaseQueryString()}\");\n        }\n\n        #endregion Links/shortcuts related\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/DelayedHistorySaver.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    internal class DelayedHistorySaver : ISessionSuccessTracker\n    {\n        private const int DelayMilliseconds = 5000;\n\n        private readonly Action _saveAction;\n\n        private readonly object _lock = new object();\n\n        private CancellationTokenSource _cts;\n\n        private bool _sessionStarted;\n        private bool _outputReceived;\n\n        private bool _toSave = true;\n\n        internal DelayedHistorySaver(Action saveAction)\n        {\n            _saveAction = saveAction;\n        }\n\n        public void SetSuccessfulSessionStart()\n        {\n            lock (_lock)\n            {\n                if (!_toSave || _sessionStarted)\n                {\n                    return;\n                }\n\n                _sessionStarted = true;\n\n                if (_outputReceived)\n                {\n                    InitiateSave();\n                }\n            }\n        }\n\n        public void SetOutputReceived()\n        {\n            lock (_lock)\n            {\n                if (!_toSave || _outputReceived)\n                {\n                    return;\n                }\n\n                _outputReceived = true;\n\n                if (_sessionStarted)\n                {\n                    InitiateSave();\n                }\n            }\n        }\n\n        public void SetInvalid()\n        {\n            lock (_lock)\n            {\n                if (!_toSave || !(_cts is CancellationTokenSource cts))\n                {\n                    return;\n                }\n\n                _toSave = false;\n\n                cts.Cancel();\n                cts.Dispose();\n                _cts = null;\n            }\n        }\n\n        private void InitiateSave()\n        {\n            _cts = new CancellationTokenSource();\n\n            Task.Delay(DelayMilliseconds, _cts.Token).ContinueWith(t =>\n                {\n                    lock (_lock)\n                    {\n                        if (_toSave)\n                        {\n                            _saveAction.Invoke();\n                        }\n\n                        _toSave = false;\n\n                        _cts?.Dispose();\n                        _cts = null;\n                    }\n                });\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/EnvironmentVariableViewModel.cs",
    "content": "﻿using Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class EnvironmentVariableViewModel : ObservableObject\n    {\n        private string _name;\n        private string _value;\n\n        public Guid Id { get; } = Guid.NewGuid();\n\n        public string Name\n        {\n            get => _name;\n            set => SetProperty(ref _name, value);\n        }\n\n        public string Value\n        {\n            get => _value;\n            set => SetProperty(ref _value, value);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/ISessionSuccessTracker.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels\n{\n    public interface ISessionSuccessTracker\n    {\n        void SetSuccessfulSessionStart();\n\n        void SetOutputReceived();\n\n        void SetInvalid();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/ITerminalView.cs",
    "content": "﻿using System;\nusing FluentTerminal.Models;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public interface ITerminalView : IDisposable\n    {\n        Task ChangeFontSize(int fontSize);\n        Task ChangeThemeAsync(TerminalTheme theme);\n        Task ChangeKeyBindingsAsync();\n        Task ChangeOptionsAsync(TerminalOptions options);\n        Task InitializeAsync(TerminalViewModel viewModel);\n        Task ReconnectAsync();\n        void DisposalPrepare();\n        Task FindNextAsync(SearchRequest request);\n        Task FindPreviousAsync(SearchRequest request);\n        Task FocusTerminalAsync();\n        Task<string> SerializeXtermStateAsync();\n        void Paste(string text);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Infrastructure/IErrorHandler.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Infrastructure\n{\n    public interface IErrorHandler\n    {\n        void HandleError(Exception ex);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/MainViewModel.cs",
    "content": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Collections.Specialized;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\nusing FluentTerminal.App.ViewModels.Menu;\nusing FluentTerminal.Models.Messages;\nusing System.Windows.Input;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Messaging;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class MainViewModel : ObservableObject,\n        IRecipient<ApplicationSettingsChangedMessage>,\n        IRecipient<ShellProfileAddedMessage>,\n        IRecipient<ShellProfileDeletedMessage>,\n        IRecipient<ShellProfileChangedMessage>,\n        IRecipient<DefaultShellProfileChangedMessage>,\n        IRecipient<TerminalOptionsChangedMessage>,\n        IRecipient<CommandHistoryChangedMessage>,\n        IRecipient<KeyBindingsChangedMessage>\n    {\n        private readonly IClipboardService _clipboardService;\n        private readonly IDialogService _dialogService;\n        private readonly IKeyboardCommandService _keyboardCommandService;\n        private readonly ISettingsService _settingsService;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly ICommandHistoryService _commandHistoryService;\n        private ApplicationSettings _applicationSettings;\n        private bool _useAcrylicBackground;\n        private double _backgroundOpacity;\n        private TerminalViewModel _selectedTerminal;\n        private TabsPosition _tabsPosition;\n        private string _windowTitle;\n        private IDictionary<string, ICollection<KeyBinding>> _keyBindings;\n\n        public MainViewModel(ISettingsService settingsService, ITrayProcessCommunicationService trayProcessCommunicationService, IDialogService dialogService, IKeyboardCommandService keyboardCommandService, \n            IApplicationView applicationView, IClipboardService clipboardService, ICommandHistoryService commandHistoryService)\n        {\n            _settingsService = settingsService;\n\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _dialogService = dialogService;\n            ApplicationView = applicationView;\n            _clipboardService = clipboardService;\n            _keyboardCommandService = keyboardCommandService;\n            _commandHistoryService = commandHistoryService;\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewTab), async () => await AddDefaultProfileAsync(NewTerminalLocation.Tab));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewWindow), async () => await AddDefaultProfileAsync(NewTerminalLocation.Window));\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewSshTab), async () => await AddSshProfileAsync(NewTerminalLocation.Tab));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewSshWindow), async () => await AddSshProfileAsync(NewTerminalLocation.Window));\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewCustomCommandTab), async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Tab));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewCustomCommandWindow), async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Window));\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ChangeTabTitle), async () => await SelectedTerminal.EditTitleAsync());\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.CloseTab), CloseCurrentTab);\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.DuplicateTab), async () => await AddTabAsync(SelectedTerminal.ShellProfile.Clone()));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ReconnectTab), async () => { if (SelectedTerminal.ReconnectTabCommand.CanExecute(null)) await SelectedTerminal.ReconnectTabAsync(); });\n\n            // empty command handlers for copy and paste so that the main window does not execute these when copy keyboard shortcut is used in a popup search panel \n            // in such a case an exception would be thrown if no handlers are available so these empty ones mitigate that. Also there is no need for these on the main window anyway\n            // so leaving them empty is fine.\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.Paste), () => { });\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.Copy), () => { });\n\n            // Add all of the commands for switching to a tab of a given ID, if there's one open there\n            for (int i = 0; i < 9; i++)\n            {\n                var switchCmd = Command.SwitchToTerm1 + i; \n                int tabNumber = i;\n                // ReSharper disable once InconsistentNaming\n                void handler() => SelectTabNumber(tabNumber);\n                _keyboardCommandService.RegisterCommandHandler(switchCmd.ToString(), handler);\n            }\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NextTab), SelectNextTab);\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.PreviousTab), SelectPreviousTab);\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ShowSettings), ShowSettings);\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ToggleFullScreen), ToggleFullScreen);\n\n            foreach (ShellProfile profile in _settingsService.GetShellProfiles())\n            {\n                _keyboardCommandService.RegisterCommandHandler(profile.Id.ToString(), async () => await AddProfileByGuidAsync(profile.Id));\n            }\n\n            foreach (SshProfile profile in _settingsService.GetSshProfiles())\n            {\n                _keyboardCommandService.RegisterCommandHandler(profile.Id.ToString(), async () => await AddProfileByGuidAsync(profile.Id));\n            }\n\n            var currentTheme = _settingsService.GetCurrentTheme();\n            var options = _settingsService.GetTerminalOptions();\n            UseAcrylicBackground = options.UseAcrylicBackground;\n            BackgroundOpacity = options.BackgroundOpacity;\n            _applicationSettings = _settingsService.GetApplicationSettings();\n            TabsPosition = _applicationSettings.TabsPosition;\n\n            AddDefaultTabCommand = new RelayCommand(async () => await AddDefaultProfileAsync(NewTerminalLocation.Tab));\n\n            ApplicationView.CloseRequested += OnCloseRequest;\n            ApplicationView.Closed += OnClosed;\n            Terminals.CollectionChanged += OnTerminalsCollectionChanged;\n\n            LoadKeyBindings();\n\n            _newDefaultTabCommand = new RelayCommand(async () => await AddDefaultProfileAsync(NewTerminalLocation.Tab));\n            _newDefaultWindowCommand = new RelayCommand(async () => await AddDefaultProfileAsync(NewTerminalLocation.Window));\n            _newRemoteTabCommand = new RelayCommand(async () => await AddSshProfileAsync(NewTerminalLocation.Tab));\n            _newRemoteWindowCommand = new RelayCommand(async () => await AddSshProfileAsync(NewTerminalLocation.Window));\n            _newQuickLaunchTabCommand = new RelayCommand(async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Tab));\n            _newQuickLaunchWindowCommand = new RelayCommand(async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Window));\n\n            _settingsCommand = new RelayCommand(ShowSettings);\n            _aboutCommand = new AsyncRelayCommand(_dialogService.ShowAboutDialogAsync);\n            _quitCommand = new AsyncRelayCommand(_trayProcessCommunicationService.QuitApplicationAsync);\n\n            _defaultProfile = _settingsService.GetDefaultShellProfile();\n\n            CreateMenuViewModel();\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        private ShellProfile _defaultProfile;\n\n        private void UpdateDefaultShellProfile()\n        {\n            var defaultProfile = _settingsService.GetDefaultShellProfile();\n\n            // We need to rebuild the menu only if default profile Id or Name is changed\n            var changeMenu = _defaultProfile == null || !_defaultProfile.Id.Equals(defaultProfile.Id) ||\n                             !string.Equals(_defaultProfile.Name, defaultProfile.Name, StringComparison.Ordinal);\n\n            _defaultProfile = defaultProfile;\n\n            if (changeMenu)\n            {\n                ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n            }\n        }\n\n        private void LoadKeyBindings() => _keyBindings = _settingsService.GetCommandKeyBindings();\n\n        private void OnClosed(object sender, EventArgs e)\n        {\n            //MessengerInstance.Unregister(this); todo do we still need this?\n\n            ApplicationView.CloseRequested -= OnCloseRequest;\n            ApplicationView.Closed -= OnClosed;\n            Terminals.CollectionChanged -= OnTerminalsCollectionChanged;\n\n            _keyboardCommandService.ClearCommandHandlers();\n\n            _applicationSettings = null;\n\n            AddDefaultTabCommand = null;\n\n            Closed?.Invoke(this, e);\n        }\n\n        private void OnTerminalsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)\n        {\n            OnPropertyChanged(nameof(ShowTabsOnTop));\n            OnPropertyChanged(nameof(ShowTabsOnBottom));\n        }\n\n        public event EventHandler Closed;\n\n        public event EventHandler<NewWindowRequestedEventArgs> NewWindowRequested;\n\n        public event EventHandler ShowSettingsRequested;\n\n        public event EventHandler ActivatedMv;\n\n        public event EventHandler<TerminalViewModel> TabTearedOff;\n\n        public void TearOffTab(TerminalViewModel model)\n        {\n            TabTearedOff?.Invoke(this, model);\n        }\n\n        public void FocusWindow()\n        {\n            ActivatedMv?.Invoke(this, EventArgs.Empty);\n        }\n\n        public ICommand AddDefaultTabCommand { get; private set; }\n\n        public string WindowTitle\n        {\n            get => _windowTitle;\n            set\n            {\n                if (SetProperty(ref _windowTitle, value))\n                {\n                    ApplicationView.Title = value;\n                }\n            }\n        }\n\n        public bool ShowTabsOnTop\n        {\n            get => TabsPosition == TabsPosition.Top;\n        }\n\n        public bool ShowTabsOnBottom\n        {\n            get => TabsPosition == TabsPosition.Bottom;\n        }\n\n        public bool UseAcrylicBackground\n        {\n            get => _useAcrylicBackground;\n            set => SetProperty(ref _useAcrylicBackground, value);\n        }\n\n        public double BackgroundOpacity\n        {\n            get => _backgroundOpacity;\n            set => SetProperty(ref _backgroundOpacity, value);\n        }\n\n        public TerminalViewModel SelectedTerminal\n        {\n            get => _selectedTerminal;\n            set\n            {\n                var oldValue = _selectedTerminal;\n\n                if (SetProperty(ref _selectedTerminal, value))\n                {\n                    if (oldValue != null)\n                    {\n                        oldValue.IsSelected = false;\n                    }\n\n                    if (_selectedTerminal != null)\n                    {\n                        _selectedTerminal.IsSelected = true;\n                        _selectedTerminal.FocusTerminal();\n\n                        SetWindowTitle(_selectedTerminal);\n                    }\n                }\n            }\n        }\n\n        public TabsPosition TabsPosition\n        {\n            get => _tabsPosition;\n            set => SetProperty(ref _tabsPosition, value);\n        }\n\n        public ObservableCollection<TerminalViewModel> Terminals { get; } = new ObservableCollection<TerminalViewModel>();\n\n        public IApplicationView ApplicationView { get; }\n\n        #region Launching terminal sessions\n\n        public Task AddDefaultProfileAsync(NewTerminalLocation location)\n        {\n            var profile = _settingsService.GetDefaultShellProfile();\n\n            return AddProfileAsync(profile, location);\n        }\n\n        private async Task AddSshProfileAsync(NewTerminalLocation location)\n        {\n            var profile = await _dialogService.ShowSshConnectionInfoDialogAsync().ConfigureAwait(true);\n\n            await AddProfileAsync(profile, location).ConfigureAwait(false);\n        }\n\n        private async Task AddQuickLaunchProfileAsync(NewTerminalLocation location)\n        {\n            var profile = await _dialogService.ShowCustomCommandDialogAsync().ConfigureAwait(true);\n\n            await AddProfileAsync(profile, location).ConfigureAwait(false);\n        }\n\n        public Task AddProfileByGuidAsync(Guid profileId) =>\n            AddProfileByGuidAsync(profileId, _applicationSettings.NewTerminalLocation);\n\n        private async Task AddProfileByGuidAsync(Guid profileId, NewTerminalLocation location)\n        {\n            var profile = _settingsService.GetShellProfile(profileId) ?? _settingsService.GetSshProfile(profileId);\n\n            await AddProfileAsync(profile, location).ConfigureAwait(false);\n        }\n\n        // For serialization\n        public Task AddTabAsync(string terminalState, int position)\n        {\n            return AddTabAsync(new ShellProfile(), terminalState, position);\n        }\n\n        private Task AddProfileAsync(ShellProfile profile) =>\n            AddProfileAsync(profile, _applicationSettings.NewTerminalLocation);\n\n        private Task AddProfileAsync(ShellProfile profile, NewTerminalLocation location)\n        {\n            if (profile == null)\n            {\n                return Task.CompletedTask;\n            }\n\n            if (location == NewTerminalLocation.Tab)\n            {\n                return AddTabAsync(profile);\n            }\n\n            NewWindowRequested?.Invoke(this, new NewWindowRequestedEventArgs(profile));\n\n            return Task.CompletedTask;\n        }\n\n        public Task AddTabAsync(ShellProfile profile) => AddTabAsync(profile, string.Empty, Terminals.Count);\n\n        private Task AddTabAsync(ShellProfile profile, string terminalState, int position)\n        {\n            profile.Tag = new DelayedHistorySaver(() => _commandHistoryService.MarkUsed(profile));\n\n            return ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                var terminal = new TerminalViewModel(_settingsService, _trayProcessCommunicationService, _dialogService, _keyboardCommandService,\n                    _applicationSettings, profile, ApplicationView, _clipboardService, terminalState);\n\n                terminal.PropertyChanged += Terminal_PropertyChanged;\n                terminal.Closed += OnTerminalClosed;\n                terminal.CloseLeftTabsRequested += Terminal_CloseLeftTabsRequested;\n                terminal.CloseRightTabsRequested += Terminal_CloseRightTabsRequested;\n                terminal.CloseOtherTabsRequested += Terminal_CloseOtherTabsRequested;\n                terminal.DuplicateTabRequested += Terminal_DuplicateTabRequested;\n                Terminals.Insert(Math.Min(position, Terminals.Count), terminal);\n\n                SelectedTerminal = terminal;\n            });\n        }\n\n        #endregion Launching terminal sessions\n\n        private void Terminal_PropertyChanged(object sender, PropertyChangedEventArgs e)\n        {\n            if (!(sender is TerminalViewModel terminalViewModel))\n            {\n                return;\n            }\n\n            switch (e.PropertyName)\n            {\n                case nameof(TerminalViewModel.ShellTitle):\n                case nameof(TerminalViewModel.TabTitle):\n\n                    SetWindowTitle(terminalViewModel);\n\n                    break;\n            }\n        }\n\n        // ReSharper disable once UnusedMethodReturnValue.Local\n        private Task SetWindowTitle(TerminalViewModel terminalViewModel)\n        {\n            return ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                WindowTitle = !_applicationSettings.ShowCustomTitleInTitlebar ||\n                              string.IsNullOrEmpty(terminalViewModel?.TabTitle)\n                    ? terminalViewModel?.ShellTitle\n                    : terminalViewModel.TabTitle;\n            }, CoreDispatcherPriority.Low);\n        }\n\n        private async void Terminal_DuplicateTabRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                await AddTabAsync(terminal.ShellProfile.Clone()).ConfigureAwait(false);\n            }\n        }\n\n        private async void Terminal_CloseOtherTabsRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                await Task.WhenAll(Terminals.Where(t => t != terminal).Select(t =>\n                {\n                    Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", t.Terminal.Id);\n                    return t.CloseAsync();\n                })).ConfigureAwait(false);\n            }\n        }\n\n        private async void Terminal_CloseRightTabsRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                var toRemove = Terminals.Skip(Terminals.IndexOf(terminal) + 1).ToList();\n\n                await Task.WhenAll(toRemove.Select(t =>\n                {\n                    Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", t.Terminal.Id);\n                    return t.CloseAsync();\n                })).ConfigureAwait(false);\n            }\n        }\n\n        private async void Terminal_CloseLeftTabsRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                var toRemove = Terminals.Take(Terminals.IndexOf(terminal)).ToList();\n\n                await Task.WhenAll(toRemove.Select(t =>\n                {\n                    Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", t.Terminal.Id);\n                    return t.CloseAsync();\n                })).ConfigureAwait(false);\n            }\n        }\n\n        private Task CloseAllTerminalsAsync()\n        {\n            return Task.WhenAll(Terminals.Select(terminal =>\n            {\n                terminal.PropertyChanged -= Terminal_PropertyChanged;\n                terminal.Closed -= OnTerminalClosed;\n                terminal.CloseLeftTabsRequested -= Terminal_CloseLeftTabsRequested;\n                terminal.CloseRightTabsRequested -= Terminal_CloseRightTabsRequested;\n                terminal.CloseOtherTabsRequested -= Terminal_CloseOtherTabsRequested;\n                terminal.DuplicateTabRequested -= Terminal_DuplicateTabRequested;\n                return terminal.CloseAsync();\n            }));\n        }\n\n        private void CloseCurrentTab()\n        {\n            SelectedTerminal?.CloseAsync();\n        }\n\n        private async Task OnCloseRequest(object sender, CancelableEventArgs e)\n        {\n            if (_applicationSettings.ConfirmClosingWindows)\n            {\n                var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmCloseWindow\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(false);\n\n                if (result == DialogButton.OK)\n                {\n                    await CloseAllTerminalsAsync().ConfigureAwait(false);\n                }\n                else\n                {\n                    e.Cancelled = true;\n                }\n            }\n            else\n            {\n                await CloseAllTerminalsAsync().ConfigureAwait(false);\n            }\n        }\n\n        private void OnTerminalClosed(object sender, EventArgs e)\n        {\n            if (!(sender is TerminalViewModel terminal))\n            {\n                return;\n            }\n\n            Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", terminal.Terminal.Id);\n\n            terminal.PropertyChanged -= Terminal_PropertyChanged;\n            terminal.Closed -= OnTerminalClosed;\n            terminal.CloseLeftTabsRequested -= Terminal_CloseLeftTabsRequested;\n            terminal.CloseRightTabsRequested -= Terminal_CloseRightTabsRequested;\n            terminal.CloseOtherTabsRequested -= Terminal_CloseOtherTabsRequested;\n            terminal.DuplicateTabRequested -= Terminal_DuplicateTabRequested;\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                var wasSelected = _selectedTerminal == terminal;\n\n                Terminals.Remove(terminal);\n\n                if (Terminals.Count == 0)\n                {\n                    ApplicationView.TryCloseAsync();\n                }\n                else if (wasSelected)\n                {\n                    SelectedTerminal = Terminals.LastOrDefault(t => t != terminal);\n                }\n            });\n        }\n\n        public void Receive(ShellProfileDeletedMessage message)\n        {\n            _keyboardCommandService.DeregisterCommandHandler(message.ProfileId.ToString());\n\n            UpdateDefaultShellProfile();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(ShellProfileChangedMessage message)\n        {\n            UpdateDefaultShellProfile();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(ShellProfileAddedMessage message)\n        {\n            _keyboardCommandService.RegisterCommandHandler(message.ShellProfile.Id.ToString(),\n                async () => await AddProfileByGuidAsync(message.ShellProfile.Id));\n\n            UpdateDefaultShellProfile();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(DefaultShellProfileChangedMessage message)\n        {\n            UpdateDefaultShellProfile();\n        }\n\n        public void Receive(ApplicationSettingsChangedMessage message)\n        {\n            var updateMenu = _applicationSettings != null &&\n                             (_applicationSettings.TabWindowCascadingAppMenu !=\n                              message.ApplicationSettings.TabWindowCascadingAppMenu ||\n                              !message.ApplicationSettings.TabWindowCascadingAppMenu &&\n                              _applicationSettings.NewTerminalLocation !=\n                              message.ApplicationSettings.NewTerminalLocation);\n\n            _applicationSettings = message.ApplicationSettings;\n\n            SetWindowTitle(SelectedTerminal);\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                TabsPosition = message.ApplicationSettings.TabsPosition;\n                OnPropertyChanged(nameof(ShowTabsOnTop));\n                OnPropertyChanged(nameof(ShowTabsOnBottom));\n            });\n\n            if (updateMenu)\n            {\n                ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n            }\n        }\n\n        public void Receive(TerminalOptionsChangedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                BackgroundOpacity = message.TerminalOptions.BackgroundOpacity;\n                UseAcrylicBackground = message.TerminalOptions.UseAcrylicBackground;\n            }, CoreDispatcherPriority.Low);\n        }\n\n        public void Receive(KeyBindingsChangedMessage message)\n        {\n            LoadKeyBindings();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(CommandHistoryChangedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        private void SelectTabNumber(int tabNumber)\n        {\n            if (tabNumber < Terminals.Count)\n            {\n                SelectedTerminal = Terminals[tabNumber];\n            }\n        }\n\n        private void SelectNextTab()\n        {\n            var currentIndex = Terminals.IndexOf(SelectedTerminal);\n            var nextIndex = (currentIndex + 1) % Terminals.Count;\n            SelectedTerminal = Terminals[nextIndex];\n        }\n\n        private void SelectPreviousTab()\n        {\n            var currentIndex = Terminals.IndexOf(SelectedTerminal);\n            var previousIndex = (currentIndex - 1 + Terminals.Count) % Terminals.Count;\n            SelectedTerminal = Terminals[previousIndex];\n        }\n\n        public void ShowSettings()\n        {\n            ShowSettingsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void ToggleFullScreen()\n        {\n            ApplicationView.ToggleFullScreen();\n        }\n\n        public void OnWindowKeyDown(int key, bool control, bool alt, bool shift, bool meta)\n        {\n            var binding = _keyBindings.Values.SelectMany(bs => bs).FirstOrDefault(b =>\n                b.Key == key && b.Ctrl == control && b.Alt == alt && b.Shift == shift && b.Meta == meta);\n\n            if (binding != null)\n            {\n                _keyboardCommandService.SendCommand(binding.Command);\n            }\n        }\n\n        #region App menu\n\n        private const int RecentItemsMaxCount = 10;\n\n        private MenuViewModel _menuViewModel;\n\n        private readonly ICommand _newDefaultTabCommand;\n        private readonly ICommand _newDefaultWindowCommand;\n        private readonly ICommand _newRemoteTabCommand;\n        private readonly ICommand _newRemoteWindowCommand;\n        private readonly ICommand _newQuickLaunchTabCommand;\n        private readonly ICommand _newQuickLaunchWindowCommand;\n        private readonly ICommand _settingsCommand;\n        private readonly ICommand _aboutCommand;\n        private readonly ICommand _quitCommand;\n\n        public MenuViewModel AppMenuViewModel\n        {\n            get => _menuViewModel;\n            private set => SetProperty(ref _menuViewModel, value);\n        }\n\n        private void CreateMenuViewModel()\n        {\n            var appMenuViewModel = new MenuViewModel();\n\n            if (_applicationSettings.TabWindowCascadingAppMenu)\n            {\n                var tabItem = new ExpandableMenuItemViewModel(\n                    I18N.TranslateWithFallback(\"MenuItem_NewTab_Text\", \"New Tab\"),\n                    description: I18N.TranslateWithFallback(\"MenuItem_NewTab_Text\", \"Launches a session in a new tab.\"),\n                    icon: Mdl2Icon.Add());\n\n                FillCoreItems(tabItem.SubItems, NewTerminalLocation.Tab);\n\n                appMenuViewModel.Items.Add(tabItem);\n\n                var windowItem = new ExpandableMenuItemViewModel(\n                    I18N.TranslateWithFallback(\"MenuItem_NewWindow_Text\", \"New Window\"),\n                    description: I18N.TranslateWithFallback(\"MenuItem_NewWindow_Description\", \"Launches a session in a new window.\"),\n                    icon: Mdl2Icon.NewWindow());\n\n                FillCoreItems(windowItem.SubItems, NewTerminalLocation.Window);\n\n                appMenuViewModel.Items.Add(windowItem);\n            }\n            else\n            {\n                FillCoreItems(appMenuViewModel.Items, _applicationSettings.NewTerminalLocation);\n            }\n\n            appMenuViewModel.Items.Add(new ExpandableMenuItemViewModel(I18N.TranslateWithFallback(\"Recent.Text\", \"Recent\"),\n                GetRecentMenuItems(), I18N.TranslateWithFallback(\"Recent_Description\", \"Recently opened sessions.\"),\n                icon: Mdl2Icon.History()));\n\n            appMenuViewModel.Items.Add(new SeparatorMenuItemViewModel());\n\n            var settingsItem = new MenuItemViewModel(I18N.TranslateWithFallback(\"Settings.Text\", \"Settings\"),\n                _settingsCommand, I18N.TranslateWithFallback(\"Settings_Description\", \"Opens settings window.\"),\n                icon: Mdl2Icon.Settings());\n\n            if (_keyBindings.TryGetValue(nameof(Command.ShowSettings), out var keyBindings) &&\n                keyBindings.FirstOrDefault() is KeyBinding settingsKeyBinding)\n            {\n                LoadKeyBindingsFromModel(settingsItem, settingsKeyBinding);\n            }\n            else\n            {\n                settingsItem.KeyBinding = null;\n            }\n\n            appMenuViewModel.Items.Add(settingsItem);\n\n            appMenuViewModel.Items.Add(new MenuItemViewModel(I18N.TranslateWithFallback(\"AboutDialog.Title\", \"About\"), _aboutCommand,\n                I18N.TranslateWithFallback(\"About_Description\", \"Basic info about the app.\"),\n                icon: Mdl2Icon.Info()));\n\n            appMenuViewModel.Items.Add(new SeparatorMenuItemViewModel());\n\n            var quitItem = new MenuItemViewModel(I18N.TranslateWithFallback(\"Quit.Text\", \"Quit\"), _quitCommand,\n                I18N.TranslateWithFallback(\"Quit.Description\", \"Quit Fluent Terminal\"),\n                icon: Mdl2Icon.Cancel());\n            appMenuViewModel.Items.Add(quitItem);\n\n            if (!appMenuViewModel.EquivalentTo(_menuViewModel))\n            {\n                AppMenuViewModel = appMenuViewModel;\n            }\n        }\n\n        private void FillCoreItems(ObservableCollection<MenuItemViewModelBase> items, NewTerminalLocation location)\n        {\n            var tab = location == NewTerminalLocation.Tab;\n\n            if (_defaultProfile?.Name is string defaultProfileName)\n            {\n                var defaultProfileItem = new MenuItemViewModel(\n                    defaultProfileName, tab ? _newDefaultTabCommand : _newDefaultWindowCommand,\n                    I18N.TranslateWithFallback(\"MenuItem_DefaultProfile_Description\",\n                        \"Starts new terminal session based on the default profile.\"), icon: Mdl2Icon.FavoriteStar());\n\n                var defaultProfileCommand = tab ? nameof(Command.NewTab) : nameof(Command.NewWindow);\n\n                if (_keyBindings.TryGetValue(defaultProfileCommand, out var kbs) &&\n                    kbs.FirstOrDefault() is KeyBinding tabKeyBindings)\n                {\n                    LoadKeyBindingsFromModel(defaultProfileItem, tabKeyBindings);\n                }\n                else\n                {\n                    defaultProfileItem.KeyBinding = null;\n                }\n\n                items.Add(defaultProfileItem);\n            }\n\n            var remoteConnectItem = new MenuItemViewModel(\n                I18N.TranslateWithFallback(\"MenuItem_Remote_Text\", \"Remote Connect...\"),\n                tab ? _newRemoteTabCommand : _newRemoteWindowCommand,\n                I18N.TranslateWithFallback(\"MenuItem_Remote_Description\",\n                    \"Opens a dialog for launching a new SSH or Mosh terminal session.\"),\n                icon: Mdl2Icon.Globe());\n\n            var command = tab ? nameof(Command.NewSshTab) : nameof(Command.NewSshWindow);\n\n            if (_keyBindings.TryGetValue(command, out var keyBindings) &&\n                keyBindings.FirstOrDefault() is KeyBinding remoteTabKeyBinding)\n            {\n                LoadKeyBindingsFromModel(remoteConnectItem, remoteTabKeyBinding);\n            }\n            else\n            {\n                remoteConnectItem.KeyBinding = null;\n            }\n\n            items.Add(remoteConnectItem);\n\n            var quickLaunchItem = new MenuItemViewModel(\n                I18N.TranslateWithFallback(\"MenuItem_QuickLaunch_Text\", \"Quick Launch...\"),\n                tab ? _newQuickLaunchTabCommand : _newQuickLaunchWindowCommand,\n                I18N.TranslateWithFallback(\"MenuItem_QuickLaunch_Description\",\n                    \"Opens a \\\"Quick Launch\\\" dialog for starting a new terminal session.\"),\n                icon: Mdl2Icon.Play());\n\n            command = tab ? nameof(Command.NewCustomCommandTab) : nameof(Command.NewCustomCommandWindow);\n\n            if (_keyBindings.TryGetValue(command, out keyBindings) &&\n                keyBindings.FirstOrDefault() is KeyBinding quickTabKeyBinding)\n            {\n                LoadKeyBindingsFromModel(quickLaunchItem, quickTabKeyBinding);\n            }\n            else\n            {\n                quickLaunchItem.KeyBinding = null;\n            }\n\n            items.Add(quickLaunchItem);\n\n            items.Add(new SeparatorMenuItemViewModel());\n\n            foreach (var profile in _settingsService.GetShellProfiles().Concat(_settingsService.GetSshProfiles()).OrderBy(x => x.Name))\n            {\n                items.Add(new MenuItemViewModel(profile.Name, new AsyncRelayCommand(() => AddProfileAsync(profile, location))));\n            }\n        }\n\n        private ObservableCollection<MenuItemViewModel> GetRecentMenuItems() =>\n            new ObservableCollection<MenuItemViewModel>(_commandHistoryService\n                .GetHistoryRecentFirst(top: RecentItemsMaxCount).Select(CommandToMenuItem));\n\n        private MenuItemViewModel CommandToMenuItem(ExecutedCommand command)\n        {\n            var itemCommand = new AsyncRelayCommand(() => AddProfileAsync(command.ShellProfile));\n            var keyBinding = command.ShellProfile.KeyBindings?.FirstOrDefault() is KeyBinding kb\n                ? new MenuItemKeyBindingViewModel(kb)\n                : null;\n\n            return new MenuItemViewModel(command.Value, itemCommand, keyBinding: keyBinding);\n        }\n\n        private void LoadKeyBindingsFromModel(MenuItemViewModel menuItemViewModel, KeyBinding keyBinding)\n        {\n            if (menuItemViewModel.KeyBinding == null)\n            {\n                menuItemViewModel.KeyBinding = new MenuItemKeyBindingViewModel(keyBinding);\n            }\n            else\n            {\n                menuItemViewModel.KeyBinding.Key = keyBinding.Key;\n                menuItemViewModel.KeyBinding.Ctrl = keyBinding.Ctrl;\n                menuItemViewModel.KeyBinding.Alt = keyBinding.Alt;\n                menuItemViewModel.KeyBinding.Shift = keyBinding.Shift;\n                menuItemViewModel.KeyBinding.Windows = keyBinding.Meta;\n            }\n        }\n\n        #endregion App menu\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/ExpandableMenuItemViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class ExpandableMenuItemViewModel : MenuItemViewModelBase\n    {\n        public ObservableCollection<MenuItemViewModelBase> SubItems { get; }\n\n        public ExpandableMenuItemViewModel(string text, IEnumerable<MenuItemViewModelBase> subItems = null,\n            string description = null, Mdl2Icon icon = null) : base(text, description, icon)\n        {\n            if (subItems == null)\n            {\n                SubItems = new ObservableCollection<MenuItemViewModelBase>();\n            }\n            else if (subItems is ObservableCollection<MenuItemViewModelBase> observableSubItems)\n            {\n                SubItems = observableSubItems;\n            }\n            else\n            {\n                SubItems = new ObservableCollection<MenuItemViewModelBase>(subItems);\n            }\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is ExpandableMenuItemViewModel otherExpandable) ||\n                SubItems.Count != otherExpandable.SubItems.Count)\n            {\n                return false;\n            }\n\n            return !SubItems.Where((t, i) => !t.EquivalentTo(otherExpandable.SubItems[i])).Any();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/Mdl2Icon.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels.Menu\n{\n    public sealed class Mdl2Icon\n    {\n        public string Color { get; }\n        public string Glyph { get; }\n\n        private Mdl2Icon(string glyph, string color = null)\n        {\n            Glyph = glyph;\n            Color = color;\n        }\n\n        public static Mdl2Icon Link(string color = null) => new Mdl2Icon(\"\\uE71B\", color);\n\n        public static Mdl2Icon Copy(string color = null) => new Mdl2Icon(\"\\uE8C8\", color);\n\n        public static Mdl2Icon Paste(string color = null) => new Mdl2Icon(\"\\uE77F\", color);\n\n        public static Mdl2Icon Edit(string color = null) => new Mdl2Icon(\"\\uE70F\", color);\n\n        public static Mdl2Icon Search(string color = null) => new Mdl2Icon(\"\\uE721\", color);\n\n        public static Mdl2Icon Add(string color = null) => new Mdl2Icon(\"\\uE710\", color);\n\n        public static Mdl2Icon Cancel(string color = null) => new Mdl2Icon(\"\\uE711\", color);\n\n        public static Mdl2Icon PaginationDotOutline10(string color = null) => new Mdl2Icon(\"\\uF126\", color);\n\n        public static Mdl2Icon PaginationDotSolid10(string color = null) => new Mdl2Icon(\"\\uF127\", color);\n\n        public static Mdl2Icon NewWindow(string color = null) => new Mdl2Icon(\"\\uE78B\", color);\n\n        public static Mdl2Icon History(string color = null) => new Mdl2Icon(\"\\uE81C\", color);\n\n        public static Mdl2Icon Settings(string color = null) => new Mdl2Icon(\"\\uE713\", color);\n\n        public static Mdl2Icon Info(string color = null) => new Mdl2Icon(\"\\uE946\", color);\n\n        public static Mdl2Icon FavoriteStar(string color = null) => new Mdl2Icon(\"\\uE734\", color);\n\n        public static Mdl2Icon Globe(string color = null) => new Mdl2Icon(\"\\uE774\", color);\n\n        public static Mdl2Icon Play(string color = null) => new Mdl2Icon(\"\\uE768\", color);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/MenuItemKeyBindingViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\nusing System.Collections.Generic;\nusing Windows.System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuItemKeyBindingViewModel : ObservableObject\n    {\n        private int _key;\n\n        public int Key\n        {\n            get => _key;\n            set => SetProperty(ref _key, value);\n        }\n\n        private int _keyModifiers;\n\n        // Corresponds to https://docs.microsoft.com/en-us/uwp/api/windows.system.virtualkeymodifiers\n        public int KeyModifiers\n        {\n            get => _keyModifiers;\n            private set => SetProperty(ref _keyModifiers, value);\n        }\n\n        private bool _ctrl;\n\n        public bool Ctrl\n        {\n            get => _ctrl;\n            set\n            {\n                if (SetProperty(ref _ctrl, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        private bool _alt;\n\n        public bool Alt\n        {\n            get => _alt;\n            set\n            {\n                if (SetProperty(ref _alt, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        private bool _shift;\n\n        public bool Shift\n        {\n            get => _shift;\n            set\n            {\n                if (SetProperty(ref _shift, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        private bool _windows;\n\n        public bool Windows\n        {\n            get => _windows;\n            set\n            {\n                if (SetProperty(ref _windows, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        public bool IsExtendedVirtualKey => !Enum.IsDefined(typeof(VirtualKey), Key);\n\n        public string GetOverrideText()\n        {\n            var segments = new List<string>();\n\n            if (Ctrl) segments.Add(\"Ctrl\");\n            if (Alt) segments.Add(\"Alt\");\n            if (Windows) segments.Add(\"Windows\");\n            if (Shift) segments.Add(\"Shift\");\n\n            segments.Add(EnumHelper.GetEnumDescription((ExtendedVirtualKey)Key));\n\n            return string.Join(\"+\", segments);\n        }\n\n        public MenuItemKeyBindingViewModel(int key = 0, bool ctrl = false, bool alt = false, bool shift = false,\n            bool windows = false)\n        {\n            _key = key;\n            _ctrl = ctrl;\n            _alt = alt;\n            _shift = shift;\n            _windows = windows;\n\n            SetKeyModifiers();\n        }\n\n        public MenuItemKeyBindingViewModel(KeyBinding keyBinding) : this(keyBinding.Key, keyBinding.Ctrl,\n            keyBinding.Alt, keyBinding.Shift, keyBinding.Meta)\n        {\n        }\n\n\n\n        private void SetKeyModifiers()\n        {\n            // Based on VirtualKeyModifiers enum values (https://docs.microsoft.com/en-us/uwp/api/windows.system.virtualkeymodifiers)\n            var result = 0;\n\n            if (_ctrl)\n            {\n                result |= 1;\n            }\n\n            if (_alt)\n            {\n                result |= 2;\n            }\n\n            if (_shift)\n            {\n                result |= 4;\n            }\n\n            if (_windows)\n            {\n                result |= 8;\n            }\n\n            KeyModifiers = result;\n        }\n\n        public bool EquivalentTo(MenuItemKeyBindingViewModel other)\n        {\n            if (ReferenceEquals(this, other)) return true;\n\n            if (other == null) return false;\n\n            return _key == other._key && _keyModifiers == other._keyModifiers;\n        }\n\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/MenuItemViewModel.cs",
    "content": "﻿using System;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuItemViewModel : MenuItemViewModelBase\n    {\n        #region Properties\n\n        private MenuItemKeyBindingViewModel _keyBinding;\n\n        public MenuItemKeyBindingViewModel KeyBinding\n        {\n            get => _keyBinding;\n            set => SetProperty(ref _keyBinding, value);\n        }\n\n        public ICommand Command { get; }\n\n        #endregion Properties\n\n        #region Constructors\n\n        public MenuItemViewModel(string text, ICommand command, string description = null, Mdl2Icon icon = null,\n            MenuItemKeyBindingViewModel keyBinding = null) : base(text, description, icon)\n        {\n            _keyBinding = keyBinding;\n            Command = command ?? throw new ArgumentNullException(nameof(command));\n        }\n\n        #endregion Constructors\n\n        #region Methods\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is MenuItemViewModel menuItem)) return false;\n\n            return _keyBinding?.EquivalentTo(menuItem._keyBinding) ?? menuItem._keyBinding == null;\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/MenuItemViewModelBase.cs",
    "content": "﻿using FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuItemViewModelBase : ObservableObject\n    {\n        #region Properties\n\n        private string _text;\n\n        public string Text\n        {\n            get => _text;\n            set => SetProperty(ref _text, value);\n        }\n\n        private string _description;\n\n        public string Description\n        {\n            get => _description;\n            set => SetProperty(ref _description, value);\n        }\n\n        private Mdl2Icon _icon;\n\n        public Mdl2Icon Icon\n        {\n            get => _icon;\n            set => SetProperty(ref _icon, value);\n        }\n\n        #endregion Properties\n\n        #region Constructor\n\n        protected MenuItemViewModelBase(string text, string description, Mdl2Icon icon)\n        {\n            _text = text;\n            _description = description;\n            _icon = icon;\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        public virtual bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (ReferenceEquals(this, other)) return true;\n\n            if (other == null) return false;\n\n            return _text.NullableEqualTo(other._text) && _description.NullableEqualTo(other._description) &&\n                   (_icon?.Equals(other._icon) ?? other._icon == null);\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/MenuViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuViewModel : ObservableObject\n    {\n        public ObservableCollection<MenuItemViewModelBase> Items { get; }\n\n        public MenuViewModel(IEnumerable<MenuItemViewModelBase> items = null)\n        {\n            if (items == null)\n            {\n                Items = new ObservableCollection<MenuItemViewModelBase>();\n            }\n            else if (items is ObservableCollection<MenuItemViewModelBase> observableItems)\n            {\n                Items = observableItems;\n            }\n            else\n            {\n                Items = new ObservableCollection<MenuItemViewModelBase>(items);\n            }\n        }\n\n        public bool EquivalentTo(MenuViewModel other)\n        {\n            if (ReferenceEquals(this, other)) return true;\n\n            if (other == null) return false;\n\n            if (Items.Count != other.Items.Count) return false;\n\n            return !Items.Where((t, i) => !t.EquivalentTo(other.Items[i])).Any();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/RadioMenuItemViewModel.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class RadioMenuItemViewModel : MenuItemViewModelBase\n    {\n        public object BindingSource { get; }\n        public string BindingPath { get; }\n        public string GroupName { get; }\n\n        public RadioMenuItemViewModel(string text, string groupName, object bindingSource, string bindingPath = null, string description = null, Mdl2Icon icon = null)\n            : base(text, description, icon)\n        {\n            GroupName = groupName ?? throw new ArgumentNullException(nameof(groupName));\n            BindingSource = bindingSource ?? throw new ArgumentNullException(nameof(bindingSource));\n            BindingPath = bindingPath;\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is RadioMenuItemViewModel radioMenuItem)) return false;\n\n            return GroupName == radioMenuItem.GroupName &&  BindingSource == radioMenuItem.BindingSource && BindingPath == radioMenuItem.BindingPath;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/SeparatorMenuItemViewModel.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels.Menu\n{\n    public class SeparatorMenuItemViewModel : MenuItemViewModelBase\n    {\n        public SeparatorMenuItemViewModel()\n            : base(string.Empty, string.Empty, null)\n        {\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            return other is SeparatorMenuItemViewModel;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Menu/ToggleMenuItemViewModel.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class ToggleMenuItemViewModel : MenuItemViewModelBase\n    {\n        public object BindingSource { get; }\n        public string BindingPath { get; }\n\n        public ToggleMenuItemViewModel(string text, object bindingSource, string bindingPath = null, string description = null, Mdl2Icon icon = null)\n            : base(text, description, icon)\n        {\n            BindingSource = bindingSource ?? throw new ArgumentNullException(nameof(bindingSource));\n            BindingPath = bindingPath;\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is ToggleMenuItemViewModel toggleMenuItem)) return false;\n\n            return BindingSource == toggleMenuItem.BindingSource && BindingPath == toggleMenuItem.BindingPath;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/OverlayViewModel.cs",
    "content": "﻿using Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\nusing Windows.UI.Xaml;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class OverlayViewModel : ObservableObject\n    {\n        private readonly DispatcherTimer _overlayTimer;\n        private bool _showOverlay;\n        private string _overlayContent;\n\n        // Important! The constructor has to be called from the UI thread.\n        public OverlayViewModel()\n        {\n            _overlayTimer = new DispatcherTimer {Interval = new TimeSpan(0, 0, 2)};\n        }\n\n        public bool ShowOverlay\n        {\n            get => _showOverlay;\n            set => SetProperty(ref _showOverlay, value);\n        }\n\n        public string OverlayContent\n        {\n            get => _overlayContent;\n            set => SetProperty(ref _overlayContent, value);\n        }\n\n        public void Show(string message)\n        {\n            OverlayContent = message; \n            ShowOverlay = true;\n\n            if (_overlayTimer.IsEnabled)\n            {\n                _overlayTimer.Stop();\n                _overlayTimer.Tick -= OnResizeOverlayTimerFinished;\n            }\n            _overlayTimer.Start();\n            _overlayTimer.Tick += OnResizeOverlayTimerFinished;\n        }\n\n        private void OnResizeOverlayTimerFinished(object sender, object e)\n        {\n            _overlayTimer.Stop();\n            _overlayTimer.Tick -= OnResizeOverlayTimerFinished;\n            ShowOverlay = false;\n        }\n\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/ProfileViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing FluentTerminal.App.ViewModels.Settings;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    /// <summary>\n    /// Base class for all profile view models. Implements logic for saving, editing, resetting, etc.\n    /// </summary>\n    public abstract class ProfileViewModelBase<T> : ObservableObject where T : ProfileProviderViewModelBase\n    {\n        #region Fields\n\n        protected readonly IDialogService DialogService;\n        protected readonly ISettingsService SettingsService;\n\n        private List<KeyBinding> _bindingsBeforeEdit;\n        private Dictionary<string, string> _environmentVariablesBeforeEdit;\n        private string _nameBeforeEdit;\n\n        #endregion Fields\n\n        #region Properties\n\n        protected bool IsNew { get; private set; }\n\n        public Guid Id { get; private set; }\n\n        private bool _inEditMode;\n\n        public bool InEditMode\n        {\n            get => _inEditMode;\n            set => SetProperty(ref _inEditMode, value);\n        }\n\n        private string _name;\n\n        public string Name\n        {\n            get => _name;\n            set => SetProperty(ref _name, value);\n        }\n\n        public KeyBindingsViewModel KeyBindings { get; }\n\n        public ObservableCollection<EnvironmentVariableViewModel> EnvironmentVariables { get; } = new ObservableCollection<EnvironmentVariableViewModel>();\n\n        public T ProfileVm { get; protected set; }\n\n        #endregion Properties\n\n        #region Events\n\n        // Needs to be triggered from UI thread\n        public event EventHandler Deleted;\n\n        #endregion Events\n\n        #region Commands\n\n        public ICommand CancelEditCommand { get; }\n\n        public ICommand DeleteCommand { get; }\n\n        public ICommand EditCommand { get; }\n\n        public ICommand SaveChangesCommand { get; }\n\n        public ICommand AddKeyboardShortcutCommand { get; }\n\n        #endregion Commands\n\n        #region Constructor\n\n        protected ProfileViewModelBase(ShellProfile shellProfile, ISettingsService settingsService, IDialogService dialogService, bool isNew)\n        {\n            SettingsService = settingsService;\n            DialogService = dialogService;\n            IsNew = isNew;\n\n            KeyBindings = new KeyBindingsViewModel(shellProfile.Id.ToString(), dialogService, string.Empty, false);\n\n            foreach (var environmentVariable in shellProfile.EnvironmentVariables)\n            {\n                EnvironmentVariables.Add(new EnvironmentVariableViewModel\n                {\n                    Name = environmentVariable.Key,\n                    Value = environmentVariable.Value\n                });\n            }\n\n            Initialize(shellProfile);\n\n            DeleteCommand = new AsyncRelayCommand(DeleteAsync, CanDelete);\n            EditCommand = new RelayCommand(Edit);\n            CancelEditCommand = new AsyncRelayCommand(CancelEditAsync);\n            SaveChangesCommand = new AsyncRelayCommand(SaveChangesAsync);\n            AddKeyboardShortcutCommand = new AsyncRelayCommand(AddKeyboardShortcutAsync);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        // Requires UI thread\n        // Loads view model properties from the input shellProfile\n        protected void Initialize(ShellProfile shellProfile)\n        {\n            Id = shellProfile.Id;\n            Name = shellProfile.Name;\n\n            KeyBindings.Clear();\n            foreach (var keyBinding in shellProfile.KeyBindings.Select(x => new KeyBinding(x)).ToList())\n            {\n                KeyBindings.Add(keyBinding);\n            }\n        }\n\n        protected virtual bool HasChanges()\n        {\n            return ProfileVm.HasChanges()\n                || !_nameBeforeEdit.NullableEqualTo(_name)\n                || !(_bindingsBeforeEdit?.SequenceEqual(KeyBindings.KeyBindings.Select(x => x.Model).ToList()) ?? false)\n                || !(_environmentVariablesBeforeEdit?.SequenceEqual(EnvironmentVariables.ToDictionary(x => x.Name, x => x.Value)) ?? false);\n        }\n\n        // Requires UI thread\n        private async Task DeleteAsync()\n        {\n            // ConfigureAwait(true) because we need to trigger Deleted event from the calling (UI) thread.\n            var result = await DialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmDeleteProfile\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                Deleted?.Invoke(this, EventArgs.Empty);\n            }\n        }\n\n        protected abstract bool CanDelete();\n\n        private void Edit()\n        {\n            if (InEditMode)\n            {\n                return;\n            }\n\n            _bindingsBeforeEdit = KeyBindings.KeyBindings.Select(x => x.Model).ToList();\n            _environmentVariablesBeforeEdit = EnvironmentVariables.ToDictionary(x => x.Name, x => x.Value);\n            _nameBeforeEdit = _name;\n\n            KeyBindings.Editable = true;\n            InEditMode = true;\n        }\n\n        // Requires UI thread\n        private async Task CancelEditAsync()\n        {\n            if (IsNew)\n            {\n                await DeleteAsync().ConfigureAwait(false);\n\n                return;\n            }\n\n            if (!HasChanges())\n            {\n                KeyBindings.Editable = false;\n                InEditMode = false;\n\n                return;\n            }\n\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards\n            if (await DialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                        I18N.Translate(\"ConfirmDiscardChanges\"), DialogButton.OK, DialogButton.Cancel)\n                    .ConfigureAwait(true) == DialogButton.OK)\n            {\n                // Cancelled, so rollback\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards\n                await ProfileVm.RejectChangesAsync().ConfigureAwait(true);\n\n                KeyBindings.Editable = false;\n                InEditMode = false;\n            }\n        }\n\n        // Requires UI thread\n        private async Task SaveChangesAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var error = await ProfileVm.AcceptChangesAsync().ConfigureAwait(true);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                await DialogService.ShowMessageDialogAsync(I18N.Translate(\"InvalidInput\"), error, DialogButton.OK)\n                    .ConfigureAwait(false);\n\n                return;\n            }\n\n            if (EnvironmentVariables.Select(x => x.Name).Any(string.IsNullOrWhiteSpace))\n            {\n                await DialogService.ShowMessageDialogAsync(I18N.Translate(\"InvalidInput\"),\n                    I18N.Translate(\"EmptyEnvironmentVariableName\"), DialogButton.OK).ConfigureAwait(false);\n\n                return;\n            }\n\n            if (EnvironmentVariables.Select(x => x.Name).Distinct().Count() != EnvironmentVariables.Count)\n            {\n                await DialogService.ShowMessageDialogAsync(I18N.Translate(\"InvalidInput\"),\n                    I18N.Translate(\"DuplicateEnvironmentVariable\"), DialogButton.OK).ConfigureAwait(false);\n\n                return;\n            }\n\n            var profile = ProfileVm.Model;\n\n            profile.Id = Id;\n            profile.Name = _name;\n            profile.KeyBindings = KeyBindings.KeyBindings.Select(x => x.Model).ToList();\n            profile.EnvironmentVariables = EnvironmentVariables.ToDictionary(x => x.Name, x => x.Value);\n\n            if (profile is SshProfile sshProfile)\n            {\n                SettingsService.SaveSshProfile(sshProfile, IsNew);\n            }\n            else\n            {\n                SettingsService.SaveShellProfile(profile, IsNew);\n            }\n\n            KeyBindings.Editable = false;\n            InEditMode = false;\n            IsNew = false;\n        }\n\n        private Task AddKeyboardShortcutAsync()\n        {\n            return KeyBindings.ShowAddKeyBindingDialogAsync();\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Profiles/CommonProfileProviderViewModel.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows.Input;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    /// <summary>\n    /// Used for common profiles (PowerShell, CMD, WSL).\n    /// </summary>\n    public class CommonProfileProviderViewModel : ProfileProviderViewModelBase\n    {\n        #region Fields\n\n        private readonly IFileSystemService _fileSystemService;\n\n        #endregion Fields\n\n        #region Properties\n\n        public bool PreInstalled { get; private set; }\n\n        private string _location;\n\n        public string Location\n        {\n            get => _location;\n            set => SetProperty(ref _location, value);\n        }\n\n        private string _workingDirectory;\n\n        public string WorkingDirectory\n        {\n            get => _workingDirectory;\n            set => SetProperty(ref _workingDirectory, value);\n        }\n\n        private string _arguments;\n\n        public string Arguments\n        {\n            get => _arguments;\n            set => SetProperty(ref _arguments, value);\n        }\n\n        #endregion Properties\n\n        #region Commands\n\n        public ICommand BrowseForCustomShellCommand { get; }\n\n        public ICommand BrowseForWorkingDirectoryCommand { get; }\n\n        #endregion Commands\n\n        #region Constructor\n\n        public CommonProfileProviderViewModel(ISettingsService settingsService, IApplicationView applicationView,\n            IFileSystemService fileSystemService, ShellProfile original = null) : base(settingsService, applicationView,\n            true, original)\n        {\n            _fileSystemService = fileSystemService;\n\n            BrowseForCustomShellCommand = new AsyncRelayCommand(BrowseForCustomShell);\n            BrowseForWorkingDirectoryCommand = new AsyncRelayCommand(BrowseForWorkingDirectory);\n\n            Initialize(Model);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        private void Initialize(ShellProfile profile)\n        {\n            PreInstalled = profile.PreInstalled;\n            Location = profile.Location;\n            Arguments = profile.Arguments;\n            WorkingDirectory = profile.WorkingDirectory;\n        }\n\n        protected override void LoadFromProfile(ShellProfile profile)\n        {\n            base.LoadFromProfile(profile);\n\n            Initialize(profile);\n        }\n\n        protected override async Task CopyToProfileAsync(ShellProfile profile)\n        {\n            await base.CopyToProfileAsync(profile).ConfigureAwait(false);\n\n            profile.Location = _location;\n            profile.Arguments = _arguments;\n            profile.WorkingDirectory = _workingDirectory;\n        }\n\n        public override async Task<string> ValidateAsync()\n        {\n            var error = await base.ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return error;\n            }\n\n            if (!string.IsNullOrEmpty(_location))\n            {\n                return null;\n            }\n\n            error = I18N.Translate(\"LocationCantBeEmpty\");\n\n            return string.IsNullOrEmpty(error) ? \"Location cannot be empty.\" : error;\n        }\n\n        public override bool HasChanges()\n        {\n            return base.HasChanges() || !Model.Location.NullableEqualTo(_location) ||\n                   !Model.WorkingDirectory.NullableEqualTo(_workingDirectory) ||\n                   !Model.Arguments.NullableEqualTo(_arguments);\n        }\n\n        // Requires UI thread\n        private async Task BrowseForCustomShell()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var file = await _fileSystemService.OpenFileAsync(new[] { \".exe\" }).ConfigureAwait(true);\n            if (file != null)\n            {\n                Location = file.Path;\n            }\n        }\n\n        // Requires UI thread\n        private async Task BrowseForWorkingDirectory()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var directory = await _fileSystemService.BrowseForDirectoryAsync().ConfigureAwait(true);\n            if (directory != null)\n            {\n                WorkingDirectory = directory;\n            }\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Profiles/ProfileProviderViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Web;\nusing Windows.UI.Core;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Messages;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Messaging;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    /// <summary>\n    /// Base class for all profile view model classes. It contains properties shared by all other view models\n    /// (theme-related properties, line-ending translation, and WinPTY/ConPTY selection).\n    /// </summary>\n    public abstract class ProfileProviderViewModelBase : ObservableObject,\n        IRecipient<ThemeAddedMessage>,\n        IRecipient<ThemeDeletedMessage>\n    {\n        #region Fields\n\n        protected readonly ISettingsService SettingsService;\n        protected readonly IApplicationView ApplicationView;\n        private readonly bool _strictProfileType;\n\n        #endregion Fields\n\n        #region Properties\n\n        private ShellProfile _model;\n\n        public ShellProfile Model\n        {\n            get => _model;\n            set\n            {\n                if (value == null)\n                {\n                    throw new ArgumentNullException(nameof(value));\n                }\n\n                if (ReferenceEquals(_model, value))\n                {\n                    return;\n                }\n\n                if (_strictProfileType && _model != null && _model.GetType() != value.GetType())\n                {\n                    throw new ArgumentException($\"The value has to be of type {_model.GetType().Name}.\");\n                }\n\n                _model = value;\n\n                LoadFromProfile(value);\n            }\n        }\n\n        public ObservableCollection<TabTheme> TabThemes { get; }\n\n        public ObservableCollection<TerminalTheme> TerminalThemes { get; }\n\n        private TabTheme _selectedTabTheme;\n\n        public TabTheme SelectedTabTheme\n        {\n            get => _selectedTabTheme ?? (_selectedTabTheme = TabThemes.FirstOrDefault(t => t.Id.Equals(_tabThemeId)));\n            set\n            {\n                if (value == null)\n                {\n                    // Ignore attempt setting null.\n                    return;\n                }\n\n                // Ensure that it's from the list\n                var theme = TabThemes.Contains(value)\n                    ? value\n                    : TabThemes.FirstOrDefault(t => t.Id == value.Id) ?? TabThemes.First();\n\n                if (SetProperty(ref _selectedTabTheme, theme))\n                {\n                    _tabThemeId = theme.Id;\n                }\n            }\n        }\n\n        private int _tabThemeId;\n\n        public int TabThemeId\n        {\n            get => _tabThemeId;\n            set\n            {\n                if (SetProperty(ref _tabThemeId, value))\n                {\n                    SelectedTabTheme = TabThemes.FirstOrDefault(t => t.Id.Equals(value));\n                }\n            }\n        }\n\n        private TerminalTheme _selectedTerminalTheme;\n\n        public TerminalTheme SelectedTerminalTheme\n        {\n            get => _selectedTerminalTheme ??\n                   (_selectedTerminalTheme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(_terminalThemeId)));\n            set\n            {\n                TerminalTheme theme = value;\n\n                if (theme == null)\n                {\n                    return;\n                }\n                else if (!TerminalThemes.Contains(theme))\n                {\n                    // Ensure that it's from the list\n                    theme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(theme.Id)) ?? TerminalThemes.First();\n                }\n\n                if (SetProperty(ref _selectedTerminalTheme, theme))\n                {\n                    _terminalThemeId = theme.Id;\n                }\n            }\n        }\n\n        private Guid _terminalThemeId;\n\n        public Guid TerminalThemeId\n        {\n            get => _terminalThemeId;\n            set\n            {\n                if (SetProperty(ref _terminalThemeId, value))\n                {\n                    SelectedTerminalTheme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(value));\n                }\n            }\n        }\n\n        private bool _useConPty;\n\n        public bool UseConPty\n        {\n            get => _useConPty;\n            set => SetProperty(ref _useConPty, value);\n        }\n\n        private bool _useBuffer;\n\n        public bool UseBuffer\n        {\n            get => _useBuffer;\n            set => SetProperty(ref _useBuffer, value);\n        }\n\n        #endregion Properties\n\n        #region Constructor\n\n        protected ProfileProviderViewModelBase(ISettingsService settingsService, IApplicationView applicationView,\n            bool strictProfileType, ShellProfile original = null)\n        {\n            SettingsService = settingsService;\n            ApplicationView = applicationView;\n            _strictProfileType = strictProfileType;\n\n            _model = original ?? new ShellProfile();\n\n            TabThemes = new ObservableCollection<TabTheme>(settingsService.GetTabThemes());\n\n            SelectedTabTheme = TabThemes.First();\n\n            TerminalThemes = new ObservableCollection<TerminalTheme>(settingsService.GetThemes());\n\n            TerminalThemes.Insert(0, new TerminalTheme {Id = Guid.Empty, Name = \"Default\"});\n\n            SelectedTerminalTheme = TerminalThemes.First();\n\n            Initialize(Model);\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        public void Receive(ThemeDeletedMessage message)\n        {\n            var theme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(message.ThemeId));\n\n            if (theme == null)\n            {\n                return;\n            }\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                TerminalThemes.Remove(theme);\n\n                if (_terminalThemeId.Equals(message.ThemeId))\n                {\n                    SelectedTerminalTheme = TerminalThemes.First();\n                }\n            }, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(ThemeAddedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() => TerminalThemes.Add(message.Theme), CoreDispatcherPriority.Low);\n        }\n\n        private void Initialize(ShellProfile profile)\n        {\n            UseConPty = profile.UseConPty;\n            UseBuffer = profile.UseBuffer;\n            TerminalThemeId = profile.TerminalThemeId;\n            TabThemeId = profile.TabThemeId;\n        }\n\n        protected virtual void LoadFromProfile(ShellProfile profile)\n        {\n            Initialize(profile);\n        }\n\n        protected virtual Task CopyToProfileAsync(ShellProfile profile)\n        {\n            profile.UseConPty = _useConPty;\n            profile.UseBuffer = _useBuffer;\n            profile.TerminalThemeId = _terminalThemeId;\n            profile.TabThemeId = _tabThemeId;\n            return Task.CompletedTask;\n        }\n\n        public virtual Task<string> ValidateAsync()\n        {\n            return Task.FromResult<string>(null);\n        }\n\n        /// <summary>\n        /// Returns <c>true</c> if view model values aren't equal to the corresponding values of the\n        /// underlying <see cref=\"ShellProfile\"/>.\n        /// </summary>\n        public virtual bool HasChanges()\n        {\n            return Model.UseConPty != _useConPty ||\n                   Model.UseBuffer != _useBuffer ||\n                   !Model.TerminalThemeId.Equals(_terminalThemeId) ||\n                   Model.TabThemeId != _tabThemeId;\n        }\n\n        /// <summary>\n        /// Copies values from the view model to the underlying <see cref=\"ShellProfile\"/>.\n        /// </summary>\n        /// <param name=\"acceptIfInvalid\">Defines what will happen if the view model data is invalid (if\n        /// <see cref=\"ValidateAsync\"/> returns non-empty string). If this parameter is set to <c>true</c>, the\n        /// data will be copied to the underlying <see cref=\"ShellProfile\"/> anyway. If it's set to <c>false</c>,\n        /// (default) the underlying <see cref=\"ShellProfile\"/> won't be changed at all.</param>\n        /// <returns><c>null</c> or empty string if the operation was successful (the data is valid), or an error\n        /// message returned by <see cref=\"ValidateAsync\"/> method.</returns>\n        public async Task<string> AcceptChangesAsync(bool acceptIfInvalid = false)\n        {\n            var error = await ValidateAsync().ConfigureAwait(false);\n\n            if (acceptIfInvalid || string.IsNullOrEmpty(error))\n            {\n                await CopyToProfileAsync(Model).ConfigureAwait(false);\n            }\n\n            return error;\n        }\n\n        public Task RejectChangesAsync()\n        {\n            return ApplicationView.ExecuteOnUiThreadAsync(() => LoadFromProfile(Model));\n        }\n\n        #endregion Methods\n\n        #region Links/shortcuts related\n\n        private const string UseConPtyQueryStringName = \"conpty\";\n        private const string UseBufferQueryStringName = \"buffer\";\n        private const string TerminalThemeIdQueryStringName = \"theme\";\n        private const string TabThemeIdQueryStringName = \"tab\";\n\n        private const string ShortcutFileFormat = @\"[{{000214A0-0000-0000-C000-000000000046}}]\nProp3=19,0\n[InternetShortcut]\nIDList=\nURL={0}\n\";\n\n        public static string GetShortcutFileContent(string url) => string.Format(ShortcutFileFormat, url);\n\n        public static IEnumerable<Tuple<string, string>> ParseParams(string uriOpts, char separator) =>\n            uriOpts.Split(separator).Select(ParseSshOptionFromUri).Where(p => p != null);\n\n        private static Tuple<string, string> ParseSshOptionFromUri(string option)\n        {\n            string[] nv = option.Split('=');\n\n            if (nv.Length != 2 || string.IsNullOrEmpty(nv[0]))\n            {\n                // For now simply ignore invalid options\n                return null;\n                //throw new FormatException($\"Invalid SSH option '{option}'.\");\n            }\n\n            return Tuple.Create(HttpUtility.UrlDecode(nv[0]), HttpUtility.UrlDecode(nv[1]));\n        }\n\n        /// <summary>\n        /// Generates URL.\n        /// </summary>\n        /// <returns><see cref=\"Tuple\"/> whose first item represents success. If the first item is <c>true</c>,\n        /// the second contains the URL. If the first item is <c>false</c>, the second contains error message.</returns>\n        public virtual Task<Tuple<bool, string>> GetUrlAsync() =>\n            Task.FromResult(Tuple.Create(false, \"Not supported.\"));\n\n        public string GetBaseQueryString()\n        {\n            var queryString = $\"{UseConPtyQueryStringName}={_useConPty}&{UseBufferQueryStringName}={_useBuffer}\";\n\n            if (_tabThemeId != TabThemes.First().Id)\n            {\n                queryString += $\"&{TabThemeIdQueryStringName}={_tabThemeId:##########}\";\n            }\n\n            if (!_terminalThemeId.Equals(TerminalThemes.First().Id))\n            {\n                queryString += $\"&{TerminalThemeIdQueryStringName}={_terminalThemeId}\";\n            }\n\n            return queryString;\n        }\n\n        public void LoadBaseFromQueryString(IList<Tuple<string, string>> queryStringParams)\n        {\n            if (queryStringParams == null)\n            {\n                return;\n            }\n\n            var keyValue = queryStringParams.FirstOrDefault(t =>\n                UseConPtyQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && bool.TryParse(keyValue.Item2?.ToLower(), out bool useConPty))\n            {\n                UseConPty = useConPty;\n            }\n\n            keyValue = queryStringParams.FirstOrDefault(t =>\n                UseBufferQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && bool.TryParse(keyValue.Item2?.ToLower(), out bool useBuffer))\n            {\n                UseConPty = useBuffer;\n            }\n\n            keyValue = queryStringParams.FirstOrDefault(t =>\n                TabThemeIdQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && int.TryParse(keyValue.Item2, out int tabThemeId))\n            {\n                TabThemeId = tabThemeId;\n            }\n\n            keyValue = queryStringParams.FirstOrDefault(t =>\n                TerminalThemeIdQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && Guid.TryParse(keyValue.Item2, out Guid terminalThemeId))\n            {\n                TerminalThemeId = terminalThemeId;\n            }\n        }\n\n        #endregion Links/shortcuts related\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Profiles/SshConnectViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing System.Web;\nusing System.Windows.Input;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    /// <summary>\n    /// View-model for rich-UI based SSH profiles.\n    /// </summary>\n    public class SshConnectViewModel : ProfileProviderViewModelBase\n    {\n        #region Static\n\n        public static string GetErrorString(SshConnectionInfoValidationResult result, string separator = \"; \") =>\n            string.Join(separator, GetErrors(result));\n\n        public static IEnumerable<string> GetErrors(SshConnectionInfoValidationResult result)\n        {\n            if (result == SshConnectionInfoValidationResult.Valid)\n            {\n                yield break;\n            }\n\n            foreach (var value in Enum.GetValues(typeof(SshConnectionInfoValidationResult))\n                .Cast<SshConnectionInfoValidationResult>().Where(r => r != SshConnectionInfoValidationResult.Valid))\n            {\n                if ((value & result) == value)\n                {\n                    yield return I18N.Translate($\"{nameof(SshConnectionInfoValidationResult)}.{value}\");\n                }\n            }\n        }\n\n        #endregion Static\n\n        #region Fields\n\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly IFileSystemService _fileSystemService;\n\n        // To prevent validating the existence of the same file multiple times because it's kinda expensive\n        private string _validatedIdentityFile;\n\n        #endregion Fields\n\n        #region Properties\n\n        private string _host;\n\n        public string Host\n        {\n            get => _host;\n            set => SetProperty(ref _host, value);\n        }\n\n        private ushort _sshPort;\n\n        public ushort SshPort\n        {\n            get => _sshPort;\n            set => SetProperty(ref _sshPort, value);\n        }\n\n        private string _username;\n\n        public string Username\n        {\n            get => _username;\n            set => SetProperty(ref _username, value);\n        }\n\n        private string _identityFile;\n\n        public string IdentityFile\n        {\n            get => _identityFile;\n            set => SetProperty(ref _identityFile, value);\n        }\n\n        private bool _useMosh;\n\n        public bool UseMosh\n        {\n            get => _useMosh;\n            set => SetProperty(ref _useMosh, value);\n        }\n\n        private ushort _moshPortFrom;\n\n        public ushort MoshPortFrom\n        {\n            get => _moshPortFrom;\n            set => SetProperty(ref _moshPortFrom, value);\n        }\n\n        private ushort _moshPortTo;\n\n        public ushort MoshPortTo\n        {\n            get => _moshPortTo;\n            set => SetProperty(ref _moshPortTo, value);\n        }\n\n        #endregion Properties\n\n        #region Commands\n\n        public ICommand BrowseForIdentityFileCommand { get; }\n\n        #endregion Commands\n\n        #region Constructor\n\n        public SshConnectViewModel(ISettingsService settingsService, IApplicationView applicationView,\n            ITrayProcessCommunicationService trayProcessCommunicationService, IFileSystemService fileSystemService,\n            SshProfile original = null) : base(settingsService, applicationView, true,\n            original ?? new SshProfile(applicationView.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 7)) { UseMosh = settingsService.GetApplicationSettings().UseMoshByDefault,\n                RequestConPty = settingsService.GetApplicationSettings().UseConPty\n            })\n        {\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _fileSystemService = fileSystemService;\n\n            Initialize((SshProfile)Model);\n\n            BrowseForIdentityFileCommand = new AsyncRelayCommand(BrowseForIdentityFileAsync);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        // Fills the view model properties from the input sshProfile\n        private void Initialize(SshProfile sshProfile)\n        {\n            Host = sshProfile.Host;\n            SshPort = sshProfile.SshPort;\n\n            Username = sshProfile.Username;\n\n            if (string.IsNullOrEmpty(Username))\n            {\n                _trayProcessCommunicationService.GetUserNameAsync().ContinueWith(t =>\n                {\n                    var username = t.Result;\n\n                    if (string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(username))\n                    {\n                        ApplicationView.ExecuteOnUiThreadAsync(() => Username = username);\n                    }\n                }, TaskContinuationOptions.OnlyOnRanToCompletion);\n            }\n\n            IdentityFile = sshProfile.IdentityFile;\n            UseMosh = sshProfile.UseMosh;\n            MoshPortFrom = sshProfile.MoshPortFrom;\n            MoshPortTo = sshProfile.MoshPortTo;\n        }\n\n        // Requires UI thread\n        private async Task BrowseForIdentityFileAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var file = await _fileSystemService.OpenFileAsync(new[] { \"*\" }).ConfigureAwait(true);\n            if (file != null)\n            {\n                IdentityFile = file.Path;\n            }\n        }\n\n        private string GetArgumentsString()\n        {\n            var sshArguments = GetSshArguments();\n\n            if (!_useMosh)\n            {\n                return string.IsNullOrWhiteSpace(sshArguments) ? $\"{_username}@{_host}\" : $\"{sshArguments} {_username}@{_host}\";\n            }\n\n            return string.IsNullOrEmpty(sshArguments)\n                ? $\"-p {_moshPortFrom}:{_moshPortTo} {_username}@{_host}\"\n                : $\"-p {_moshPortFrom}:{_moshPortTo} --ssh=\\\"ssh {sshArguments}\\\" {_username}@{_host}\";\n        }\n\n        private string GetSshArguments()\n        {\n            if (string.IsNullOrEmpty(_identityFile))\n            {\n                return _sshPort == SshProfile.DefaultSshPort ? null : $\"-p {_sshPort:#####}\";\n            }\n\n            return _sshPort == SshProfile.DefaultSshPort\n                ? $\"-i \\\"{_identityFile}\\\"\"\n                : $\"-p {_sshPort:#####} -i \\\"{_identityFile}\\\"\";\n        }\n\n        protected override void LoadFromProfile(ShellProfile profile)\n        {\n            base.LoadFromProfile(profile);\n\n            Initialize((SshProfile)profile);\n        }\n\n        protected override async Task CopyToProfileAsync(ShellProfile profile)\n        {\n            await base.CopyToProfileAsync(profile).ConfigureAwait(false);\n\n            var sshProfile = (SshProfile) profile;\n\n            sshProfile.Location = _useMosh ? Constants.MoshCommandName : Constants.SshCommandName;\n            sshProfile.Arguments = GetArgumentsString();\n\n            sshProfile.WorkingDirectory = null;\n\n            sshProfile.Host = _host;\n            sshProfile.SshPort = _sshPort;\n            sshProfile.Username = _username;\n            sshProfile.IdentityFile = _identityFile;\n            sshProfile.UseMosh = _useMosh;\n            sshProfile.MoshPortFrom = _moshPortFrom;\n            sshProfile.MoshPortTo = _moshPortTo;\n        }\n\n        public override async Task<string> ValidateAsync()\n        {\n            var error = await base.ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return error;\n            }\n\n            var result = await GetSshInfoValidationResultAsync().ConfigureAwait(false);\n\n            if (result == SshConnectionInfoValidationResult.Valid)\n            {\n                return null;\n            }\n\n            error = GetErrorString(result, Environment.NewLine);\n\n            if (string.IsNullOrEmpty(error))\n            {\n                error = \"Invalid input.\";\n            }\n\n            return error;\n        }\n\n        public override bool HasChanges()\n        {\n            var original = (SshProfile)Model;\n\n            return base.HasChanges() || !original.Host.NullableEqualTo(_host) || original.SshPort != _sshPort ||\n                   !original.Username.NullableEqualTo(_username) ||\n                   !original.IdentityFile.NullableEqualTo(_identityFile) || original.UseMosh != _useMosh ||\n                   original.MoshPortFrom != _moshPortFrom || original.MoshPortTo != _moshPortTo;\n        }\n\n        private async Task<SshConnectionInfoValidationResult> GetSshInfoValidationResultAsync()\n        {\n            var result = SshConnectionInfoValidationResult.Valid;\n\n            if (string.IsNullOrEmpty(_username))\n            {\n                result |= SshConnectionInfoValidationResult.UsernameEmpty;\n            }\n\n            if (string.IsNullOrEmpty(_host))\n            {\n                result |= SshConnectionInfoValidationResult.HostEmpty;\n            }\n\n            if (_sshPort < 1)\n            {\n                result |= SshConnectionInfoValidationResult.SshPortZeroOrNegative;\n            }\n\n            if (!await CheckIdentityFileExistsAsync().ConfigureAwait(false))\n            {\n                result |= SshConnectionInfoValidationResult.IdentityFileDoesNotExist;\n            }\n\n            if (!_useMosh)\n            {\n                return result;\n            }\n\n            if (_moshPortFrom < 1)\n            {\n                result |= SshConnectionInfoValidationResult.MoshPortZeroOrNegative;\n            }\n\n            if (_moshPortFrom > _moshPortTo)\n            {\n                result |= SshConnectionInfoValidationResult.MoshPortRangeInvalid;\n            }\n\n            return result;\n        }\n\n        // Requires UI thread\n        private async Task<bool> CheckIdentityFileExistsAsync()\n        {\n            var identityFile = _identityFile;\n\n            if (string.IsNullOrEmpty(identityFile) ||\n                identityFile.Equals(_validatedIdentityFile, StringComparison.OrdinalIgnoreCase))\n            {\n                return true;\n            }\n\n            // Here we need to take into account that files from ssh config dir can be provided by name, without full path.\n            string fullPath;\n\n            if (Path.IsPathRooted(identityFile))\n            {\n                fullPath = identityFile;\n            }\n            else\n            {\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n                var sshConfigDir = await _trayProcessCommunicationService.GetSshConfigDirAsync().ConfigureAwait(true);\n\n                if (string.IsNullOrEmpty(sshConfigDir))\n                {\n                    return false;\n                }\n\n                fullPath = Path.Combine(sshConfigDir, identityFile);\n            }\n\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            if (await _trayProcessCommunicationService.CheckFileExistsAsync(fullPath).ConfigureAwait(true))\n            {\n                _validatedIdentityFile = identityFile;\n\n                IdentityFile = fullPath;\n\n                return true;\n            }\n\n            return false;\n        }\n\n        public void SetValidatedIdentityFile(string identityFile)\n        {\n            _validatedIdentityFile = identityFile;\n            IdentityFile = identityFile;\n        }\n\n        #endregion Methods\n\n        #region Links/shortcuts related\n\n        // Resources:\n        // https://tools.ietf.org/html/draft-ietf-secsh-scp-sftp-ssh-uri-04#section-3\n        // https://man.openbsd.org/ssh\n\n        private const string SshUriScheme = \"ssh\";\n        private const string MoshUriScheme = \"mosh\";\n\n        // Constant derived from https://man.openbsd.org/ssh\n        private const string IdentityFileOptionName = \"IdentityFile\";\n\n        private static readonly string[] ValidMoshPortsNames = { \"mosh_ports\", \"mosh-ports\" };\n\n        private static readonly Regex MoshRangeRx =\n            new Regex(@\"^(?<from>\\d{1,5})[:-](?<to>\\d{1,5})$\", RegexOptions.Compiled);\n\n        public static bool CheckScheme(Uri uri) =>\n            SshUriScheme.Equals(uri?.Scheme, StringComparison.OrdinalIgnoreCase) ||\n            MoshUriScheme.Equals(uri?.Scheme, StringComparison.OrdinalIgnoreCase);\n\n        public static SshConnectViewModel ParseUri(Uri uri, ISettingsService settingsService,\n            IApplicationView applicationView, ITrayProcessCommunicationService trayProcessCommunicationService,\n            IFileSystemService fileSystemService, IApplicationDataContainer historyContainer)\n        {\n            var vm = new SshConnectViewModel(settingsService, applicationView, trayProcessCommunicationService,\n                fileSystemService)\n            {\n                Host = uri.Host,\n                UseMosh = MoshUriScheme.Equals(uri.Scheme, StringComparison.OrdinalIgnoreCase)\n            };\n\n            if (uri.Port >= 0)\n                vm.SshPort = (ushort)uri.Port;\n\n            if (!string.IsNullOrEmpty(uri.UserInfo))\n            {\n                string[] parts = uri.UserInfo.Split(';');\n\n                if (parts.Length > 2)\n                    throw new FormatException($\"UserInfo part contains {parts.Length} elements.\");\n\n                vm.Username = HttpUtility.UrlDecode(parts[0]);\n\n                if (parts.Length > 1)\n                {\n                    // For now we are only interested in IdentityFile option\n                    Tuple<string, string> identityFileOption = ParseParams(parts[1], ',').FirstOrDefault(p =>\n                        string.Equals(p.Item1, IdentityFileOptionName, StringComparison.OrdinalIgnoreCase));\n\n                    vm.IdentityFile = identityFileOption?.Item2;\n                }\n            }\n\n            // ReSharper disable once ConstantConditionalAccessQualifier\n            string queryString = uri.Query?.Trim();\n\n            if (string.IsNullOrEmpty(queryString))\n            {\n                return vm;\n            }\n\n            if (queryString.StartsWith(\"?\", StringComparison.Ordinal))\n            {\n                queryString = queryString.Substring(1);\n            }\n\n            var queryStringParams = ParseParams(queryString, '&').ToList();\n\n            var moshPorts = queryStringParams.FirstOrDefault(p =>\n                ValidMoshPortsNames.Any(n => string.Equals(p.Item1, n, StringComparison.OrdinalIgnoreCase)));\n\n            if (moshPorts != null)\n            {\n                Match match = MoshRangeRx.Match(moshPorts.Item2);\n\n                if (match.Success)\n                {\n                    vm.MoshPortFrom = ushort.Parse(match.Groups[\"from\"].Value);\n                    vm.MoshPortTo = ushort.Parse(match.Groups[\"to\"].Value);\n                }\n            }\n\n            vm.LoadBaseFromQueryString(queryStringParams);\n\n            return vm;\n        }\n\n        public override async Task<Tuple<bool, string>> GetUrlAsync()\n        {\n            var error = await base.ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return Tuple.Create(false, error);\n            }\n\n            var result = await GetSshInfoValidationResultAsync().ConfigureAwait(false);\n\n            if (result != SshConnectionInfoValidationResult.Valid &&\n                // For links we can ignore missing username\n                result != SshConnectionInfoValidationResult.UsernameEmpty)\n            {\n\n                error = GetErrorString(result, Environment.NewLine);\n\n                if (string.IsNullOrEmpty(error))\n                {\n                    error = \"Invalid input.\";\n                }\n\n                return Tuple.Create(false, error);\n            }\n\n            var sb = new StringBuilder(_useMosh ? MoshUriScheme : SshUriScheme);\n\n            sb.Append(\"://\");\n\n            bool containsUserInfo = false;\n\n            if (!string.IsNullOrEmpty(_username))\n            {\n                sb.Append(HttpUtility.UrlEncode(_username));\n\n                containsUserInfo = true;\n            }\n\n            if (!string.IsNullOrEmpty(_identityFile))\n            {\n                sb.Append(\";\");\n\n                if (!string.IsNullOrEmpty(_identityFile))\n                {\n                    sb.Append($\"{IdentityFileOptionName}={HttpUtility.UrlEncode(_identityFile)}\");\n                }\n\n                containsUserInfo = true;\n            }\n\n            if (containsUserInfo)\n                sb.Append(\"@\");\n\n            sb.Append(_host);\n\n            if (_sshPort != SshProfile.DefaultSshPort)\n            {\n                sb.Append($\":{_sshPort:#####}\");\n            }\n\n            sb.Append(\"/\");\n\n            bool queryStringAdded = false;\n\n            if (_useMosh)\n            {\n                sb.Append(\n                    $\"?{ValidMoshPortsNames[0]}={_moshPortFrom:#####}-{_moshPortTo:#####}\");\n\n                queryStringAdded = true;\n            }\n\n            var terminalInfoQueryString = GetBaseQueryString();\n\n            if (!string.IsNullOrEmpty(terminalInfoQueryString))\n            {\n                sb.Append($\"{(queryStringAdded ? \"&\" : \"?\")}{terminalInfoQueryString}\");\n            }\n\n            return Tuple.Create(true, sb.ToString());\n        }\n\n        #endregion Links/shortcuts related\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Profiles/SshConnectionInfoValidationResult.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    [Flags]\n    public enum SshConnectionInfoValidationResult\n    {\n        Valid = 0, \n        UsernameEmpty = 1,\n        HostEmpty = 2,\n        SshPortZeroOrNegative = 4,\n        MoshPortZeroOrNegative = 8,\n        MoshPortRangeInvalid = 16, \n        IdentityFileDoesNotExist = 32\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/AboutPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class AboutPageViewModel : ObservableObject\n    {\n        private const string BaseUrl = \"https://github.com/felixse/FluentTerminal/releases/tag/\";\n        private readonly IUpdateService _updateService;\n        private string _latestVersion;\n        private readonly IApplicationView _applicationView;\n\n        public AboutPageViewModel(IUpdateService updateService, IApplicationView applicationView)\n        {\n            _updateService = updateService;\n            _applicationView = applicationView;\n\n            CheckForUpdatesCommand = new AsyncRelayCommand(() => CheckForUpdateAsync(true));\n        }\n\n        public ICommand CheckForUpdatesCommand { get; }\n\n        public string CurrentVersion\n        {\n            get\n            {\n                var version = _updateService.GetCurrentVersion();\n                return $\"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}\";\n            }\n        }\n\n        public string CurrentVersionReleaseNotesURL => BaseUrl + CurrentVersion;\n\n        public string LatestVersion\n        {\n            get => _latestVersion;\n            set\n            {\n                if (SetProperty(ref _latestVersion, value))\n                {\n                    OnPropertyChanged(nameof(LatestVersionFound));\n                    OnPropertyChanged(nameof(LatestVersionLoading));\n                    OnPropertyChanged(nameof(LatestVersionNotFound));\n                    OnPropertyChanged(nameof(LatestVersionReleaseNotesURL));\n                }\n            }\n        }\n\n        public bool LatestVersionFound => !LatestVersionNotFound && !LatestVersionLoading;\n\n        public bool LatestVersionLoading => LatestVersion == null;\n\n        public bool LatestVersionNotFound => LatestVersion == \"0.0.0.0\";\n\n        public string LatestVersionReleaseNotesURL => BaseUrl + LatestVersion;\n\n        public Task OnNavigatedTo()\n        {\n            return CheckForUpdateAsync(false);\n        }\n\n        private async Task CheckForUpdateAsync(bool notifyNoUpdate)\n        {\n            var version = await _updateService.GetLatestVersionAsync().ConfigureAwait(false);\n            await _applicationView.ExecuteOnUiThreadAsync(() =>\n                    LatestVersion = $\"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}\")\n                .ConfigureAwait(false);\n            await _updateService.CheckForUpdateAsync(notifyNoUpdate).ConfigureAwait(false);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/GeneralPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class GeneralPageViewModel : ObservableObject\n    {\n        private readonly ApplicationSettings _applicationSettings;\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private readonly IStartupTaskService _startupTaskService;\n        private bool _canEnableStartupTask;\n        private bool _startupTaskEnabled;\n        private bool _shouldRestartForTrayMessage;\n        private string _startupTaskErrorMessage;\n        private bool _needsToRestart;\n        private readonly IApplicationLanguageService _applicationLanguageService;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly IFileSystemService _fileSystemService;\n\n        public GeneralPageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider,\n            IStartupTaskService startupTaskService, IApplicationLanguageService applicationLanguageService,\n            ITrayProcessCommunicationService trayProcessCommunicationService, IFileSystemService fileSystemService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _startupTaskService = startupTaskService;\n            _applicationLanguageService = applicationLanguageService;\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _fileSystemService = fileSystemService;\n\n            _applicationSettings = _settingsService.GetApplicationSettings();\n\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n            BrowseLogDirectoryCommand = new AsyncRelayCommand(BrowseLogDirectoryAsync);\n        }\n\n        public IEnumerable<string> Languages => _applicationLanguageService.Languages;\n\n        public bool NeedsToRestart\n        {\n            get => _needsToRestart;\n            set => SetProperty(ref _needsToRestart, value);\n        }\n\n        public string SelectedLanguage\n        {\n            get => _applicationLanguageService.GetCurrentLanguage();\n            set\n            {\n                _applicationLanguageService.SetLanguage(value);\n                NeedsToRestart = true;\n            }\n        }\n\n        // Requires UI thread\n        public async Task OnNavigatedToAsync()\n        {\n            // ConfigureAwait(true) because we want to execute SetStartupTaskPropertiesForStatus from the calling (UI) thread.\n            var startupTaskStatus = await _startupTaskService.GetStatusAsync().ConfigureAwait(true);\n            SetStartupTaskPropertiesForStatus(startupTaskStatus);\n        }\n\n        public bool ShowCustomTitleInTitlebar\n        {\n            get => _applicationSettings.ShowCustomTitleInTitlebar;\n            set\n            {\n                if (_applicationSettings.ShowCustomTitleInTitlebar != value)\n                {\n                    _applicationSettings.ShowCustomTitleInTitlebar = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool EnableTrayIcon\n        {\n            get => _applicationSettings.EnableTrayIcon;\n            set\n            {\n                if (_applicationSettings.EnableTrayIcon != value)\n                {\n                    _applicationSettings.EnableTrayIcon = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n\n                    // Toggle message telling user to restart the program\n                    ShouldRestartForTrayMessage = !ShouldRestartForTrayMessage;\n                }\n            }\n        }\n\n        public bool ShouldRestartForTrayMessage\n        {\n            get => _shouldRestartForTrayMessage;\n            set => SetProperty(ref _shouldRestartForTrayMessage, value);\n        }\n\n        public bool ShowNewOutputIndicator\n        {\n            get => _applicationSettings.ShowNewOutputIndicator;\n            set\n            {\n                if (_applicationSettings.ShowNewOutputIndicator != value)\n                {\n                    _applicationSettings.ShowNewOutputIndicator = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool UseMoshByDefault\n        {\n            get => _applicationSettings.UseMoshByDefault;\n            set\n            {\n                if (_applicationSettings.UseMoshByDefault != value)\n                {\n                    _applicationSettings.UseMoshByDefault = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool AutoFallbackToWindowsUsernameInLinks\n        {\n            get => _applicationSettings.AutoFallbackToWindowsUsernameInLinks;\n            set\n            {\n                if (_applicationSettings.AutoFallbackToWindowsUsernameInLinks != value)\n                {\n                    _applicationSettings.AutoFallbackToWindowsUsernameInLinks = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool RTrimCopiedLines\n        {\n            get => _applicationSettings.RTrimCopiedLines;\n            set\n            {\n                if (_applicationSettings.RTrimCopiedLines != value)\n                {\n                    _applicationSettings.RTrimCopiedLines = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool MuteTerminalBeeps\n        {\n            get => _applicationSettings.MuteTerminalBeeps;\n            set\n            {\n                if (_applicationSettings.MuteTerminalBeeps != value)\n                {\n                    _applicationSettings.MuteTerminalBeeps = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n\n                    _trayProcessCommunicationService.MuteTerminalAsync(value);\n                }\n            }\n        }\n        public bool EnableLogging\n        {\n            get => _applicationSettings.EnableLogging;\n            set\n            {\n                if (_applicationSettings.EnableLogging != value)\n                {\n                    _applicationSettings.EnableLogging = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool PrintableOutputOnly\n        {\n            get => _applicationSettings.PrintableOutputOnly;\n            set\n            {\n                if (_applicationSettings.PrintableOutputOnly != value)\n                {\n                    _applicationSettings.PrintableOutputOnly = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string LogDirectoryPath\n        {\n            get => _applicationSettings.LogDirectoryPath;\n            set\n            {\n                if (_applicationSettings.LogDirectoryPath != value)\n                {\n                    _applicationSettings.LogDirectoryPath = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool UseConPty\n        {\n            get => _applicationSettings.UseConPty;\n            set\n            {\n                if (_applicationSettings.UseConPty != value)\n                {\n                    _applicationSettings.UseConPty = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool BottomIsSelected\n        {\n            get => TabsPosition == TabsPosition.Bottom;\n            set { if (value) TabsPosition = TabsPosition.Bottom; }\n        }\n\n        public bool CanEnableStartupTask\n        {\n            get => _canEnableStartupTask;\n            set => SetProperty(ref _canEnableStartupTask, value);\n        }\n\n        public bool ConfirmClosingTabs\n        {\n            get => _applicationSettings.ConfirmClosingTabs;\n            set\n            {\n                if (_applicationSettings.ConfirmClosingTabs != value)\n                {\n                    _applicationSettings.ConfirmClosingTabs = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool ConfirmClosingWindows\n        {\n            get => _applicationSettings.ConfirmClosingWindows;\n            set\n            {\n                if (_applicationSettings.ConfirmClosingWindows != value)\n                {\n                    _applicationSettings.ConfirmClosingWindows = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public NewTerminalLocation NewTerminalLocation\n        {\n            get => _applicationSettings.NewTerminalLocation;\n            set\n            {\n                if (_applicationSettings.NewTerminalLocation != value)\n                {\n                    _applicationSettings.NewTerminalLocation = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                    OnPropertyChanged(nameof(TabIsSelected));\n                }\n            }\n        }\n\n        public bool TabWindowCascadingAppMenu\n        {\n            get => _applicationSettings.TabWindowCascadingAppMenu;\n            set\n            {\n                if (_applicationSettings.TabWindowCascadingAppMenu != value)\n                {\n                    _applicationSettings.TabWindowCascadingAppMenu = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        public ICommand BrowseLogDirectoryCommand { get; }\n\n        public bool StartupTaskEnabled\n        {\n            get => _startupTaskEnabled;\n            set\n            {\n                if (SetProperty(ref _startupTaskEnabled, value))\n                {\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = SetStartupTaskStateAsync(value);\n                }\n            }\n        }\n\n        public string StartupTaskErrorMessage\n        {\n            get => _startupTaskErrorMessage;\n            set => SetProperty(ref _startupTaskErrorMessage, value);\n        }\n\n        public bool TabIsSelected\n        {\n            get => NewTerminalLocation == NewTerminalLocation.Tab;\n            set => NewTerminalLocation = value ? NewTerminalLocation.Tab : NewTerminalLocation.Window;\n        }\n\n        public TabsPosition TabsPosition\n        {\n            get => _applicationSettings.TabsPosition;\n            set\n            {\n                if (_applicationSettings.TabsPosition != value)\n                {\n                    _applicationSettings.TabsPosition = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool TopIsSelected\n        {\n            get => TabsPosition == TabsPosition.Top;\n            set { if (value) TabsPosition = TabsPosition.Top; }\n        }\n\n        public bool UnderlineSelectedTab\n        {\n            get => _applicationSettings.UnderlineSelectedTab;\n            set\n            {\n                if (_applicationSettings.UnderlineSelectedTab != value)\n                {\n                    _applicationSettings.UnderlineSelectedTab = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool BackgroundIsSelected\n        {\n            get => InactiveTabColorMode == InactiveTabColorMode.Background;\n            set { if (value) InactiveTabColorMode = InactiveTabColorMode.Background; }\n        }\n\n        public bool UnderlinedIsSelected\n        {\n            get => InactiveTabColorMode == InactiveTabColorMode.Underlined;\n            set { if (value) InactiveTabColorMode = InactiveTabColorMode.Underlined; }\n        }\n\n        public InactiveTabColorMode InactiveTabColorMode\n        {\n            get => _applicationSettings.InactiveTabColorMode;\n            set\n            {\n                if (_applicationSettings.InactiveTabColorMode != value)\n                {\n                    _applicationSettings.InactiveTabColorMode = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool ShowTextCopied\n        {\n            get => _applicationSettings.ShowTextCopied;\n            set\n            {\n                if (_applicationSettings.ShowTextCopied != value)\n                {\n                    _applicationSettings.ShowTextCopied = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmRestoreGeneralSettings\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var defaults = _defaultValueProvider.GetDefaultApplicationSettings();\n                ConfirmClosingWindows = defaults.ConfirmClosingWindows;\n                ConfirmClosingTabs = defaults.ConfirmClosingTabs;\n                UnderlineSelectedTab = defaults.UnderlineSelectedTab;\n                InactiveTabColorMode = defaults.InactiveTabColorMode;\n                NewTerminalLocation = defaults.NewTerminalLocation;\n                ShowNewOutputIndicator = defaults.ShowNewOutputIndicator;\n                EnableTrayIcon = defaults.EnableTrayIcon;\n                ShowCustomTitleInTitlebar = defaults.ShowCustomTitleInTitlebar;\n                UseMoshByDefault = defaults.UseMoshByDefault;\n                AutoFallbackToWindowsUsernameInLinks = defaults.AutoFallbackToWindowsUsernameInLinks;\n                RTrimCopiedLines = defaults.RTrimCopiedLines;\n                MuteTerminalBeeps = defaults.MuteTerminalBeeps;\n                EnableLogging = defaults.EnableLogging;\n                PrintableOutputOnly = defaults.PrintableOutputOnly;\n                LogDirectoryPath = defaults.LogDirectoryPath;\n                UseConPty = defaults.UseConPty;\n                ShowTextCopied = defaults.ShowTextCopied;\n            }\n        }\n\n        // Requires UI thread\n        private void SetStartupTaskPropertiesForStatus(StartupTaskStatus startupTaskStatus)\n        {\n            switch (startupTaskStatus)\n            {\n                case StartupTaskStatus.Enabled:\n                    StartupTaskEnabled = true;\n                    StartupTaskErrorMessage = string.Empty;\n                    CanEnableStartupTask = true;\n                    break;\n\n                case StartupTaskStatus.Disabled:\n                    StartupTaskEnabled = false;\n                    StartupTaskErrorMessage = string.Empty;\n                    CanEnableStartupTask = true;\n                    break;\n\n                case StartupTaskStatus.DisabledByUser:\n                    StartupTaskEnabled = false;\n                    StartupTaskErrorMessage = I18N.Translate(\"DisabledByUser\");\n                    CanEnableStartupTask = false;\n                    break;\n\n                case StartupTaskStatus.DisabledByPolicy:\n                    StartupTaskEnabled = false;\n                    StartupTaskErrorMessage = I18N.Translate(\"DisabledByPolicy\");\n                    CanEnableStartupTask = false;\n                    break;\n\n                case StartupTaskStatus.EnabledByPolicy:\n                    StartupTaskEnabled = true;\n                    StartupTaskErrorMessage = I18N.TranslateWithFallback(\"EnabledByPolicy\", \"Enabled by policy.\");\n                    CanEnableStartupTask = false;\n                    break;\n            }\n        }\n\n        // Requires UI thread\n        private async Task SetStartupTaskStateAsync(bool enabled)\n        {\n            StartupTaskStatus status;\n            if (enabled)\n            {\n                // ConfigureAwait(true) because we need to execute SetStartupTaskPropertiesForStatus in the calling (UI) thread.\n                status = await _startupTaskService.EnableStartupTaskAsync().ConfigureAwait(true);\n            }\n            else\n            {\n                // ConfigureAwait(true) because we need to execute SetStartupTaskPropertiesForStatus in the calling (UI) thread.\n                await _startupTaskService.DisableStartupTaskAsync().ConfigureAwait(true);\n                // ConfigureAwait(true) because we need to execute SetStartupTaskPropertiesForStatus in the calling (UI) thread.\n                status = await _startupTaskService.GetStatusAsync().ConfigureAwait(true);\n            }\n            SetStartupTaskPropertiesForStatus(status);\n        }\n\n        // Requires UI thread\n        private async Task BrowseLogDirectoryAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var folder = await _fileSystemService.BrowseForDirectoryAsync().ConfigureAwait(true);\n\n            if (folder != null)\n            {\n                LogDirectoryPath = folder;\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/KeyBindingViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class KeyBindingViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n\n        public KeyBindingViewModel(KeyBinding keyBinding, IDialogService dialogService, KeyBindingsViewModel parent)\n        {\n            Model = keyBinding;\n            Parent = parent;\n            _dialogService = dialogService;\n            EditCommand = new AsyncRelayCommand(EditAsync);\n            DeleteCommand = new AsyncRelayCommand(DeleteAsync);\n        }\n\n        // Needs to be triggered from the UI thread\n        public event EventHandler Deleted;\n\n        public event EventHandler Edited;\n\n        public KeyBindingsViewModel Parent { get; }\n\n        public bool Meta\n        {\n            get => Model.Meta;\n            set\n            {\n                if (Model.Meta != value)\n                {\n                    Model.Meta = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool Alt\n        {\n            get => Model.Alt;\n            set\n            {\n                if (Model.Alt != value)\n                {\n                    Model.Alt = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool Ctrl\n        {\n            get => Model.Ctrl;\n            set\n            {\n                if (Model.Ctrl != value)\n                {\n                    Model.Ctrl = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public ICommand DeleteCommand { get; }\n        public ICommand EditCommand { get; }\n\n        public int Key\n        {\n            get => Model.Key;\n            set\n            {\n                if (Model.Key != value)\n                {\n                    Model.Key = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public KeyBinding Model { get; }\n\n        public bool Shift\n        {\n            get => Model.Shift;\n            set\n            {\n                if (Model.Shift != value)\n                {\n                    Model.Shift = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        // Requires UI thread\n        public async Task<bool> EditAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var keyBinding = await _dialogService.ShowCreateKeyBindingDialog().ConfigureAwait(true);\n\n            if (keyBinding != null)\n            {\n                Alt = keyBinding.Alt;\n                Ctrl = keyBinding.Ctrl;\n                Shift = keyBinding.Shift;\n                Meta = keyBinding.Meta;\n                Key = keyBinding.Key;\n\n                Edited?.Invoke(this, EventArgs.Empty);\n\n                return true;\n            }\n\n            return false;\n        }\n\n        // Requires UI thread\n        private async Task DeleteAsync()\n        {\n            // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmDeleteKeybindings\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                Deleted?.Invoke(this, EventArgs.Empty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/KeyBindingsPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class KeyBindingsPageViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n\n        public KeyBindingsPageViewModel(ISettingsService settingsService, IDialogService dialogService, ITrayProcessCommunicationService trayProcessCommunicationService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n            AddCommand = new AsyncRelayCommand<string>(AddAsync);\n\n            Initialize(_settingsService.GetCommandKeyBindings());\n        }\n\n        public ICommand AddCommand { get; }\n        public ObservableCollection<KeyBindingsViewModel> KeyBindings { get; } = new ObservableCollection<KeyBindingsViewModel>();\n        public ICommand RestoreDefaultsCommand { get; }\n\n        private Task AddAsync(string command)\n        {\n            return KeyBindings.First(k => k.Command == command).ShowAddKeyBindingDialogAsync();\n        }\n\n        // Requires UI thread\n        private void ClearKeyBindings()\n        {\n            foreach (var keyBinding in KeyBindings)\n            {\n                keyBinding.Edited -= OnEdited;\n            }\n\n            KeyBindings.Clear();\n        }\n\n        // Requires UI thread\n        private void Initialize(IDictionary<string, ICollection<KeyBinding>> keyBindings)\n        {\n            ClearKeyBindings();\n\n            foreach (var value in Enum.GetValues(typeof(Command)))\n            {\n                var command = (Command)value;\n                var viewModel = new KeyBindingsViewModel(command.ToString(), _dialogService, I18N.Translate($\"{nameof(Command)}.{command}\"), true);\n                foreach (var keyBinding in keyBindings[command.ToString()])\n                {\n                    viewModel.Add(keyBinding);\n                }\n                viewModel.Edited += OnEdited;\n                KeyBindings.Add(viewModel);\n            }\n        }\n\n        private void OnEdited(string command, ICollection<KeyBinding> keyBindings)\n        {\n            _settingsService.SaveKeyBindings(command, keyBindings);\n            _trayProcessCommunicationService.UpdateToggleWindowKeyBindingsAsync();\n        }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we need to execute Initialize in the calling (UI) thread.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmRestoreKeybindings\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                _settingsService.ResetKeyBindings();\n                Initialize(_settingsService.GetCommandKeyBindings());\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/KeyBindingsViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class KeyBindingsViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n        private bool _editable;\n\n        public KeyBindingsViewModel(string command, IDialogService dialogService, string commandName, bool editable)\n        {\n            _dialogService = dialogService;\n\n            Command = command;\n            CommandName = commandName;\n            Editable = editable;\n        }\n\n        public delegate void EditedEvent(string command, ICollection<KeyBinding> keyBindings);\n\n        public event EditedEvent Edited;\n\n        public string Command { get; }\n\n        public string CommandName { get; }\n\n        /// <summary>\n        ///  Whether or not the \"Edit\" and \"Delete\" links appear next to the key binding list.\n        /// </summary>\n        public bool Editable\n        {\n            get => _editable;\n            set => SetProperty(ref _editable, value);\n        }\n\n        public ObservableCollection<KeyBindingViewModel> KeyBindings { get; } = new ObservableCollection<KeyBindingViewModel>();\n\n        // Requires UI thread\n        public async Task ShowAddKeyBindingDialogAsync()\n        {\n            var newKeyBinding = new KeyBindingViewModel(new KeyBinding { Command = Command }, _dialogService, this);\n\n            // ConfigureAwait(true) because we need to execute Add method in the calling (UI) thread.\n            if (await newKeyBinding.EditAsync().ConfigureAwait(true))\n            {\n                Add(newKeyBinding.Model);\n            }\n        }\n\n        // Requires UI thread\n        public void Clear()\n        {\n            KeyBindings.Clear();\n        }\n\n        // Requires UI thread\n        public void Add(KeyBinding keyBinding)\n        {\n            var viewModel = new KeyBindingViewModel(keyBinding, _dialogService, this);\n\n            viewModel.Deleted += ViewModel_Deleted;\n            viewModel.Edited += ViewModel_Edited;\n            KeyBindings.Add(viewModel);\n            Edited?.Invoke(Command, KeyBindings.Select(x => x.Model).ToList());\n        }\n\n        private void ViewModel_Deleted(object sender, EventArgs e)\n        {\n            if (sender is KeyBindingViewModel keyBinding)\n            {\n                KeyBindings.Remove(keyBinding);\n                Edited?.Invoke(Command, KeyBindings.Select(x => x.Model).ToList());\n            }\n        }\n\n        private void ViewModel_Edited(object sender, EventArgs e)\n        {\n            Edited?.Invoke(Command, KeyBindings.Select(x => x.Model).ToList());\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/MousePageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class MousePageViewModel : ObservableObject\n    {\n        private readonly ISettingsService _settingsService;\n        private readonly IDialogService _dialogService;\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly ApplicationSettings _applicationSettings;\n\n        public MousePageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _applicationSettings = _settingsService.GetApplicationSettings();\n\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n        }\n\n        public bool CopyOnSelect\n        {\n            get => _applicationSettings.CopyOnSelect;\n            set\n            {\n                if (_applicationSettings.CopyOnSelect != value)\n                {\n                    _applicationSettings.CopyOnSelect = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public MouseAction MouseRightClickAction\n        {\n            get => _applicationSettings.MouseRightClickAction;\n            set\n            {\n                if (_applicationSettings.MouseRightClickAction != value)\n                {\n                    _applicationSettings.MouseRightClickAction = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool MouseRightClickNoneIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.None;\n            set { if (value) MouseRightClickAction = MouseAction.None; }\n        }\n\n        public bool MouseRightClickContextMenuIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.ContextMenu;\n            set { if (value) MouseRightClickAction = MouseAction.ContextMenu; }\n        }\n\n        public bool MouseRightClickPasteIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.Paste;\n            set { if (value) MouseRightClickAction = MouseAction.Paste; }\n        }\n\n        public bool MouseRightClickCopySelectionOrPasteIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.CopySelectionOrPaste;\n            set { if (value) MouseRightClickAction = MouseAction.CopySelectionOrPaste; }\n        }\n\n        public MouseAction MouseMiddleClickAction\n        {\n            get => _applicationSettings.MouseMiddleClickAction;\n            set\n            {\n                if (_applicationSettings.MouseMiddleClickAction != value)\n                {\n                    _applicationSettings.MouseMiddleClickAction = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool MouseMiddleClickNoneIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.None;\n            set { if (value) MouseMiddleClickAction = MouseAction.None; }\n        }\n\n        public bool MouseMiddleClickContextMenuIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.ContextMenu;\n            set { if (value) MouseMiddleClickAction = MouseAction.ContextMenu; }\n        }\n\n        public bool MouseMiddleClickPasteIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.Paste;\n            set { if (value) MouseMiddleClickAction = MouseAction.Paste; }\n        }\n\n        public bool MouseMiddleClickCopySelectionOrPasteIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.CopySelectionOrPaste;\n            set { if (value) MouseMiddleClickAction = MouseAction.CopySelectionOrPaste; }\n        }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmRestoreMouseSettings\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var defaults = _defaultValueProvider.GetDefaultApplicationSettings();\n                CopyOnSelect = defaults.CopyOnSelect;\n                MouseMiddleClickAction = defaults.MouseMiddleClickAction;\n                MouseRightClickAction = defaults.MouseRightClickAction;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/ProfilesPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class ProfilesPageViewModel : ObservableObject\n    {\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private readonly IFileSystemService _fileSystemService;\n        private ShellProfileViewModel _selectedShellProfile;\n        private readonly IApplicationView _applicationView;\n\n        public ProfilesPageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider, IFileSystemService fileSystemService, IApplicationView applicationView)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _fileSystemService = fileSystemService;\n            _applicationView = applicationView;\n\n            CreateShellProfileCommand = new RelayCommand(CreateShellProfile);\n            CloneCommand = new RelayCommand<ShellProfileViewModel>(Clone);\n\n            var defaultShellProfileId = _settingsService.GetDefaultShellProfileId();\n            foreach (var shellProfile in _settingsService.GetShellProfiles())\n            {\n                var viewModel = new ShellProfileViewModel(shellProfile, settingsService, dialogService, fileSystemService, applicationView, defaultValueProvider, false);\n                viewModel.Deleted += OnShellProfileDeleted;\n                viewModel.SetAsDefault += OnShellProfileSetAsDefault;\n\n                if (shellProfile.Id == defaultShellProfileId)\n                {\n                    viewModel.IsDefault = true;\n                }\n                ShellProfiles.Add(viewModel);\n            }\n\n            SelectedShellProfile = ShellProfiles.First(p => p.IsDefault);\n            \n        }\n\n        private void OnShellProfileSetAsDefault(object sender, EventArgs e)\n        {\n            if (sender is ShellProfileViewModel defaultShellProfile)\n            {\n                _settingsService.SaveDefaultShellProfileId(defaultShellProfile.Id);\n\n                foreach (var shellProfile in ShellProfiles)\n                {\n                    shellProfile.IsDefault = shellProfile.Id == defaultShellProfile.Id;\n                }\n            }\n        }\n\n        private void OnShellProfileDeleted(object sender, EventArgs e)\n        {\n            if (sender is ShellProfileViewModel shellProfile)\n            {\n                if (SelectedShellProfile == shellProfile)\n                {\n                    SelectedShellProfile = ShellProfiles.First();\n                }\n                ShellProfiles.Remove(shellProfile);\n\n                if (shellProfile.IsDefault)\n                {\n                    ShellProfiles.First().IsDefault = true;\n                    _settingsService.SaveDefaultShellProfileId(ShellProfiles.First().Id);\n                }\n                _settingsService.DeleteShellProfile(shellProfile.Id);\n            }\n        }\n\n        public ICommand CreateShellProfileCommand { get; }\n\n        public ICommand CloneCommand { get; }\n\n        private void CreateShellProfile()\n        {\n            var shellProfile = new ShellProfile\n            {\n                Id = Guid.NewGuid(),\n                PreInstalled = false,\n                Name = \"New profile\",\n                KeyBindings = new List<KeyBinding>(),\n                UseConPty = _settingsService.GetApplicationSettings().UseConPty\n            };\n\n            AddShellProfile(shellProfile);\n        }\n\n        private void Clone(ShellProfileViewModel shellProfile)\n        {\n            var cloned = shellProfile.ProfileVm.Model.Clone();\n\n            cloned.Id = Guid.NewGuid();\n            cloned.PreInstalled = false;\n            cloned.Name = $\"Copy of {shellProfile.Name}\";\n            cloned.KeyBindings = new List<KeyBinding>();\n\n            AddShellProfile(cloned);\n        }\n\n        private void AddShellProfile(ShellProfile shellProfile)\n        {\n            var viewModel = new ShellProfileViewModel(shellProfile, _settingsService, _dialogService, _fileSystemService, _applicationView, _defaultValueProvider, true);\n            viewModel.EditCommand.Execute(null);\n            viewModel.SetAsDefault += OnShellProfileSetAsDefault;\n            viewModel.Deleted += OnShellProfileDeleted;\n            ShellProfiles.Add(viewModel);\n            SelectedShellProfile = viewModel;\n        }\n\n        public ShellProfileViewModel SelectedShellProfile\n        {\n            get => _selectedShellProfile;\n            set => SetProperty(ref _selectedShellProfile, value);\n        }\n\n        public ObservableCollection<ShellProfileViewModel> ShellProfiles { get; } = new ObservableCollection<ShellProfileViewModel>();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/SshProfilesPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class SshProfilesPageViewModel: ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private readonly IFileSystemService _fileSystemService;\n        private SshProfileViewModel _selectedShellProfile;\n        private readonly IApplicationView _applicationView;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly IApplicationDataContainer _historyContainer;\n\n        public SshProfilesPageViewModel(ISettingsService settingsService, IDialogService dialogService,\n            IFileSystemService fileSystemService, IApplicationView applicationView,\n            ITrayProcessCommunicationService trayProcessCommunicationService,\n            IApplicationDataContainer historyContainer)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _fileSystemService = fileSystemService;\n            _applicationView = applicationView;\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _historyContainer = historyContainer;\n\n            CreateSshProfileCommand = new RelayCommand(CreateSshProfile);\n            CloneCommand = new RelayCommand<SshProfileViewModel>(Clone);\n\n            foreach (var sshProfile in _settingsService.GetSshProfiles())\n            {\n                var viewModel = new SshProfileViewModel(sshProfile, settingsService, dialogService, fileSystemService,\n                    applicationView, _trayProcessCommunicationService, historyContainer, false);\n                viewModel.Deleted += OnSshProfileDeleted;\n                SshProfiles.Add(viewModel);\n            }\n\n            if (SshProfiles.Count == 0)\n            {\n                CreateSshProfile();\n            }\n\n            SelectedSshProfile = SshProfiles.First();\n        }\n\n        private void OnSshProfileDeleted(object sender, EventArgs e)\n        {\n            if (sender is SshProfileViewModel sshProfile)\n            {\n                if (SelectedSshProfile == sshProfile)\n                {\n                    SelectedSshProfile = SshProfiles.First();\n                }\n                SshProfiles.Remove(sshProfile);\n                _settingsService.DeleteSshProfile(sshProfile.Id);\n            }\n        }\n\n        public ICommand CreateSshProfileCommand { get; }\n\n        public ICommand CloneCommand { get; }\n\n        public void CreateSshProfile()\n        {\n            var shellProfile = new SshProfile(_applicationView.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 7))\n            {\n                Id = Guid.NewGuid(),\n                PreInstalled = false,\n                Name = \"New SSH profile\",\n                KeyBindings = new List<KeyBinding>(),\n                UseMosh = _settingsService.GetApplicationSettings().UseMoshByDefault,\n                RequestConPty = _settingsService.GetApplicationSettings().UseConPty\n            };\n\n            AddSshProfile(shellProfile);\n        }\n\n        private void Clone(SshProfileViewModel shellProfile)\n        {\n            var cloned = (SshProfile) shellProfile.ProfileVm.Model.Clone();\n\n            cloned.Id = Guid.NewGuid();\n            cloned.PreInstalled = false;\n            cloned.Name = $\"Copy of {shellProfile.Name}\";\n            cloned.KeyBindings = new List<KeyBinding>();\n\n            foreach (KeyBinding keyBinding in cloned.KeyBindings)\n            {\n                keyBinding.Command = cloned.Id.ToString();\n            }\n            AddSshProfile(cloned);\n        }\n\n        private void AddSshProfile(SshProfile sshProfile)\n        {\n            var viewModel = new SshProfileViewModel(sshProfile, _settingsService, _dialogService, _fileSystemService,\n                _applicationView, _trayProcessCommunicationService, _historyContainer, true);\n\n            viewModel.EditCommand.Execute(null);\n            viewModel.Deleted += OnSshProfileDeleted;\n            SshProfiles.Add(viewModel);\n            SelectedSshProfile = viewModel;\n        }\n\n        public SshProfileViewModel SelectedSshProfile\n        {\n            get => _selectedShellProfile;\n            set => SetProperty(ref _selectedShellProfile, value);\n        }\n\n        public ObservableCollection<SshProfileViewModel> SshProfiles { get; } = new ObservableCollection<SshProfileViewModel>();\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/TerminalPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class TerminalPageViewModel : ObservableObject\n    {\n        private readonly TerminalOptions _terminalOptions;\n        private readonly ISettingsService _settingsService;\n        private readonly IDialogService _dialogService;\n        private readonly IDefaultValueProvider _defaultValueProvider;\n\n        public bool BarIsSelected\n        {\n            get => CursorStyle == CursorStyle.Bar;\n            set { if (value) CursorStyle = CursorStyle.Bar; }\n        }\n\n        public bool BlockIsSelected\n        {\n            get => CursorStyle == CursorStyle.Block;\n            set { if (value) CursorStyle = CursorStyle.Block; }\n        }\n\n        public bool UnderlineIsSelected\n        {\n            get => CursorStyle == CursorStyle.Underline;\n            set { if (value) CursorStyle = CursorStyle.Underline; }\n        }\n\n        public bool HiddenIsSelected\n        {\n            get => ScrollBarStyle == ScrollBarStyle.Hidden;\n            set { if (value) ScrollBarStyle = ScrollBarStyle.Hidden; }\n        }\n\n        public bool AutoHidingIsSelected\n        {\n            get => ScrollBarStyle == ScrollBarStyle.AutoHiding;\n            set { if (value) ScrollBarStyle = ScrollBarStyle.AutoHiding; }\n        }\n\n        public bool VisibleIsSelected\n        {\n            get => ScrollBarStyle == ScrollBarStyle.Visible;\n            set { if (value) ScrollBarStyle = ScrollBarStyle.Visible; }\n        }\n\n        public bool CursorBlink\n        {\n            get => _terminalOptions.CursorBlink;\n            set\n            {\n                if (_terminalOptions.CursorBlink != value)\n                {\n                    _terminalOptions.CursorBlink = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool UseAcrylicBackground\n        {\n            get => _terminalOptions.UseAcrylicBackground;\n            set\n            {\n                if (_terminalOptions.UseAcrylicBackground != value)\n                {\n                    _terminalOptions.UseAcrylicBackground = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string FontFamily\n        {\n            get => _terminalOptions.FontFamily;\n            set\n            {\n                if (_terminalOptions.FontFamily != value)\n                {\n                    _terminalOptions.FontFamily = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public int FontWeight\n        {\n            get => _terminalOptions.FontWeight;\n            set\n            {\n                if (_terminalOptions.FontWeight != value)\n                {\n                    _terminalOptions.FontWeight = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public double BackgroundOpacity\n        {\n            get => _terminalOptions.BackgroundOpacity;\n            set\n            {\n                if (_terminalOptions.BackgroundOpacity != value)\n                {\n                    _terminalOptions.BackgroundOpacity = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public int Padding\n        {\n            get => _terminalOptions.Padding;\n            set\n            {\n                if (_terminalOptions.Padding != value)\n                {\n                    _terminalOptions.Padding = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string ScrollBackLimit\n        {\n            get => _terminalOptions.ScrollBackLimit.ToString();\n            set\n            {\n                if (uint.TryParse(value, out uint intValue))\n                {\n                    if (intValue == uint.MinValue)\n                    {\n                        intValue = uint.MaxValue;\n                    }\n                    if (_terminalOptions.ScrollBackLimit != intValue)\n                    {\n                        _terminalOptions.ScrollBackLimit = intValue;\n                        _settingsService.SaveTerminalOptions(_terminalOptions);\n                        OnPropertyChanged();\n                    }\n                }\n                else\n                {\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string WordSeparator\n        {\n            get => WebViewSpecialCharEncoder.Decode(_terminalOptions.WordSeparator);\n            set\n            {\n                value = WebViewSpecialCharEncoder.Encode(value);\n                if (_terminalOptions.WordSeparator != value)\n                {\n                    _terminalOptions.WordSeparator = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public IEnumerable<string> Fonts { get; }\n\n        public int FontSize\n        {\n            get => _terminalOptions.FontSize;\n            set\n            {\n                if (_terminalOptions.FontSize != value)\n                {\n                    _terminalOptions.FontSize = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public IEnumerable<int> Sizes { get; }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        private CursorStyle CursorStyle\n        {\n            get => _terminalOptions.CursorStyle;\n            set\n            {\n                if (_terminalOptions.CursorStyle != value)\n                {\n                    _terminalOptions.CursorStyle = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        private ScrollBarStyle ScrollBarStyle\n        {\n            get => _terminalOptions.ScrollBarStyle;\n            set\n            {\n                if (_terminalOptions.ScrollBarStyle != value)\n                {\n                    _terminalOptions.ScrollBarStyle = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmRestoreTerminalOptions\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var defaults = _defaultValueProvider.GetDefaultTerminalOptions();\n                CursorBlink = defaults.CursorBlink;\n                CursorStyle = defaults.CursorStyle;\n                ScrollBarStyle = defaults.ScrollBarStyle;\n                FontFamily = defaults.FontFamily;\n                FontSize = defaults.FontSize;\n                FontWeight = defaults.FontWeight;\n                BackgroundOpacity = defaults.BackgroundOpacity;\n                ScrollBackLimit = defaults.ScrollBackLimit.ToString();\n                WordSeparator = defaults.WordSeparator;\n            }\n        }\n\n        public TerminalPageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider, ISystemFontService systemFontService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n\n            Fonts = systemFontService.GetSystemFontFamilies().OrderBy(s => s);\n            Sizes = Enumerable.Range(2, 72);\n\n            _terminalOptions = _settingsService.GetTerminalOptions();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Settings/ThemesPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing FluentTerminal.Models.Messages;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing Microsoft.Toolkit.Mvvm.Messaging;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class ThemesPageViewModel : ObservableObject,\n        IRecipient<TerminalOptionsChangedMessage>\n    {\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private ThemeViewModel _selectedTheme;\n        private double _backgroundOpacity;\n        private readonly IThemeParserFactory _themeParserFactory;\n        private readonly IFileSystemService _fileSystemService;\n        private readonly IImageFileSystemService _imageFileSystemService;\n\n        public event EventHandler<string> SelectedThemeBackgroundColorChanged;\n        public event EventHandler<ImageFile> SelectedThemeBackgroundImageChanged;\n        public event EventHandler<ThemeViewModel> SelectedThemeChanged;\n\n        public ThemesPageViewModel(ISettingsService settingsService,\n                                   IDialogService dialogService,\n                                   IDefaultValueProvider defaultValueProvider,\n                                   IThemeParserFactory themeParserFactory,\n                                   IFileSystemService fileSystemService,\n                                   IImageFileSystemService imageFileSystemService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _themeParserFactory = themeParserFactory;\n            _fileSystemService = fileSystemService;\n            _imageFileSystemService = imageFileSystemService;\n\n            CreateThemeCommand = new RelayCommand(CreateTheme);\n            ImportThemeCommand = new AsyncRelayCommand(ImportThemeAsync);\n            CloneCommand = new RelayCommand<ThemeViewModel>(CloneTheme);\n\n            BackgroundOpacity = _settingsService.GetTerminalOptions().BackgroundOpacity;\n\n            var activeThemeId = _settingsService.GetCurrentThemeId();\n            foreach (var theme in _settingsService.GetThemes())\n            {\n                var viewModel = new ThemeViewModel(theme, _settingsService, _dialogService, _fileSystemService, _imageFileSystemService, false);\n                viewModel.Activated += OnThemeActivated;\n                viewModel.Deleted += OnThemeDeleted;\n\n                if (theme.Id == activeThemeId)\n                {\n                    viewModel.IsActive = true;\n                }\n                Themes.Add(viewModel);\n            }\n\n            SelectedTheme = Themes.First(t => t.IsActive);\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        public ICommand CreateThemeCommand { get; }\n        public ICommand ImportThemeCommand { get; }\n        public ICommand CloneCommand { get; set; }\n\n        public double BackgroundOpacity\n        {\n            get => _backgroundOpacity;\n            set => SetProperty(ref _backgroundOpacity, value);\n        }\n\n        public ThemeViewModel SelectedTheme\n        {\n            get => _selectedTheme;\n            set\n            {\n                if (_selectedTheme != null)\n                {\n                    _selectedTheme.BackgroundChanged -= OnSelectedThemeBackgroundChanged;\n                    _selectedTheme.BackgroundImageChanged -= OnSelectedThemeBackgroundImageChanged;\n                }\n\n                SetProperty(ref _selectedTheme, value);\n                SelectedThemeChanged?.Invoke(this, _selectedTheme);\n\n                if (value != null)\n                {\n                    _selectedTheme.BackgroundOpacity = BackgroundOpacity;\n                    value.BackgroundChanged += OnSelectedThemeBackgroundChanged;\n                    value.BackgroundImageChanged += OnSelectedThemeBackgroundImageChanged;\n                }\n            }\n        }\n\n        public ObservableCollection<ThemeViewModel> Themes { get; } = new ObservableCollection<ThemeViewModel>();\n\n        private void CloneTheme(ThemeViewModel theme)\n        {\n            var cloned = new TerminalTheme(theme.Model)\n            {\n                Id = Guid.NewGuid(),\n                PreInstalled = false,\n                Name = $\"Copy of {theme.Name}\"\n            };\n\n            AddTheme(cloned);\n        }\n\n        private void CreateTheme()\n        {\n            var defaultTheme = _settingsService.GetTheme(_defaultValueProvider.GetDefaultThemeId());\n            var theme = new TerminalTheme\n            {\n                Id = Guid.NewGuid(),\n                PreInstalled = false,\n                Name = \"New Theme\",\n                Colors = new TerminalColors(defaultTheme.Colors)\n            };\n\n            AddTheme(theme);\n        }\n\n        // Requires UI thread\n        private async Task ImportThemeAsync()\n        {\n            // ConfigureAwait(true) because we need to execute AddTheme method in the calling (UI) thread.\n            var file = await _fileSystemService.OpenFileAsync(_themeParserFactory.SupportedFileTypes)\n                .ConfigureAwait(true);\n\n            if (file != null)\n            {\n                var parser = _themeParserFactory.GetParser(file.FileType);\n\n                if (parser == null)\n                {\n                    await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"ImportThemeFailed\"),\n                        I18N.Translate(\"NoSuitableParserFound\"), DialogButton.OK).ConfigureAwait(false);\n\n                    return;\n                }\n\n                try\n                {\n                    // ConfigureAwait(true) because we need to execute AddTheme method in the calling (UI) thread.\n                    var exportedTheme = await parser.Import(file.Name, file.Content).ConfigureAwait(true);\n\n                    if (!string.IsNullOrWhiteSpace(exportedTheme.EncodedImage))\n                    {\n                        // ConfigureAwait(true) because we need to execute AddTheme method in the calling (UI) thread.\n                        var importedImage = await _imageFileSystemService\n                            .ImportThemeImageAsync(exportedTheme.BackgroundImage, exportedTheme.EncodedImage)\n                            .ConfigureAwait(true);\n\n                        exportedTheme.BackgroundImage = importedImage;\n                    }\n\n                    var terminalTheme = new TerminalTheme(exportedTheme);\n\n                    AddTheme(terminalTheme);\n                }\n                catch (Exception exception)\n                {\n                    await _dialogService\n                        .ShowMessageDialogAsync(I18N.Translate(\"ImportThemeFailed\"), exception.Message, DialogButton.OK)\n                        .ConfigureAwait(false);\n                }\n            }\n        }\n\n        private void AddTheme(TerminalTheme theme)\n        {\n            _settingsService.SaveTheme(theme, true);\n\n            var viewModel = new ThemeViewModel(theme, _settingsService, _dialogService, _fileSystemService, _imageFileSystemService, true);\n            viewModel.EditCommand.Execute(null);\n            viewModel.Activated += OnThemeActivated;\n            viewModel.Deleted += OnThemeDeleted;\n            Themes.Add(viewModel);\n            SelectedTheme = viewModel;\n        }\n\n        private void OnThemeActivated(object sender, EventArgs e)\n        {\n            if (sender is ThemeViewModel activatedTheme)\n            {\n                _settingsService.SaveCurrentThemeId(activatedTheme.Id);\n\n                foreach (var theme in Themes)\n                {\n                    theme.IsActive = theme.Id == activatedTheme.Id;\n                }\n            }\n        }\n\n        private void OnThemeDeleted(object sender, EventArgs e)\n        {\n            if (sender is ThemeViewModel theme)\n            {\n                if (SelectedTheme == theme)\n                {\n                    SelectedTheme = Themes.First();\n                }\n                Themes.Remove(theme);\n\n                if (theme.IsActive)\n                {\n                    Themes.First().IsActive = true;\n                    _settingsService.SaveCurrentThemeId(Themes.First().Id);\n                }\n                _settingsService.DeleteTheme(theme.Id);\n            }\n        }\n\n        public void Receive(TerminalOptionsChangedMessage message)\n        {\n            BackgroundOpacity = message.TerminalOptions.BackgroundOpacity;\n        }\n\n        private void OnSelectedThemeBackgroundChanged(object sender, string e)\n        {\n            SelectedThemeBackgroundColorChanged?.Invoke(this, e);\n        }\n\n        private void OnSelectedThemeBackgroundImageChanged(object sender, ImageFile e)\n        {\n            SelectedThemeBackgroundImageChanged?.Invoke(this, e);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/SettingsViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.ViewModels.Settings;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class SettingsViewModel : ObservableObject\n    {\n        public SettingsViewModel(ISettingsService settingsService, IDefaultValueProvider defaultValueProvider, IDialogService dialogService,\n            ITrayProcessCommunicationService trayProcessCommunicationService, IThemeParserFactory themeParserFactory, ISystemFontService systemFontService,\n            IFileSystemService fileSystemService, IStartupTaskService startupTaskService, IApplicationView applicationView,\n            IApplicationLanguageService applicationLanguageService, ApplicationDataContainers containers,\n            IImageFileSystemService imageFileSystemService)\n        {\n            KeyBindings = new KeyBindingsPageViewModel(settingsService, dialogService, trayProcessCommunicationService);\n            General = new GeneralPageViewModel(settingsService, dialogService, defaultValueProvider, startupTaskService, applicationLanguageService, trayProcessCommunicationService, fileSystemService);\n            Profiles = new ProfilesPageViewModel(settingsService, dialogService, defaultValueProvider, fileSystemService, applicationView);\n            Terminal = new TerminalPageViewModel(settingsService, dialogService, defaultValueProvider, systemFontService);\n            Themes = new ThemesPageViewModel(settingsService, dialogService, defaultValueProvider, themeParserFactory, fileSystemService, imageFileSystemService);\n            Mouse = new MousePageViewModel(settingsService, dialogService, defaultValueProvider);\n            SshProfiles = new SshProfilesPageViewModel(settingsService, dialogService, fileSystemService,\n                applicationView, trayProcessCommunicationService, containers.HistoryContainer);\n        }\n\n        public event EventHandler Closed;\n\n        public GeneralPageViewModel General { get; }\n        public KeyBindingsPageViewModel KeyBindings { get; }\n        public ProfilesPageViewModel Profiles { get; }\n        public TerminalPageViewModel Terminal { get; }\n        public ThemesPageViewModel Themes { get; }\n        public MousePageViewModel Mouse { get; }\n        public SshProfilesPageViewModel SshProfiles { get; }\n\n        public void Close()\n        {\n            Closed?.Invoke(this, EventArgs.Empty);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/ShellProfileViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing System.Windows.Input;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    /// <summary>\n    /// Extends <see cref=\"ProfileViewModelBase{T}\"/>, and implements only \"Set as default\" logic.\n    /// </summary>\n    public class ShellProfileViewModel : ProfileViewModelBase<CommonProfileProviderViewModel>\n    {\n        #region Fields\n\n        private readonly IDefaultValueProvider _defaultValueProvider;\n\n        #endregion Fields\n\n        #region Properties\n\n        private bool _isDefault;\n\n        public bool IsDefault\n        {\n            get => _isDefault;\n            set => SetProperty(ref _isDefault, value);\n        }\n\n        #endregion Properties\n\n        #region Events\n\n        public event EventHandler SetAsDefault;\n\n        #endregion Events\n\n        #region Commands\n\n        public ICommand SetDefaultCommand { get; }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        #endregion Commands\n\n        #region Constrcutor\n\n        public ShellProfileViewModel(ShellProfile shellProfile, ISettingsService settingsService,\n            IDialogService dialogService, IFileSystemService fileSystemService, IApplicationView applicationView,\n            IDefaultValueProvider defaultValueProvider, bool isNew) : base(shellProfile, settingsService, dialogService,\n            isNew)\n        {\n            _defaultValueProvider = defaultValueProvider;\n\n            ProfileVm = new CommonProfileProviderViewModel(settingsService, applicationView, fileSystemService,\n                shellProfile);\n\n            SetDefaultCommand = new RelayCommand(SetDefault);\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n        }\n\n        #endregion Constrcutor\n\n        #region Methods\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            if (InEditMode || !ProfileVm.PreInstalled)\n            {\n                throw new InvalidOperationException();\n            }\n\n            // ConfigureAwait(true) because we need to execute Initialize method in the calling (UI) thread.\n            var result = await DialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmRestoreProfile\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var profile = _defaultValueProvider.GetPreinstalledShellProfiles().FirstOrDefault(x => x.Id.Equals(Id));\n\n                if (profile == null)\n                {\n                    // Should not happen ever, but...\n                    return;\n                }\n\n                ProfileVm.Model = profile;\n                Initialize(profile);\n\n                SettingsService.SaveShellProfile(profile);\n            }\n        }\n\n        protected override bool CanDelete()\n        {\n            return !ProfileVm.PreInstalled;\n        }\n\n        private void SetDefault()\n        {\n            SetAsDefault?.Invoke(this, EventArgs.Empty);\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/SshProfileViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    /// <summary>\n    /// Extends <see cref=\"ProfileViewModelBase{T}\"/>, and doesn't implement any additional logic because in\n    /// case of SSH profiles no additional logic is needed.\n    /// </summary>\n    public class SshProfileViewModel : ProfileViewModelBase<SshConnectViewModel>\n    {\n        #region Constructor\n\n        public SshProfileViewModel(SshProfile sshProfile, ISettingsService settingsService,\n            IDialogService dialogService, IFileSystemService fileSystemService, IApplicationView applicationView,\n            ITrayProcessCommunicationService trayProcessCommunicationService,\n            IApplicationDataContainer historyContainer, bool isNew) : base(sshProfile, settingsService, dialogService,\n            isNew)\n        {\n            ProfileVm = new SshConnectViewModel(settingsService, applicationView, trayProcessCommunicationService,\n                fileSystemService, sshProfile);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        protected override bool CanDelete()\n        {\n            return true;\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/TabThemeViewModel.cs",
    "content": "﻿using FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class TabThemeViewModel : ObservableObject\n    {\n        private bool _isSelected;\n\n        public TabThemeViewModel(TabTheme theme, TerminalViewModel terminal)\n        {\n            Theme = theme;\n            Terminal = terminal;\n        }\n\n        public bool IsSelected\n        {\n            get => _isSelected;\n            set\n            {\n                if (SetProperty(ref _isSelected, value) && value)\n                {\n                    Terminal.TabTheme = this;\n                }\n            }\n        }\n\n        public TabTheme Theme { get; }\n        public TerminalViewModel Terminal { get; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/TerminalViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\nusing FluentTerminal.Models.Messages;\nusing System.Windows.Input;\nusing FluentTerminal.App.ViewModels.Menu;\nusing System.Collections.Generic;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Messaging;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class TerminalViewModel : ObservableObject,\n        IRecipient<ApplicationSettingsChangedMessage>,\n        IRecipient<CurrentThemeChangedMessage>,\n        IRecipient<TerminalOptionsChangedMessage>,\n        IRecipient<KeyBindingsChangedMessage>\n    {\n        #region Static\n\n        private static readonly Regex SshTitleRx = new Regex(@\"^\\w+@\\S+:\", RegexOptions.Compiled);\n\n        #endregion Static\n\n        #region Serialize terminal state\n\n        private class TerminalState\n        {\n            public bool HasCustomTitle { get; set; }\n            public string ShellTitle { get; set; }\n            public string TabTitle { get; set; }\n            public TerminalTheme TerminalTheme { get; set; }\n            public int TabThemeId { get; set; }\n            public bool ShowSearchPanel { get; set; }\n            public string SearchText { get; set; }\n            public bool SearchMatchCase { get; set; }\n            public bool SearchWholeWord { get; set; }\n            public bool SearchWithRegex { get; set; }\n            public string XtermBufferState { get; set; }\n            public byte TerminalId { get; set; }\n            public ShellProfile ShellProfile { get; set; }\n            public int FontSize { get; set; }\n        }\n\n        public async Task<string> SerializeAsync()\n        {\n            TerminalState state = new TerminalState\n            {\n                HasCustomTitle = _hasCustomTitle,\n                ShellTitle = ShellTitle,\n                TabTitle = TabTitle,\n                TerminalTheme = TerminalTheme,\n                TabThemeId = TabTheme.Theme.Id,\n                ShowSearchPanel = ShowSearchPanel,\n                SearchText = SearchText,\n                SearchMatchCase = SearchMatchCase,\n                SearchWholeWord = SearchWholeWord,\n                SearchWithRegex = SearchWithRegex,\n                XtermBufferState = await SerializeXtermStateAsync().ConfigureAwait(false),\n                TerminalId = Terminal.Id,\n                ShellProfile = ShellProfile,\n                FontSize = FontSize\n            };\n\n            return JsonConvert.SerializeObject(state);\n        }\n\n        public void Restore(string data)\n        {\n            TerminalState state = JsonConvert.DeserializeObject<TerminalState>(data);\n            if (state != null)\n            {\n                _hasCustomTitle = state.HasCustomTitle;\n                ShellTitle = state.ShellTitle;\n                TabTitle = state.TabTitle;\n                TerminalTheme = state.TerminalTheme;\n                TabTheme = TabThemes.FirstOrDefault(t => t.Theme.Id == state.TabThemeId);\n                ShowSearchPanel = state.ShowSearchPanel;\n                SearchText = state.SearchText;\n                SearchMatchCase = state.SearchMatchCase;\n                SearchWholeWord = state.SearchWholeWord;\n                SearchWithRegex = state.SearchWithRegex;\n                XtermBufferState = state.XtermBufferState;\n                _terminalId = state.TerminalId;\n                ShellProfile = state.ShellProfile;\n                FontSize = state.FontSize;\n                TabTheme.IsSelected = true;\n            }\n        }\n\n        #endregion Serialize terminal state\n\n        private readonly IKeyboardCommandService _keyboardCommandService;\n        private bool _isSelected;\n        private bool _isHovered;\n        private bool _hasNewOutput;\n        private bool _hasExitedWithError;\n        private string _searchText;\n        private bool _showSearchPanel;\n        private bool _searchMatchCase;\n        private bool _searchWholeWord;\n        private bool _searchWithRegex;\n        private TabThemeViewModel _tabTheme;\n        private TerminalTheme _terminalTheme;\n        private TerminalOptions _terminalOptions;\n        private string _tabTitle;\n        private string _shellTitle;\n        private bool _hasCustomTitle;\n        private byte? _terminalId;\n        private bool _hasSelection;\n        private string _hoveredUri;\n        private MenuViewModel _contextMenu;\n        private MenuViewModel _tabContextMenu;\n        private readonly TabThemeViewModel _transparentTabThemeViewModel;\n        private int _fontSize;\n\n        public TerminalViewModel(ISettingsService settingsService, ITrayProcessCommunicationService trayProcessCommunicationService, IDialogService dialogService,\n            IKeyboardCommandService keyboardCommandService, ApplicationSettings applicationSettings, ShellProfile shellProfile,\n            IApplicationView applicationView, IClipboardService clipboardService, string terminalState = null)\n        {\n            SettingsService = settingsService;\n\n            _terminalOptions = SettingsService.GetTerminalOptions();\n\n            TrayProcessCommunicationService = trayProcessCommunicationService;\n\n            DialogService = dialogService;\n            _keyboardCommandService = keyboardCommandService;\n            ApplicationSettings = applicationSettings;\n            ApplicationView = applicationView;\n            ClipboardService = clipboardService;\n\n            ShellProfile = shellProfile;\n            TerminalTheme = shellProfile.TerminalThemeId == Guid.Empty ? SettingsService.GetCurrentTheme() : SettingsService.GetTheme(shellProfile.TerminalThemeId);\n\n            TabThemes = new ObservableCollection<TabThemeViewModel>(SettingsService.GetTabThemes().Select(theme => new TabThemeViewModel(theme, this)));\n            CloseCommand = new AsyncRelayCommand(TryCloseAsync, CanExecuteCommand);\n            CloseLeftTabsCommand = new RelayCommand(CloseLeftTabs, CanExecuteCommand);\n            CloseRightTabsCommand = new RelayCommand(CloseRightTabs, CanExecuteCommand);\n            CloseOtherTabsCommand = new RelayCommand(CloseOtherTabs, CanExecuteCommand);\n            FindNextCommand = new RelayCommand(FindNext, CanExecuteCommand);\n            FindPreviousCommand = new RelayCommand(FindPrevious, CanExecuteCommand);\n            CloseSearchPanelCommand = new RelayCommand(CloseSearchPanel, CanExecuteCommand);\n            EditTitleCommand = new AsyncRelayCommand(EditTitleAsync, CanExecuteCommand);\n            DuplicateTabCommand = new RelayCommand(DuplicateTab, CanExecuteCommand);\n            ReconnectTabCommand = new AsyncRelayCommand(ReconnectTabAsync, () => CanExecuteCommand() && HasExitedWithError);\n            CopyCommand = new AsyncRelayCommand(Copy, () => HasSelection);\n            PasteCommand = new AsyncRelayCommand(Paste);\n            CopyLinkCommand = new AsyncRelayCommand(() => CopyTextAsync(HoveredUri), () => !string.IsNullOrWhiteSpace(HoveredUri));\n            ShowSearchPanelCommand = new RelayCommand(() => ShowSearchPanel = true, () => !ShowSearchPanel);\n\n            FontSize = _terminalOptions.FontSize;\n\n            if (!string.IsNullOrEmpty(terminalState))\n            {\n                Restore(terminalState);\n            }\n            else\n            {\n                var defaultTabTheme = TabThemes.FirstOrDefault(t => t.Theme.Id == ShellProfile.TabThemeId);\n                defaultTabTheme.IsSelected = true;\n            }\n\n            _transparentTabThemeViewModel = TabThemes.FirstOrDefault(t => t.Theme.Id == 0);\n\n            Terminal = new Terminal(TrayProcessCommunicationService, _terminalId);\n            Terminal.KeyboardCommandReceived += Terminal_KeyboardCommandReceived;\n            Terminal.OutputReceived += Terminal_OutputReceived;\n            Terminal.SizeChanged += Terminal_SizeChanged;\n            Terminal.TitleChanged += Terminal_TitleChanged;\n            Terminal.Exited += Terminal_Exited;\n            Terminal.Closed += Terminal_Closed;\n\n            ContextMenu = BuidContextMenu();\n            TabContextMenu = BuildTabContextMenu();\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        public MenuViewModel ContextMenu\n        {\n            get => _contextMenu;\n            set => SetProperty(ref _contextMenu, value);\n        }\n\n        public MenuViewModel TabContextMenu\n        {\n            get => _tabContextMenu;\n            set => SetProperty(ref _tabContextMenu, value);\n        }\n\n        private bool _disposalRequested;\n\n        public void DisposalPrepare()\n        {\n            _disposalRequested = true;\n            CloseCommand = null;\n            TerminalView.DisposalPrepare();\n            TerminalView = null;\n            Terminal = null;\n            Overlay = null;\n        }\n\n        public event EventHandler Activated;\n        public event EventHandler Closed;\n        public event EventHandler<SearchRequest> FindNextRequested;\n        public event EventHandler<SearchRequest> FindPreviousRequested;\n        public event EventHandler SearchStarted;\n        public event EventHandler<TerminalTheme> ThemeChanged;\n        public event EventHandler CloseLeftTabsRequested;\n        public event EventHandler CloseRightTabsRequested;\n        public event EventHandler CloseOtherTabsRequested;\n        public event EventHandler DuplicateTabRequested;\n        public event EventHandler<int> FontSizeChanged;\n\n        public ApplicationSettings ApplicationSettings { get; private set; }\n\n        public IApplicationView ApplicationView { get; }\n\n        public TabThemeViewModel BackgroundTabTheme\n        {\n            // The effective background theme depends on whether it is selected (use the theme), or if it is inactive\n            // (if we're set to underline inactive tabs, use the null theme).\n            get => IsSelected || (!IsSelected && ApplicationSettings.InactiveTabColorMode == InactiveTabColorMode.Background) ?\n                TabTheme :\n                _transparentTabThemeViewModel;\n        }\n\n        public IClipboardService ClipboardService { get; }\n\n        public string XtermBufferState { get; private set; }\n\n        public ICommand CloseCommand { get; private set; }\n\n        public ICommand CloseRightTabsCommand { get; }\n\n        public ICommand CloseLeftTabsCommand { get; }\n\n        public ICommand CloseOtherTabsCommand { get; }\n\n        public ICommand CloseSearchPanelCommand { get; }\n\n        public IDialogService DialogService { get; }\n\n        public ICommand EditTitleCommand { get; }\n\n        public ICommand FindNextCommand { get; }\n\n        public ICommand FindPreviousCommand { get; }\n\n        public ICommand DuplicateTabCommand { get; }\n\n        public AsyncRelayCommand ReconnectTabCommand { get; }\n\n        public ICommand CopyLinkCommand { get; private set; }\n\n        public ICommand CopyCommand { get; private set; }\n\n        public ICommand PasteCommand { get; private set; }\n\n        public ICommand ShowSearchPanelCommand { get; private set; }\n\n        public double BackgroundOpacity => _terminalOptions?.BackgroundOpacity ?? 1.0;\n\n        public bool IsSelected\n        {\n            get => _isSelected;\n            set\n            {\n                if (SetProperty(ref _isSelected, value))\n                {\n                    if (IsSelected)\n                    {\n                        _keyboardCommandService.RegisterCommandHandler(nameof(Command.Search), () => ShowSearchPanel = true);\n                        _keyboardCommandService.RegisterCommandHandler(nameof(Command.CloseSearch), () => CloseSearchPanel());\n                        HasNewOutput = false;\n                    }\n                    else\n                    {\n                        _keyboardCommandService.DeregisterCommandHandler(nameof(Command.Search));\n                        _keyboardCommandService.DeregisterCommandHandler(nameof(Command.CloseSearch));\n                    }\n                    OnPropertyChanged(nameof(IsUnderlined));\n                    OnPropertyChanged(nameof(BackgroundTabTheme));\n                    OnPropertyChanged(nameof(ShowCloseButton));\n                }\n            }\n        }\n\n        public bool HasSelection\n        {\n            get => _hasSelection;\n            set => SetProperty(ref _hasSelection, value);\n        }\n\n        public string HoveredUri\n        {\n            get => _hoveredUri;\n            set\n            {\n                if (SetProperty(ref _hoveredUri, value))\n                {\n                    ContextMenu = BuidContextMenu();\n                }\n            }\n        }\n\n        public bool IsHovered\n        {\n            get => _isHovered;\n            set\n            {\n                if (SetProperty(ref _isHovered, value))\n                {\n                    OnPropertyChanged(nameof(ShowCloseButton));\n                }\n            }\n        }\n\n        public bool ShowCloseButton\n        {\n            get => IsHovered || IsSelected;\n        }\n\n        public bool IsUnderlined => (IsSelected && ApplicationSettings.UnderlineSelectedTab) ||\n            (!IsSelected && ApplicationSettings.InactiveTabColorMode == InactiveTabColorMode.Underlined && TabTheme.Theme.Color != null);\n\n        public bool HasNewOutput\n        {\n            get => _hasNewOutput;\n            set => SetProperty(ref _hasNewOutput, value);\n        }\n\n        public bool HasExitedWithError\n        {\n            get => _hasExitedWithError;\n            set\n            {\n                if (SetProperty(ref _hasExitedWithError, value) && value)\n                {\n                    HasNewOutput = false;\n                }\n                ReconnectTabCommand.NotifyCanExecuteChanged();\n            }\n        }\n\n        public string SearchText\n        {\n            get => _searchText;\n            set => SetProperty(ref _searchText, value);\n        }\n\n        public bool SearchMatchCase\n        {\n            get => _searchMatchCase;\n            set => SetProperty(ref _searchMatchCase, value);\n        }\n\n        public bool SearchWholeWord\n        {\n            get => _searchWholeWord;\n            set => SetProperty(ref _searchWholeWord, value);\n        }\n\n        public bool SearchWithRegex\n        {\n            get => _searchWithRegex;\n            set => SetProperty(ref _searchWithRegex, value);\n        }\n\n        public ISettingsService SettingsService { get; }\n\n        public ShellProfile ShellProfile { get; private set; }\n\n        public bool ShowSearchPanel\n        {\n            get => _showSearchPanel;\n            set => SetProperty(ref _showSearchPanel, value);\n        }\n\n        public bool SearchHasFocus { get; set; }\n\n        public TabThemeViewModel TabTheme\n        {\n            get => _tabTheme;\n            set\n            {\n                SetProperty(ref _tabTheme, value);\n                OnPropertyChanged(nameof(IsUnderlined));\n                OnPropertyChanged(nameof(BackgroundTabTheme));\n\n                // necessary to update this constantly so that duplicated tabs will also carry over the color\n                ShellProfile.TabThemeId = value.Theme.Id;\n            }\n        }\n\n        public ObservableCollection<TabThemeViewModel> TabThemes { get; }\n\n        public Terminal Terminal { get; private set; }\n\n        public OverlayViewModel Overlay { get; set; }\n\n        public TerminalTheme TerminalTheme\n        {\n            get => _terminalTheme;\n            set => SetProperty(ref _terminalTheme, value);\n        }\n\n        public bool Initialized { get; set; }\n\n        public string TabTitle\n        {\n            get => _tabTitle;\n            set\n            {\n                var title = value?.Trim() ?? string.Empty;\n\n                if (ShellProfile is SshProfile)\n                {\n                    // For SshProfile we are adjusting title.\n                    if (title.Equals(\"ssh\", StringComparison.OrdinalIgnoreCase) ||\n                        title.EndsWith(\"\\\\ssh.exe\", StringComparison.OrdinalIgnoreCase))\n                    {\n                        title = $\"[ssh] {I18N.Translate(\"Authenticate\")}\";\n                    }\n                    else if (title.Equals(\"mosh\", StringComparison.OrdinalIgnoreCase) ||\n                             title.EndsWith(\"\\\\mosh.exe\", StringComparison.OrdinalIgnoreCase))\n                    {\n                        title = $\"[mosh] {I18N.Translate(\"Authenticate\")}\";\n                    }\n                    else if (SshTitleRx.IsMatch(title))\n                    {\n                        title = $\"[ssh] {title}\";\n                    }\n                }\n\n                SetProperty(ref _tabTitle, title);\n                ShellProfile.Name = title;\n            }\n        }\n\n        public string ShellTitle\n        {\n            get => _shellTitle;\n            set\n            {\n                if (SetProperty(ref _shellTitle, value) && !_hasCustomTitle)\n                {\n                    TabTitle = value;\n                }\n            }\n        }\n\n        public int FontSize\n        {\n            get => _fontSize;\n            set\n            {\n                _fontSize = value > 0 ? value : 1;\n            }\n        }\n\n        public ITrayProcessCommunicationService TrayProcessCommunicationService { get; }\n\n        public Task CloseAsync()\n        {\n            //MessengerInstance.Unregister(this); // todo necessary?\n\n            return Terminal.CloseAsync();\n        }\n\n        public Task CopyTextAsync(string text)\n        {\n            return ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                ClipboardService.SetText(text);\n\n                if (ApplicationSettings.ShowTextCopied)\n                {\n                    Overlay.Show(I18N.Translate(\"TextCopied\"));\n                }\n            });\n        }\n\n        // Requires UI thread\n        public async Task EditTitleAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await DialogService.ShowInputDialogAsync(I18N.Translate(\"EditTitleString\"))\n                .ConfigureAwait(true);\n            if (result != null)\n            {\n                if (string.IsNullOrWhiteSpace(result))\n                {\n                    _hasCustomTitle = false;\n                    TabTitle = ShellTitle;\n                }\n                else\n                {\n                    _hasCustomTitle = true;\n                    TabTitle = result;\n                }\n            }\n        }\n\n        public void FocusTerminal()\n        {\n            Activated?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void CloseSearchPanel()\n        {\n            SearchText = string.Empty;\n            ShowSearchPanel = false;\n            FocusTerminal();\n        }\n\n        private bool CanExecuteCommand<T>(T a)\n        {\n            return CanExecuteCommand();\n        }\n\n        private bool CanExecuteCommand()\n        {\n            return Initialized && !_disposalRequested;\n        }\n\n        private void CloseLeftTabs()\n        {\n            CloseLeftTabsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void CloseRightTabs()\n        {\n            CloseRightTabsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void CloseOtherTabs()\n        {\n            CloseOtherTabsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void FindNext()\n        {\n            FindNextRequested?.Invoke(this, new SearchRequest { MatchCase = SearchMatchCase, Regex = SearchWithRegex, Term = SearchText, WholeWord = SearchWholeWord });\n        }\n\n        public ITerminalView TerminalView { get; set; }\n\n        private Task<string> SerializeXtermStateAsync()\n        {\n            return TerminalView?.SerializeXtermStateAsync() ?? Task.FromResult(string.Empty);\n        }\n\n        private void FindPrevious()\n        {\n            FindPreviousRequested?.Invoke(this, new SearchRequest { MatchCase = SearchMatchCase, Regex = SearchWithRegex, Term = SearchText, WholeWord = SearchWholeWord });\n        }\n\n        private void DuplicateTab()\n        {\n            DuplicateTabRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        public async Task ReconnectTabAsync()\n        {\n            HasExitedWithError = false;\n            await TerminalView?.ReconnectAsync();\n        }\n\n        public void Receive(ApplicationSettingsChangedMessage message)\n        {\n            ApplicationSettings = message.ApplicationSettings;\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                OnPropertyChanged(nameof(IsUnderlined));\n                OnPropertyChanged(nameof(BackgroundTabTheme));\n            });\n        }\n\n        public void Receive(CurrentThemeChangedMessage message)\n        {\n            // only change theme if not overwritten by profile\n            if (ShellProfile.TerminalThemeId == Guid.Empty)\n            {\n                var currentTheme = SettingsService.GetTheme(message.ThemeId);\n\n                ApplicationView.ExecuteOnUiThreadAsync(() =>\n                {\n                    TerminalTheme = currentTheme;\n                    ThemeChanged?.Invoke(this, currentTheme);\n                });\n            }\n        }\n\n        public void Receive(TerminalOptionsChangedMessage message)\n        {\n            _terminalOptions = message.TerminalOptions;\n            ApplicationView.ExecuteOnUiThreadAsync(() => OnPropertyChanged(nameof(BackgroundOpacity)), CoreDispatcherPriority.Low);\n        }\n\n        public void Receive(KeyBindingsChangedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                var contextMenu = BuidContextMenu();\n                if (!contextMenu.EquivalentTo(ContextMenu))\n                {\n                    ContextMenu = contextMenu;\n                }\n\n                var tabContextMenu = BuildTabContextMenu();\n                if (!tabContextMenu.EquivalentTo(TabContextMenu))\n                {\n                    TabContextMenu = tabContextMenu;\n                }\n\n            }, CoreDispatcherPriority.Low, true);\n        }\n\n        private void Terminal_Exited(object sender, int exitCode)\n        {\n            if (ShellProfile?.Tag is ISessionSuccessTracker tracker && exitCode != 0)\n            {\n                tracker.SetInvalid();\n            }\n\n            ApplicationView.ExecuteOnUiThreadAsync(() => HasExitedWithError = exitCode > 0);\n        }\n\n        private void Terminal_Closed(object sender, EventArgs e)\n        {\n            Closed?.Invoke(this, EventArgs.Empty);\n            Terminal.KeyboardCommandReceived -= Terminal_KeyboardCommandReceived;\n            Terminal.OutputReceived -= Terminal_OutputReceived;\n            Terminal.SizeChanged -= Terminal_SizeChanged;\n            Terminal.TitleChanged -= Terminal_TitleChanged;\n            Terminal.Exited -= Terminal_Exited;\n            Terminal.Closed -= Terminal_Closed;\n        }\n\n        private async void Terminal_KeyboardCommandReceived(object sender, string e)\n        {\n            switch (e)\n            {\n                case nameof(Command.Copy):\n                    {\n                        await Copy().ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.Paste):\n                    {\n                        await Paste().ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.PasteWithoutNewlines):\n                    {\n                        string content = await ClipboardService.GetTextAsync().ConfigureAwait(false);\n                        if (content != null)\n                        {\n                            content = ShellProfile.NewlinePattern.Replace(content, string.Empty);\n                            TerminalView.Paste(content);\n                        }\n                        return;\n                    }\n                case nameof(Command.Search):\n                    {\n                        await ApplicationView.ExecuteOnUiThreadAsync(() =>\n                        {\n                            ShowSearchPanel = true;\n                            SearchStarted?.Invoke(this, EventArgs.Empty);\n                        }).ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.CloseSearch):\n                    {\n                        await ApplicationView.ExecuteOnUiThreadAsync(() =>\n                        {\n                            CloseSearchPanel();\n                        }).ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.IncreaseFontSize):\n                    {\n                        FontSize++;\n                        FontSizeChanged?.Invoke(this, FontSize);\n                        return;\n                    }\n                case nameof(Command.DecreaseFontSize):\n                    {\n                        if (FontSize > 2)\n                        {\n                            FontSize--;\n                            FontSizeChanged?.Invoke(this, FontSize);\n                        }\n\n                        return;\n                    }\n                case nameof(Command.ResetFontSize):\n                    {\n                        FontSize = _terminalOptions.FontSize;\n                        FontSizeChanged?.Invoke(this, FontSize);\n                        return;\n                    }\n                default:\n                    {\n                        await ApplicationView.ExecuteOnUiThreadAsync(() => _keyboardCommandService.SendCommand(e))\n                            .ConfigureAwait(false);\n                        return;\n                    }\n            }\n        }\n\n        private void Terminal_OutputReceived(object sender, byte[] e)\n        {\n            if (ShellProfile?.Tag is ISessionSuccessTracker tracker)\n            {\n                tracker.SetOutputReceived();\n            }\n\n            if (!IsSelected && ApplicationSettings.ShowNewOutputIndicator)\n            {\n                ApplicationView.ExecuteOnUiThreadAsync(() => HasNewOutput = true);\n            }\n        }\n\n        private void Terminal_SizeChanged(object sender, TerminalSize e)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() => Overlay.Show($\"{e.Columns} x {e.Rows}\"));\n        }\n\n        private void Terminal_TitleChanged(object sender, string e)\n        {\n            if (e == Terminal.Profile.Location) return;\n            ApplicationView.ExecuteOnUiThreadAsync(() => ShellTitle = e);\n        }\n\n        private async Task TryCloseAsync()\n        {\n            if (ShellProfile?.Tag is ISessionSuccessTracker tracker)\n            {\n                tracker.SetInvalid();\n            }\n\n            if (!ApplicationSettings.ConfirmClosingTabs || await DialogService\n                    .ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                        string.Format(I18N.Translate(\"ConfirmCloseTab\"), ShellTitle), DialogButton.OK,\n                        DialogButton.Cancel).ConfigureAwait(false) == DialogButton.OK)\n            {\n                await CloseAsync().ConfigureAwait(false);\n            }\n        }\n\n        private async Task Copy()\n        {\n            var selection = await Terminal.GetSelectedText().ConfigureAwait(false);\n            await CopyTextAsync(selection).ConfigureAwait(false);\n        }\n\n        private async Task Paste()\n        {\n            // prevent from pasting something into the terminal window when the actual command is executed\n            // while being in the search box\n            if (!SearchHasFocus)\n            {\n                var content = await ClipboardService.GetTextAsync().ConfigureAwait(false);\n                if (content != null)\n                {\n                    TerminalView.Paste(content);\n                }\n            }\n        }\n\n        private MenuViewModel BuidContextMenu()\n        {\n            var commandKeyBindings = SettingsService.GetCommandKeyBindings();\n            var contextMenu = new MenuViewModel();\n\n            if (!string.IsNullOrWhiteSpace(HoveredUri))\n            {\n                var copyLink = new MenuItemViewModel(I18N.Translate(\"CopyLink\"), CopyLinkCommand, icon: Mdl2Icon.Link());\n                contextMenu.Items.Add(copyLink);\n                contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n            }\n\n            var copy = new MenuItemViewModel(I18N.Translate(\"Command.Copy\"), CopyCommand, icon: Mdl2Icon.Copy());\n            AddKeyBindings(copy, Command.Copy, commandKeyBindings);\n            contextMenu.Items.Add(copy);\n\n            var paste = new MenuItemViewModel(I18N.Translate(\"Command.Paste\"), PasteCommand, icon: Mdl2Icon.Paste());\n            AddKeyBindings(paste, Command.Paste, commandKeyBindings);\n            contextMenu.Items.Add(paste);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var editTitle = new MenuItemViewModel(I18N.Translate(\"EditTitle.Text\"), EditTitleCommand, icon: Mdl2Icon.Edit());\n            AddKeyBindings(editTitle, Command.ChangeTabTitle, commandKeyBindings);\n            contextMenu.Items.Add(editTitle);\n\n            var search = new MenuItemViewModel(I18N.Translate(\"Search.Text\"), ShowSearchPanelCommand, icon: Mdl2Icon.Search());\n            AddKeyBindings(search, Command.Search, commandKeyBindings);\n            contextMenu.Items.Add(search);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var duplicate = new MenuItemViewModel(I18N.Translate(\"Command.DuplicateTab\"), DuplicateTabCommand);\n            AddKeyBindings(duplicate, Command.DuplicateTab, commandKeyBindings);\n            contextMenu.Items.Add(duplicate);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var close = new MenuItemViewModel(I18N.Translate(\"Close\"), CloseCommand, icon: Mdl2Icon.Cancel());\n            AddKeyBindings(close, Command.CloseTab, commandKeyBindings);\n            contextMenu.Items.Add(close);\n\n            return contextMenu;\n        }\n\n        private MenuViewModel BuildTabContextMenu()\n        {\n            var commandKeyBindings = SettingsService.GetCommandKeyBindings();\n            var contextMenu = new MenuViewModel();\n\n            RadioMenuItemViewModel createTabColorItem(TabThemeViewModel tabTheme)\n            {\n                //todo localise name\n                var icon = tabTheme.Theme.Id == 0 ? Mdl2Icon.PaginationDotOutline10() : Mdl2Icon.PaginationDotSolid10(tabTheme.Theme.Color);\n                return new RadioMenuItemViewModel(I18N.Translate($\"{tabTheme.Theme.Name}\"),  $\"{Terminal.Id}_tabTheme\", tabTheme, bindingPath: nameof(TabThemeViewModel.IsSelected) , icon: icon);\n            }\n\n            var tabColor = new ExpandableMenuItemViewModel(I18N.Translate(\"Color.Text\"));\n\n            foreach (var tabTheme in TabThemes)\n            {\n                tabColor.SubItems.Add(createTabColorItem(tabTheme));\n            }\n\n            contextMenu.Items.Add(tabColor);\n\n            var editTitle = new MenuItemViewModel(I18N.Translate(\"EditTitle.Text\"), EditTitleCommand, icon: Mdl2Icon.Edit());\n            AddKeyBindings(editTitle, Command.ChangeTabTitle, commandKeyBindings);\n            contextMenu.Items.Add(editTitle);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var duplicate = new MenuItemViewModel(I18N.Translate(\"Command.DuplicateTab\"), DuplicateTabCommand);\n            AddKeyBindings(duplicate, Command.DuplicateTab, commandKeyBindings);\n            contextMenu.Items.Add(duplicate);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var closeLeft = new MenuItemViewModel(I18N.Translate(\"CloseLeft.Text\"), CloseLeftTabsCommand);\n            contextMenu.Items.Add(closeLeft);\n\n            var closeRight = new MenuItemViewModel(I18N.Translate(\"CloseRight.Text\"), CloseRightTabsCommand);\n            contextMenu.Items.Add(closeRight);\n\n            var closeOther = new MenuItemViewModel(I18N.Translate(\"CloseOther.Text\"), CloseOtherTabsCommand);\n            contextMenu.Items.Add(closeOther);\n\n            var close = new MenuItemViewModel(I18N.Translate(\"Close\"), CloseCommand, icon: Mdl2Icon.Cancel());\n            AddKeyBindings(close, Command.CloseTab, commandKeyBindings);\n            contextMenu.Items.Add(close);\n\n            return contextMenu;\n        }\n\n        private void AddKeyBindings(MenuItemViewModel menuItem, Command command, IDictionary<string, ICollection<KeyBinding>> commandKeyBindings)\n        {\n            var keyBindings = commandKeyBindings[command.ToString()];\n            if (keyBindings?.Any() == true)\n            {\n                menuItem.KeyBinding = new MenuItemKeyBindingViewModel(keyBindings.First());\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/ThemeViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing Newtonsoft.Json;\nusing System;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class ThemeViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private string _author;\n        private string _background;\n        private double _backgroundOpacity;\n        private string _black;\n        private string _blue;\n        private string _brightBlack;\n        private string _brightBlue;\n        private string _brightCyan;\n        private string _brightGreen;\n        private string _brightMagenta;\n        private string _brightRed;\n        private string _brightWhite;\n        private string _brightYellow;\n        private string _cursor;\n        private string _cursorAccent;\n        private string _cyan;\n        private TerminalTheme _fallbackTheme;\n        private string _foreground;\n        private string _green;\n        private bool _inEditMode;\n        private bool _isActive;\n        private string _magenta;\n        private string _name;\n        private bool _isNew;\n        private string _red;\n        private string _selection;\n        private string _white;\n        private string _yellow;\n        private ImageFile _backgroundThemeFile;\n        private readonly IFileSystemService _fileSystemService;\n        private readonly IImageFileSystemService _imageFileSystemService;\n\n        public event EventHandler<string> BackgroundChanged;\n        public event EventHandler<ImageFile> BackgroundImageChanged;\n\n        public ThemeViewModel(TerminalTheme theme,\n                              ISettingsService settingsService,\n                              IDialogService dialogService,\n                              IFileSystemService fileSystemService,\n                              IImageFileSystemService imageFileSystemService,\n                              bool isNew)\n        {\n            Model = theme;\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _fileSystemService = fileSystemService;\n            _imageFileSystemService = imageFileSystemService;\n            _isNew = isNew;\n\n            Name = Model.Name;\n            Author = Model.Author;\n            Id = Model.Id;\n\n            Black = Model.Colors.Black;\n            Red = Model.Colors.Red;\n            Green = Model.Colors.Green;\n            Yellow = Model.Colors.Yellow;\n            Blue = Model.Colors.Blue;\n            Magenta = Model.Colors.Magenta;\n            Cyan = Model.Colors.Cyan;\n            White = Model.Colors.White;\n\n            BrightBlack = Model.Colors.BrightBlack;\n            BrightRed = Model.Colors.BrightRed;\n            BrightGreen = Model.Colors.BrightGreen;\n            BrightYellow = Model.Colors.BrightYellow;\n            BrightBlue = Model.Colors.BrightBlue;\n            BrightMagenta = Model.Colors.BrightMagenta;\n            BrightCyan = Model.Colors.BrightCyan;\n            BrightWhite = Model.Colors.BrightWhite;\n\n            Background = Model.Colors.Background;\n            Foreground = Model.Colors.Foreground;\n            Cursor = Model.Colors.Cursor;\n            CursorAccent = Model.Colors.CursorAccent;\n            Selection = Model.Colors.Selection;\n\n            BackgroundThemeFile = Model.BackgroundImage;\n\n            SetActiveCommand = new RelayCommand(SetActive);\n            DeleteCommand = new AsyncRelayCommand(DeleteAsync, NotPreInstalled);\n            EditCommand = new RelayCommand(Edit, NotPreInstalled);\n            CancelEditCommand = new AsyncRelayCommand(CancelEditAsync);\n            SaveChangesCommand = new AsyncRelayCommand(SaveChangesAsync);\n            ExportCommand = new AsyncRelayCommand(Export, NotPreInstalled);\n            ChooseBackgroundImageCommand = new AsyncRelayCommand(ChooseBackgroundImageAsync, NotPreInstalled);\n            DeleteBackgroundImageCommand = new AsyncRelayCommand(DeleteBackgroundImageAsync, NotPreInstalled);\n        }\n\n        public event EventHandler Activated;\n\n        public event EventHandler Deleted;\n\n        public TerminalTheme Model { get; }\n\n        public string Author\n        {\n            get => _author;\n            set => SetProperty(ref _author, value);\n        }\n\n        public string Background\n        {\n            get => _background;\n            set\n            {\n                SetProperty(ref _background, value);\n                BackgroundChanged?.Invoke(this, value);\n            }\n        }\n\n        public double BackgroundOpacity\n        {\n            get => _backgroundOpacity;\n            set => SetProperty(ref _backgroundOpacity, value);\n        }\n\n        public string Black\n        {\n            get => _black;\n            set => SetProperty(ref _black, value);\n        }\n\n        public string Blue\n        {\n            get => _blue;\n            set => SetProperty(ref _blue, value);\n        }\n\n        public string BrightBlack\n        {\n            get => _brightBlack;\n            set => SetProperty(ref _brightBlack, value);\n        }\n\n        public string BrightBlue\n        {\n            get => _brightBlue;\n            set => SetProperty(ref _brightBlue, value);\n        }\n\n        public string BrightCyan\n        {\n            get => _brightCyan;\n            set => SetProperty(ref _brightCyan, value);\n        }\n\n        public string BrightGreen\n        {\n            get => _brightGreen;\n            set => SetProperty(ref _brightGreen, value);\n        }\n\n        public string BrightMagenta\n        {\n            get => _brightMagenta;\n            set => SetProperty(ref _brightMagenta, value);\n        }\n\n        public string BrightRed\n        {\n            get => _brightRed;\n            set => SetProperty(ref _brightRed, value);\n        }\n\n        public string BrightWhite\n        {\n            get => _brightWhite;\n            set => SetProperty(ref _brightWhite, value);\n        }\n\n        public string BrightYellow\n        {\n            get => _brightYellow;\n            set => SetProperty(ref _brightYellow, value);\n        }\n\n        public ICommand CancelEditCommand { get; }\n\n        public string Cursor\n        {\n            get => _cursor;\n            set => SetProperty(ref _cursor, value);\n        }\n\n        public string CursorAccent\n        {\n            get => _cursorAccent;\n            set => SetProperty(ref _cursorAccent, value);\n        }\n\n        public string Cyan\n        {\n            get => _cyan;\n            set => SetProperty(ref _cyan, value);\n        }\n\n        public ICommand DeleteCommand { get; }\n        public ICommand EditCommand { get; }\n        public ICommand ExportCommand { get; }\n\n        public string Foreground\n        {\n            get => _foreground;\n            set => SetProperty(ref _foreground, value);\n        }\n\n        public string Green\n        {\n            get => _green;\n            set => SetProperty(ref _green, value);\n        }\n\n        public Guid Id { get; }\n\n        public bool InEditMode\n        {\n            get => _inEditMode;\n            set => SetProperty(ref _inEditMode, value);\n        }\n\n        public bool IsActive\n        {\n            get => _isActive;\n            set => SetProperty(ref _isActive, value);\n        }\n\n        public string Magenta\n        {\n            get => _magenta;\n            set => SetProperty(ref _magenta, value);\n        }\n\n        public string Name\n        {\n            get => _name;\n            set => SetProperty(ref _name, value);\n        }\n\n        public string Red\n        {\n            get => _red;\n            set => SetProperty(ref _red, value);\n        }\n\n        public ICommand SaveChangesCommand { get; }\n\n        public string Selection\n        {\n            get => _selection;\n            set => SetProperty(ref _selection, value);\n        }\n\n        public ICommand SetActiveCommand { get; }\n\n        public string White\n        {\n            get => _white;\n            set => SetProperty(ref _white, value);\n        }\n\n        public string Yellow\n        {\n            get => _yellow;\n            set => SetProperty(ref _yellow, value);\n        }\n\n        public ImageFile BackgroundThemeFile\n        {\n            get => _backgroundThemeFile;\n            set\n            {\n                SetProperty(ref _backgroundThemeFile, value);\n                BackgroundImageChanged?.Invoke(this, value);\n            }\n        }\n\n        public ICommand ChooseBackgroundImageCommand { get; }\n\n        public ICommand DeleteBackgroundImageCommand { get; }\n\n        // Requires UI thread\n        private async Task SaveChangesAsync()\n        {\n            Model.Name = Name;\n            Model.Author = Author;\n\n            Model.Colors.Black = Black;\n            Model.Colors.Red = Red;\n            Model.Colors.Green = Green;\n            Model.Colors.Yellow = Yellow;\n            Model.Colors.Blue = Blue;\n            Model.Colors.Magenta = Magenta;\n            Model.Colors.Cyan = Cyan;\n            Model.Colors.White = White;\n\n            Model.Colors.BrightBlack = BrightBlack;\n            Model.Colors.BrightRed = BrightRed;\n            Model.Colors.BrightGreen = BrightGreen;\n            Model.Colors.BrightYellow = BrightYellow;\n            Model.Colors.BrightBlue = BrightBlue;\n            Model.Colors.BrightMagenta = BrightMagenta;\n            Model.Colors.BrightCyan = BrightCyan;\n            Model.Colors.BrightWhite = BrightWhite;\n\n            Model.Colors.Background = Background;\n            Model.Colors.Foreground = Foreground;\n            Model.Colors.Cursor = Cursor;\n            Model.Colors.CursorAccent = CursorAccent;\n            Model.Colors.Selection = Selection;\n\n            if (Model.BackgroundImage != null &&\n               BackgroundThemeFile != Model?.BackgroundImage)\n            {\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n                await _imageFileSystemService\n                    .RemoveImportedImageAsync($\"{Model.BackgroundImage?.Name}{Model.BackgroundImage?.FileType}\")\n                    .ConfigureAwait(true);\n            }\n\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            BackgroundThemeFile = await SaveBackgroundImageAsync().ConfigureAwait(true);\n\n            Model.BackgroundImage = BackgroundThemeFile;\n\n            _settingsService.SaveTheme(Model);\n\n            InEditMode = false;\n            _isNew = false;\n        }\n\n        // Requires UI thread\n        private async Task CancelEditAsync()\n        {\n            if (_isNew)\n            {\n                await DeleteAsync().ConfigureAwait(false);\n\n                return;\n            }\n\n            TerminalTheme changedTheme = new TerminalTheme()\n            {\n                Name = Name,\n                Author = Author,\n                BackgroundImage = BackgroundThemeFile,\n                Colors = new TerminalColors()\n                {\n                    Black = Black,\n                    Red = Red,\n                    Green = Green,\n                    Yellow = Yellow,\n                    Blue = Blue,\n                    Magenta = Magenta,\n                    Cyan = Cyan,\n                    White = White,\n\n                    BrightBlack = BrightBlack,\n                    BrightRed = BrightRed,\n                    BrightGreen = BrightGreen,\n                    BrightYellow = BrightYellow,\n                    BrightBlue = BrightBlue,\n                    BrightMagenta = BrightMagenta,\n                    BrightCyan = BrightCyan,\n                    BrightWhite = BrightWhite,\n\n                    Background = Background,\n                    Foreground = Foreground,\n                    Cursor = Cursor,\n                    CursorAccent = CursorAccent,\n                    Selection = Selection\n                }\n            };\n\n            if (!_fallbackTheme.Equals(changedTheme))\n            {\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n                var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmDiscardChanges\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n                if (result == DialogButton.OK)\n                {\n                    Black = _fallbackTheme.Colors.Black;\n                    Red = _fallbackTheme.Colors.Red;\n                    Green = _fallbackTheme.Colors.Green;\n                    Yellow = _fallbackTheme.Colors.Yellow;\n                    Blue = _fallbackTheme.Colors.Blue;\n                    Magenta = _fallbackTheme.Colors.Magenta;\n                    Cyan = _fallbackTheme.Colors.Cyan;\n                    White = _fallbackTheme.Colors.White;\n\n                    BrightBlack = _fallbackTheme.Colors.BrightBlack;\n                    BrightRed = _fallbackTheme.Colors.BrightRed;\n                    BrightGreen = _fallbackTheme.Colors.BrightGreen;\n                    BrightYellow = _fallbackTheme.Colors.BrightYellow;\n                    BrightBlue = _fallbackTheme.Colors.BrightBlue;\n                    BrightMagenta = _fallbackTheme.Colors.BrightMagenta;\n                    BrightCyan = _fallbackTheme.Colors.BrightCyan;\n                    BrightWhite = _fallbackTheme.Colors.BrightWhite;\n\n                    Background = _fallbackTheme.Colors.Background;\n                    Foreground = _fallbackTheme.Colors.Foreground;\n                    Cursor = _fallbackTheme.Colors.Cursor;\n                    CursorAccent = _fallbackTheme.Colors.CursorAccent;\n                    Selection = _fallbackTheme.Colors.Selection;\n\n                    Name = _fallbackTheme.Name;\n                    Author = _fallbackTheme.Author;\n\n                    BackgroundThemeFile = _fallbackTheme.BackgroundImage;\n\n                    InEditMode = false;\n\n                    await _imageFileSystemService.RemoveTemporaryBackgroundThemeImageAsync().ConfigureAwait(false);\n                }\n            }\n            else\n            {\n                InEditMode = false;\n            }\n        }\n\n        private bool NotPreInstalled()\n        {\n            return !Model.PreInstalled;\n        }\n\n        // Requires UI thread\n        private async Task DeleteAsync()\n        {\n            // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmDeleteTheme\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n                await DeleteBackgroundImageIfExistsAsync().ConfigureAwait(true);\n                // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n                await _imageFileSystemService.RemoveTemporaryBackgroundThemeImageAsync().ConfigureAwait(true);\n\n                Deleted?.Invoke(this, EventArgs.Empty);\n            }\n        }\n\n        // Requires UI thread\n        private async Task DeleteBackgroundImageAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmDeleteBackgroundImage\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                BackgroundThemeFile = null;\n            }\n        }\n\n        private void Edit()\n        {\n            _fallbackTheme = new TerminalTheme(Model);\n            InEditMode = true;\n        }\n\n        private void SetActive()\n        {\n            Activated?.Invoke(this, EventArgs.Empty);\n        }\n\n        private Task Export()\n        {\n            var encodedImage = _imageFileSystemService.EncodeImage(BackgroundThemeFile);\n            var exportedTheme = new ExportedTerminalTheme(Model, encodedImage);\n            var content = JsonConvert.SerializeObject(exportedTheme, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new TerminalThemeContractResolver() });\n            return _fileSystemService.SaveTextFileAsync(Name, \"Fluent Terminal Theme\", \".flutecolors\", content);\n        }\n\n        private async Task<ImageFile> SaveBackgroundImageAsync()\n        {\n            if (BackgroundThemeFile == null)\n            {\n                return BackgroundThemeFile;\n            }\n\n            if (BackgroundThemeFile == Model.BackgroundImage)\n            {\n                return BackgroundThemeFile;\n            }\n\n            var importedBackgroundThemeFile =\n                await _fileSystemService.SaveImageInRoamingAsync(BackgroundThemeFile).ConfigureAwait(false);\n\n            await _imageFileSystemService.RemoveTemporaryBackgroundThemeImageAsync().ConfigureAwait(false);\n\n            return importedBackgroundThemeFile;\n        }\n\n        // Requires UI thread\n        private async Task ChooseBackgroundImageAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var chosenImage = await _imageFileSystemService\n                .ImportTemporaryImageFileAsync(new[] {\".jpeg\", \".png\", \".jpg\"}).ConfigureAwait(true);\n\n            if(chosenImage != null)\n            {\n                BackgroundThemeFile = chosenImage;\n            }\n        }\n\n        // Requires UI thread\n        private async Task DeleteBackgroundImageIfExistsAsync()\n        {\n            if (BackgroundThemeFile != null)\n            {\n                var imageFile = Model.BackgroundImage;\n\n                BackgroundThemeFile = null;\n\n                if (imageFile != null)\n                {\n                    await _imageFileSystemService.RemoveImportedImageAsync($\"{imageFile.Name}{imageFile.FileType}\")\n                        .ConfigureAwait(false);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Utilities/TaskUtilities.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Infrastructure;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels.Utilities\n{\n    public static class TaskUtilities\n    {\n        #pragma warning disable RECS0165 // Asynchronous methods should return a Task instead of void\n        public static async void FireAndForgetSafeAsync(this Task task, IErrorHandler handler = null)\n        #pragma warning restore RECS0165 // Asynchronous methods should return a Task instead of void\n        {\n            try\n            {\n                await task;\n            }\n            catch (Exception ex)\n            {\n                handler?.HandleError(ex);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/ViewModels/Utilities/WebViewSpecialCharEncoder.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels.Utilities\n{\n    public static class WebViewSpecialCharEncoder\n    {\n        public static string Encode(string value)\n        {\n            return value.Replace(\"\\\"\", \"&quot;\").Replace(\"'\", \"&squo;\").Replace(\"\\\\\", \"&bsol;\");\n        }\n\n        public static string Decode(string value)\n        {\n            return value.Replace(\"&quot;\", \"\\\"\").Replace(\"&squo;\", \"'\").Replace(\"&bsol;\", \"\\\\\");\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/BooleanTemplateSelector.cs",
    "content": "﻿using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public class BooleanTemplateSelector : DataTemplateSelector\n    {\n        public DataTemplate TrueTemplate { get; set; }\n        public DataTemplate FalseTemplate { get; set; }\n\n        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)\n        {\n            return SelectTemplateCore(item);\n        }\n\n        protected override DataTemplate SelectTemplateCore(object item)\n        {\n            if (item is bool value)\n            {\n                return value ? TrueTemplate : FalseTemplate;\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/EnvironmentVariablesView.xaml",
    "content": "﻿<UserControl\n    x:Class=\"FluentTerminal.App.Views.EnvironmentVariablesView\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:viewmodels=\"using:FluentTerminal.App.ViewModels\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"400\"\n    mc:Ignorable=\"d\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <HyperlinkButton\n            x:Uid=\"Add\"\n            Grid.Row=\"0\"\n            Tapped=\"OnAddTapped\" />\n        <ItemsControl\n            Grid.Row=\"1\"\n            Background=\"Blue\"\n            ItemsSource=\"{x:Bind EnvironmentVariables, Mode=OneWay}\">\n            <ItemsControl.ItemTemplate>\n                <DataTemplate x:DataType=\"viewmodels:EnvironmentVariableViewModel\">\n                    <Grid Margin=\"0,0,0,6\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n                        <TextBox\n                            Grid.Column=\"0\"\n                            Width=\"150\"\n                            Margin=\"0,0,6,0\"\n                            Text=\"{x:Bind Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                        <TextBox\n                            Grid.Column=\"1\"\n                            Margin=\"0,0,6,0\"\n                            Text=\"{x:Bind Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                        <HyperlinkButton\n                            x:Uid=\"Delete\"\n                            Grid.Column=\"2\"\n                            Tag=\"{x:Bind Id, Mode=OneTime}\"\n                            Tapped=\"OnRemoveTapped\" />\n                    </Grid>\n                </DataTemplate>\n            </ItemsControl.ItemTemplate>\n        </ItemsControl>\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "FluentTerminal.App/Views/EnvironmentVariablesView.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public sealed partial class EnvironmentVariablesView : UserControl\n    {\n        public ObservableCollection<EnvironmentVariableViewModel> EnvironmentVariables\n        {\n            get { return (ObservableCollection<EnvironmentVariableViewModel>)GetValue(EnvironmentVariablesProperty); }\n            set { SetValue(EnvironmentVariablesProperty, value); }\n        }\n\n        public static readonly DependencyProperty EnvironmentVariablesProperty =\n            DependencyProperty.Register(nameof(EnvironmentVariables), typeof(ObservableCollection<EnvironmentVariableViewModel>), typeof(EnvironmentVariablesView), new PropertyMetadata(null));\n\n        public EnvironmentVariablesView()\n        {\n            InitializeComponent();\n        }\n\n        private void OnAddTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            EnvironmentVariables.Add(new EnvironmentVariableViewModel());\n        }\n\n        private void OnRemoveTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            if (sender is HyperlinkButton button)\n            {\n                var item = EnvironmentVariables.FirstOrDefault(x => x.Id == (Guid)button.Tag);\n                EnvironmentVariables.Remove(item);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/KeyBindingsView.xaml",
    "content": "﻿<UserControl\n    x:Class=\"FluentTerminal.App.Views.KeyBindingsView\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:settings=\"using:FluentTerminal.App.ViewModels.Settings\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"400\"\n    mc:Ignorable=\"d\">\n    <Grid>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"*\" />\n        </Grid.ColumnDefinitions>\n        <TextBlock\n            Grid.Column=\"0\"\n            Width=\"200\"\n            Margin=\"0,6,24,0\"\n            Text=\"{x:Bind ViewModel.CommandName, Mode=OneWay}\"\n            Visibility=\"{x:Bind ShowCommandName, Mode=OneWay}\" />\n        <ItemsControl Grid.Column=\"1\" ItemsSource=\"{x:Bind ViewModel.KeyBindings, Mode=OneWay}\">\n            <ItemsControl.ItemTemplate>\n                <DataTemplate x:DataType=\"settings:KeyBindingViewModel\">\n                    <StackPanel\n                        x:Name=\"Root\"\n                        Margin=\"0,0,0,6\"\n                        Orientation=\"Horizontal\">\n                        <Grid\n                            Width=\"48\"\n                            Height=\"32\"\n                            Margin=\"0,0,6,0\"\n                            Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                            Visibility=\"{x:Bind Ctrl, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                            <TextBlock\n                                HorizontalAlignment=\"Center\"\n                                VerticalAlignment=\"Center\"\n                                Text=\"Ctrl\" />\n                        </Grid>\n                        <Grid\n                            Width=\"48\"\n                            Height=\"32\"\n                            Margin=\"0,0,6,0\"\n                            Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                            Visibility=\"{x:Bind Meta, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                            <FontIcon\n                                HorizontalAlignment=\"Center\"\n                                VerticalAlignment=\"Center\"\n                                FontFamily=\"/Assets/settingsicons.ttf#settingsicons\"\n                                Glyph=\"f\" />\n                        </Grid>\n                        <Grid\n                            Width=\"48\"\n                            Height=\"32\"\n                            Margin=\"0,0,6,0\"\n                            Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                            Visibility=\"{x:Bind Alt, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                            <TextBlock\n                                HorizontalAlignment=\"Center\"\n                                VerticalAlignment=\"Center\"\n                                Text=\"Alt\" />\n                        </Grid>\n                        <Grid\n                            Width=\"48\"\n                            Height=\"32\"\n                            Margin=\"0,0,6,0\"\n                            Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\"\n                            Visibility=\"{x:Bind Shift, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                            <TextBlock\n                                HorizontalAlignment=\"Center\"\n                                VerticalAlignment=\"Center\"\n                                Text=\"Shift\" />\n                        </Grid>\n                        <Grid\n                            Width=\"64\"\n                            Height=\"32\"\n                            Margin=\"0,0,6,0\"\n                            Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\">\n                            <TextBlock\n                                HorizontalAlignment=\"Center\"\n                                VerticalAlignment=\"Center\"\n                                Text=\"{x:Bind Key, Mode=OneWay, Converter={StaticResource IntToExtendedVirtualKeyConverter}}\" />\n                        </Grid>\n                        <HyperlinkButton\n                            x:Uid=\"KeyBindingsViewEdit\"\n                            Margin=\"12,0,0,0\"\n                            Command=\"{x:Bind EditCommand}\"\n                            Content=\"Edit\"\n                            Visibility=\"{x:Bind Parent.Editable, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}\" />\n                        <HyperlinkButton\n                            x:Uid=\"Delete\"\n                            Margin=\"12,0,0,0\"\n                            Command=\"{x:Bind DeleteCommand}\"\n                            Content=\"Delete\"\n                            Visibility=\"{x:Bind Parent.Editable, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}\" />\n                    </StackPanel>\n                </DataTemplate>\n            </ItemsControl.ItemTemplate>\n        </ItemsControl>\n    </Grid>\n</UserControl>"
  },
  {
    "path": "FluentTerminal.App/Views/KeyBindingsView.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public sealed partial class KeyBindingsView : UserControl\n    {\n        public static readonly DependencyProperty ShowCommandNameProperty =\n            DependencyProperty.Register(nameof(ShowCommandName), typeof(bool), typeof(KeyBindingsView), new PropertyMetadata(true));\n\n        public static readonly DependencyProperty ViewModelProperty =\n                            DependencyProperty.Register(nameof(ViewModel), typeof(KeyBindingsViewModel), typeof(KeyBindingsView), new PropertyMetadata(null));\n\n        public KeyBindingsView()\n        {\n            InitializeComponent();\n        }\n\n        public bool ShowCommandName\n        {\n            get { return (bool)GetValue(ShowCommandNameProperty); }\n            set { SetValue(ShowCommandNameProperty, value); }\n        }\n\n        public KeyBindingsViewModel ViewModel\n        {\n            get { return (KeyBindingsViewModel)GetValue(ViewModelProperty); }\n            set { SetValue(ViewModelProperty, value); }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:converters=\"using:FluentTerminal.App.Converters\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:views=\"using:FluentTerminal.App.Views\"\n    KeyDown=\"MainPage_OnKeyDown\"\n    RequestedTheme=\"{x:Bind ViewModel.SelectedTerminal.TerminalTheme.Colors.Background, Mode=OneWay, Converter={StaticResource BackgroundToApplicationThemeConverter}}\"\n    mc:Ignorable=\"d\">\n    <Page.Background>\n        <SolidColorBrush Color=\"{ThemeResource SystemAccentColor}\" />\n    </Page.Background>\n    <Page.Resources>\n        <converters:TerminalViewModelToViewConverter x:Key=\"TerminalViewModelToViewConverter\" />\n    </Page.Resources>\n    <Grid x:Name=\"Root\">\n        <Grid.Background>\n            <AcrylicBrush\n                AlwaysUseFallback=\"{x:Bind ViewModel.UseAcrylicBackground, Mode=OneWay, Converter={StaticResource NegateConverter}}\"\n                BackgroundSource=\"HostBackdrop\"\n                FallbackColor=\"{x:Bind ViewModel.SelectedTerminal.TerminalTheme.Colors.Background, Mode=OneWay}\"\n                TintColor=\"{x:Bind ViewModel.SelectedTerminal.TerminalTheme.Colors.Background, Mode=OneWay}\"\n                TintOpacity=\"{x:Bind ViewModel.BackgroundOpacity, Mode=OneWay}\"\n                TintTransitionDuration=\"{x:Bind NoDuration}\" />\n        </Grid.Background>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n        <Rectangle x:Name=\"TitleBar\" Fill=\"Transparent\" />\n        <Grid\n            x:Name=\"TitleBarContents\"\n            Height=\"44\"\n            Margin=\"{Binding CoreTitleBarPadding, Mode=OneWay}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n            <Button Margin=\"6 0 0 0\" Flyout=\"{x:Bind ViewModel.AppMenuViewModel, Mode=OneWay, Converter={StaticResource MenuViewModelToFlyoutMenuConverter}}\" Style=\"{StaticResource TitleBarButtonStyle}\">\n                <Button.Content>\n                    <Viewbox Width=\"16\" Height=\"16\">\n                        <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xE700;\" />\n                    </Viewbox>\n                </Button.Content>\n            </Button>\n            <TextBlock\n                Grid.Column=\"1\"\n                Margin=\"12,0,12,0\"\n                VerticalAlignment=\"Center\"\n                IsHitTestVisible=\"False\"\n                Style=\"{StaticResource CaptionTextBlockStyle}\"\n                Text=\"{x:Bind ViewModel.WindowTitle, Mode=OneWay}\"\n                TextTrimming=\"CharacterEllipsis\"\n                TextWrapping=\"NoWrap\"\n                Visibility=\"{x:Bind ViewModel.ShowTabsOnTop, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\" />\n            <Rectangle\n                x:Name=\"TabDropArea\"\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Stretch\"\n                AllowDrop=\"True\"\n                DragEnter=\"TabDropArea_DragEnter\"\n                Drop=\"TabDropArea_Drop\"\n                Fill=\"LightGray\"\n                Opacity=\"0.2\"\n                Visibility=\"{x:Bind DraggingHappensFromAnotherWindow, Mode=TwoWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n            <views:TabBar\n                x:Name=\"TopTabBar\"\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Left\"\n                Height=\"44\"\n                AddCommand=\"{x:Bind ViewModel.AddDefaultTabCommand}\"\n                ItemsSource=\"{x:Bind ViewModel.Terminals, Mode=OneWay}\"\n                SelectedItem=\"{x:Bind ViewModel.SelectedTerminal, Mode=TwoWay}\"\n                TabDraggedOutside=\"TabBar_TabDraggedOutside\"\n                TabDraggingChanged=\"TabBar_TabDraggingChanged\"\n                TabDraggingCompleted=\"TabBar_TabDraggingCompleted\"\n                TabWindowChanged=\"TabView_Drop\"\n                Visibility=\"{x:Bind ViewModel.ShowTabsOnTop, Mode=OneWay}\" />\n        </Grid>\n        <ContentControl\n            x:Name=\"TerminalContainer\"\n            Grid.Row=\"1\"\n            HorizontalContentAlignment=\"Stretch\"\n            VerticalContentAlignment=\"Stretch\"\n            Content=\"{x:Bind ViewModel.SelectedTerminal, Mode=OneWay, Converter={StaticResource TerminalViewModelToViewConverter}}\" />\n        <Rectangle\n            Grid.Row=\"1\"\n            Fill=\"LightGray\"\n            Opacity=\"0.01\"\n            Visibility=\"{x:Bind DraggingHappens, Mode=TwoWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n        <Rectangle\n            Grid.Row=\"2\"\n            HorizontalAlignment=\"Stretch\"\n            AllowDrop=\"True\"\n            DragEnter=\"TabDropArea_DragEnter\"\n            Drop=\"TabDropArea_Drop\"\n            Fill=\"LightGray\"\n            Opacity=\"0.2\"\n            Visibility=\"{x:Bind DraggingHappensFromAnotherWindow, Mode=TwoWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n        <views:TabBar\n            Height=\"44\"\n            x:Name=\"BottomTabBar\"\n            Grid.Row=\"2\"\n            Margin=\"0 0 4 0\"\n            HorizontalAlignment=\"Left\"\n            AddCommand=\"{x:Bind ViewModel.AddDefaultTabCommand}\"\n            ItemsSource=\"{x:Bind ViewModel.Terminals, Mode=OneWay}\"\n            SelectedItem=\"{x:Bind ViewModel.SelectedTerminal, Mode=TwoWay}\"\n            TabDraggedOutside=\"TabBar_TabDraggedOutside\"\n            TabDraggingChanged=\"TabBar_TabDraggingChanged\"\n            TabDraggingCompleted=\"TabBar_TabDraggingCompleted\"\n            TabWindowChanged=\"TabView_Drop\"\n            Visibility=\"{x:Bind ViewModel.ShowTabsOnBottom, Mode=OneWay}\" />\n    </Grid>\n</Page>"
  },
  {
    "path": "FluentTerminal.App/Views/MainPage.xaml.cs",
    "content": "﻿using FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels;\nusing System;\nusing System.ComponentModel;\nusing System.Linq;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Core;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing Windows.ApplicationModel.DataTransfer;\nusing Windows.System;\nusing Windows.UI.Xaml.Input;\nusing FluentTerminal.App.Services.Utilities;\n\nnamespace FluentTerminal.App.Views\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class MainPage : Page, INotifyPropertyChanged\n    {\n        private CoreApplicationViewTitleBar _coreTitleBar = CoreApplication.GetCurrentView().TitleBar;\n\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        public double CoreTitleBarHeight => _coreTitleBar.Height;\n\n        public TimeSpan NoDuration => TimeSpan.Zero;\n\n        public Thickness CoreTitleBarPadding\n        {\n            get\n            {\n                if (FlowDirection == FlowDirection.LeftToRight)\n                {\n                    return new Thickness { Left = _coreTitleBar.SystemOverlayLeftInset, Right = _coreTitleBar.SystemOverlayRightInset };\n                }\n                else\n                {\n                    return new Thickness { Left = _coreTitleBar.SystemOverlayRightInset, Right = _coreTitleBar.SystemOverlayLeftInset };\n                }\n            }\n        }\n\n        public MainViewModel ViewModel { get; private set; }\n\n        private long _propertyChangedCallbackToken;\n\n        public MainPage()\n        {\n            InitializeComponent();\n            Root.DataContext = this;\n            Window.Current.SetTitleBar(TitleBar);\n            Loaded += OnLoaded;\n            DraggingHappensChanged += MainPage_DraggingHappensChanged;\n            Window.Current.Activated += OnWindowActivated;\n            _propertyChangedCallbackToken = RegisterPropertyChangedCallback(RequestedThemeProperty, OnRequestedThemeProperty);\n\n            ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto;\n        }\n\n        private void OnRequestedThemeProperty(DependencyObject sender, DependencyProperty dp)\n        {\n            ContrastHelper.SetTitleBarButtonsForTheme(RequestedTheme);\n        }\n\n        private async void MainPage_DraggingHappensChanged(object sender, bool e)\n        {\n            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n            {\n                if (sender != TopTabBar && sender != BottomTabBar)\n                {\n                    DraggingHappensFromAnotherWindow = e;\n                }\n                DraggingHappens = e;\n            });\n         }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is MainViewModel viewModel)\n            {\n                ViewModel = viewModel;\n                ViewModel.Closed += ViewModel_Closed;\n            }\n            base.OnNavigatedTo(e);\n        }\n\n        private void ViewModel_Closed(object sender, EventArgs e)\n        {\n            TopTabBar.TabDraggedOutside -= TabBar_TabDraggedOutside;\n            TopTabBar.TabWindowChanged -= TabView_Drop;\n            TopTabBar.TabDraggingCompleted -= TabBar_TabDraggingCompleted;\n            TopTabBar.TabDraggingChanged -= TabBar_TabDraggingChanged;\n\n            BottomTabBar.TabDraggedOutside -= TabBar_TabDraggedOutside;\n            BottomTabBar.TabWindowChanged -= TabView_Drop;\n            BottomTabBar.TabDraggingCompleted -= TabBar_TabDraggingCompleted;\n            BottomTabBar.TabDraggingChanged -= TabBar_TabDraggingChanged;\n\n            TopTabBar.DisposalPrepare();\n            BottomTabBar.DisposalPrepare();\n\n            UnregisterPropertyChangedCallback(RequestedThemeProperty, _propertyChangedCallbackToken);\n\n            Loaded -= OnLoaded;\n            DraggingHappensChanged -= MainPage_DraggingHappensChanged;\n            Window.Current.Activated -= OnWindowActivated;\n\n            _coreTitleBar.LayoutMetricsChanged -= OnLayoutMetricsChanged;\n\n            ViewModel.Closed -= ViewModel_Closed;\n            ViewModel = null;\n            Root.DataContext = null;\n            Window.Current.SetTitleBar(null);\n\n            _coreTitleBar = null;\n            Bindings.StopTracking();\n            TerminalContainer.Content = null;\n        }\n\n        private void OnWindowActivated(object sender, WindowActivatedEventArgs e)\n        {\n            if (e.WindowActivationState != CoreWindowActivationState.Deactivated && TerminalContainer.Content is TerminalView terminal)\n            {\n                terminal.ViewModel?.FocusTerminal();\n                ViewModel.FocusWindow();\n            }\n        }\n\n        private void OnLoaded(object sender, RoutedEventArgs e)\n        {\n            _coreTitleBar.LayoutMetricsChanged += OnLayoutMetricsChanged;\n            UpdateLayoutMetrics();\n        }\n\n        private void OnLayoutMetricsChanged(CoreApplicationViewTitleBar sender, object e)\n        {\n            UpdateLayoutMetrics();\n        }\n\n        private void UpdateLayoutMetrics()\n        {\n            if (PropertyChanged != null)\n            {\n                PropertyChanged(this, new PropertyChangedEventArgs(nameof(CoreTitleBarHeight)));\n                PropertyChanged(this, new PropertyChangedEventArgs(nameof(CoreTitleBarPadding)));\n            }\n        }\n\n        private async void TabView_Drop(object sender, NewTabRequestedEventArgs e)\n        {\n            if (e.DragEventArgs.DataView.Properties.TryGetValue(Constants.TerminalViewModelStateId, out var stateObj) && stateObj is string terminalViewModelState)\n            {\n                await ViewModel.AddTabAsync(terminalViewModelState, e.Position);\n            }\n        }\n\n        private void TabBar_TabDraggedOutside(ListViewBase sender, DragItemsCompletedEventArgs args)\n        {\n            var item = args.Items.FirstOrDefault();\n            if (item is TerminalViewModel model)\n            {\n                ViewModel.TearOffTab(model);\n            }\n        }\n\n        private void TabBar_TabDraggingCompleted(object sender, TerminalViewModel model)\n        {\n            int position = ViewModel.Terminals.IndexOf(model);\n            ViewModel.Terminals.Remove(model);\n            if (ViewModel.Terminals.Count > 0)\n            {\n                ViewModel.SelectedTerminal = ViewModel.Terminals[Math.Max(0, position - 1)];\n            }\n            else\n            {\n                ViewModel.ApplicationView.TryCloseAsync();\n            }\n        }\n\n        public static readonly DependencyProperty DraggingHappensFromAnotherWindowProperty =\n            DependencyProperty.Register(nameof(DraggingHappensFromAnotherWindow), typeof(bool), typeof(MainPage), new PropertyMetadata(null));\n\n        public bool DraggingHappensFromAnotherWindow\n        {\n            get { return (bool)GetValue(DraggingHappensFromAnotherWindowProperty); }\n            set { SetValue(DraggingHappensFromAnotherWindowProperty, value); }\n        }\n\n        public static readonly DependencyProperty DraggingHappensProperty =\n            DependencyProperty.Register(nameof(DraggingHappens), typeof(bool), typeof(MainPage), new PropertyMetadata(null));\n\n        public bool DraggingHappens\n        {\n            get { return (bool)GetValue(DraggingHappensProperty); }\n            set { SetValue(DraggingHappensProperty, value); }\n        }\n\n        private static event EventHandler<bool> DraggingHappensChanged;\n\n        private void TabDropArea_DragEnter(object sender, DragEventArgs e)\n        {\n            Logger.Instance.Debug(\"TabDropArea_DragEnter.\");\n            e.AcceptedOperation = DataPackageOperation.Move;\n            if (e.DragUIOverride is DragUIOverride dragUiOverride)\n            {\n                dragUiOverride.IsGlyphVisible = false;\n                dragUiOverride.Caption = I18N.Translate(\"DropTabHere\");\n            }\n        }\n\n        private async void TabDropArea_Drop(object sender, DragEventArgs e)\n        {\n            if (e.DataView.Properties.TryGetValue(Constants.TerminalViewModelStateId, out object stateObj) && stateObj is string terminalViewModelState)\n            {\n                TabBar.ItemWasDropped = true;\n                await ViewModel.AddTabAsync(terminalViewModelState, ViewModel.Terminals.Count);\n            }\n        }\n\n        private void TabBar_TabDraggingChanged(object sender, bool e)\n        {\n            DraggingHappensChanged?.Invoke(sender, e);\n        }\n\n        private void MainPage_OnKeyDown(object sender, KeyRoutedEventArgs e)\n        {\n            var control = e.Key == VirtualKey.Control || Window.Current.CoreWindow.GetKeyState(VirtualKey.Control)\n                               .HasFlag(CoreVirtualKeyStates.Down);\n            var alt = e.Key == VirtualKey.Menu || Window.Current.CoreWindow.GetKeyState(VirtualKey.Menu)\n                          .HasFlag(CoreVirtualKeyStates.Down);\n            var shift = e.Key == VirtualKey.Menu || Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift)\n                            .HasFlag(CoreVirtualKeyStates.Down);\n            var meta = e.Key == VirtualKey.LeftWindows || e.Key == VirtualKey.RightWindows\n                                                       || Window.Current.CoreWindow.GetKeyState(VirtualKey.LeftWindows)\n                                                           .HasFlag(CoreVirtualKeyStates.Down)\n                                                       || Window.Current.CoreWindow.GetKeyState(VirtualKey.RightWindows)\n                                                           .HasFlag(CoreVirtualKeyStates.Down);\n\n            ViewModel?.OnWindowKeyDown((int) e.Key, control, alt, shift, meta);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/MenuExtension.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing FluentTerminal.App.Converters;\nusing FluentTerminal.App.ViewModels.Menu;\n\nnamespace FluentTerminal.App.Views\n{\n    // https://stackoverflow.com/questions/33839279/bind-obserable-collection-to-menuflyoutsubitem-in-uwp\n    public static class MenuExtension\n    {\n        private static readonly MenuItemViewModelBaseToMenuFlayoutItemBaseConverter Converter =\n            new MenuItemViewModelBaseToMenuFlayoutItemBaseConverter();\n\n        public static IEnumerable<MenuItemViewModelBase> GetSubItems(DependencyObject obj) =>\n            (IEnumerable<MenuItemViewModelBase>) obj.GetValue(SubItemsProperty);\n\n        public static void SetSubItems(DependencyObject obj, IEnumerable<MenuItemViewModelBase> value) =>\n            obj.SetValue(SubItemsProperty, value);\n\n        public static readonly DependencyProperty SubItemsProperty =\n            DependencyProperty.Register(\"SubItems\", typeof(IEnumerable<MenuItemViewModelBase>), typeof(MenuExtension),\n                new PropertyMetadata(new List<MenuItemViewModelBase>(), (sender, e) =>\n                {\n                    if (sender is MenuFlyoutSubItem menuSubItem)\n                    {\n                        menuSubItem.Items?.Clear();\n\n                        if (e.NewValue is IEnumerable<MenuItemViewModelBase> viewModels)\n                        {\n                            foreach (var item in viewModels.Select(vm => (MenuFlyoutItemBase) Converter.Convert(vm)))\n                            {\n                                menuSubItem.Items?.Add(item);\n                            }\n                        }\n                    }\n                }));\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/NoValueTemplateSelector.cs",
    "content": "﻿using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public class NoValueTemplateSelector : DataTemplateSelector\n    {\n        public DataTemplate DefaultTemplate { get; set; }\n        public DataTemplate CustomTemplate { get; set; }\n\n        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)\n        {\n            return SelectTemplateCore(item);\n        }\n\n        protected override DataTemplate SelectTemplateCore(object item)\n        {\n            if (item is string arguments)\n            {\n                return string.IsNullOrEmpty(arguments) ? DefaultTemplate : CustomTemplate;\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/OverlayView.xaml",
    "content": "﻿<UserControl\n    x:Class=\"FluentTerminal.App.Views.OverlayView\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"using:Microsoft.Toolkit.Uwp.UI.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:viewModels=\"using:FluentTerminal.App.ViewModels\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"600\"\n    Visibility=\"{Binding ShowOverlay, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\"\n    mc:Ignorable=\"d\">\n    <UserControl.DataContext>\n        <viewModels:OverlayViewModel />\n    </UserControl.DataContext>\n    <controls:DropShadowPanel\n        Margin=\"12\"\n        HorizontalAlignment=\"Right\"\n        VerticalAlignment=\"Bottom\"\n        ShadowOpacity=\"0.5\"\n        Color=\"Black\">\n        <Grid Padding=\"6\" CornerRadius=\"4\">\n            <Grid.Background>\n                <SolidColorBrush Color=\"{ThemeResource SystemAccentColor}\" />\n            </Grid.Background>\n            <TextBlock Foreground=\"White\" Text=\"{Binding OverlayContent}\" />\n        </Grid>\n    </controls:DropShadowPanel>\n</UserControl>\n"
  },
  {
    "path": "FluentTerminal.App/Views/OverlayView.xaml.cs",
    "content": "﻿using Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class OverlayView : UserControl\n    {\n        public OverlayView()\n        {\n            InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPage.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.SettingsPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"using:Microsoft.UI.Xaml.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    Loaded=\"Page_Loaded\"\n    mc:Ignorable=\"d\">\n    <Grid x:Name=\"Root\">\n        <TextBlock\n            x:Name=\"AppTitle\"\n            x:Uid=\"Settings\"\n            Canvas.ZIndex=\"1\"\n            IsHitTestVisible=\"False\"\n            Style=\"{StaticResource CaptionTextBlockStyle}\"\n            Visibility=\"{Binding IsPaneOpen, ElementName=NavigationView, Converter={StaticResource TrueToVisibleConverter}}\" />\n        <controls:NavigationView\n            x:Name=\"NavigationView\"\n            AlwaysShowHeader=\"False\"\n            Canvas.ZIndex=\"0\"\n            CompactModeThresholdWidth=\"0\"\n            ExpandedModeThresholdWidth=\"560\"\n            IsBackButtonVisible=\"Collapsed\"\n            IsSettingsVisible=\"False\"\n            Loaded=\"NavigationView_Loaded\"\n            OpenPaneLength=\"200\"\n            SelectionChanged=\"NavigationView_SelectionChanged\">\n            <controls:NavigationView.MenuItems>\n                <controls:NavigationViewItem\n                    x:Uid=\"Setting_General\"\n                    Content=\"General\"\n                    Tag=\"general\">\n                    <controls:NavigationViewItem.Icon>\n                        <FontIcon\n                            FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                            Glyph=\"&#xE713;\"\n                            ToolTipService.ToolTip=\"General\" />\n                    </controls:NavigationViewItem.Icon>\n                </controls:NavigationViewItem>\n                <controls:NavigationViewItem\n                    x:Uid=\"Setting_Terminal\"\n                    Content=\"Terminal\"\n                    Tag=\"terminal\">\n                    <controls:NavigationViewItem.Icon>\n                        <FontIcon\n                            FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                            Glyph=\"&#xE771;\"\n                            ToolTipService.ToolTip=\"Terminal\" />\n                    </controls:NavigationViewItem.Icon>\n                </controls:NavigationViewItem>\n                <controls:NavigationViewItem\n                    x:Uid=\"Setting_Profiles\"\n                    Content=\"Profiles\"\n                    Tag=\"profiles\">\n                    <controls:NavigationViewItem.Icon>\n                        <FontIcon\n                            FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                            Glyph=\"&#xE756;\"\n                            ToolTipService.ToolTip=\"Shell\" />\n                    </controls:NavigationViewItem.Icon>\n                </controls:NavigationViewItem>\n                <controls:NavigationViewItem\n                    x:Uid=\"Setting_SShProfiles\"\n                    Content=\"SSH Profiles\"\n                    Tag=\"sshprofiles\">\n                    <controls:NavigationViewItem.Icon>\n                        <FontIcon\n                            FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                            Glyph=\"&#xE774;\"\n                            ToolTipService.ToolTip=\"Shell\" />\n                    </controls:NavigationViewItem.Icon>\n                </controls:NavigationViewItem>\n                <controls:NavigationViewItem\n                    x:Uid=\"Setting_Keybindings\"\n                    Content=\"Keybindings\"\n                    Tag=\"keyBindings\">\n                    <controls:NavigationViewItem.Icon>\n                        <FontIcon\n                            FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                            Glyph=\"&#xE765;\"\n                            ToolTipService.ToolTip=\"Keybindings\" />\n                    </controls:NavigationViewItem.Icon>\n                </controls:NavigationViewItem>\n                <controls:NavigationViewItem\n                    x:Uid=\"Setting_Mouse\"\n                    Content=\"Mouse\"\n                    Tag=\"mouse\">\n                    <controls:NavigationViewItem.Icon>\n                        <FontIcon\n                            FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                            Glyph=\"&#xE962;\"\n                            ToolTipService.ToolTip=\"Mouse\" />\n                    </controls:NavigationViewItem.Icon>\n                </controls:NavigationViewItem>\n                <controls:NavigationViewItem\n                    x:Uid=\"Setting_Themes\"\n                    Content=\"Themes\"\n                    Tag=\"themes\">\n                    <controls:NavigationViewItem.Icon>\n                        <FontIcon\n                            FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                            Glyph=\"&#xE790;\"\n                            ToolTipService.ToolTip=\"Themes\" />\n                    </controls:NavigationViewItem.Icon>\n                </controls:NavigationViewItem>\n                <controls:NavigationViewItem\n                    x:Name=\"Setting_Hidden\"\n                    x:Uid=\"Setting_Hidden\"\n                    Visibility=\"Collapsed\" />\n            </controls:NavigationView.MenuItems>\n            <Grid Margin=\"0,-32,0,0\" Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n                <Frame x:Name=\"ContentFrame\" />\n                <TextBlock\n                    x:Uid=\"Settings\"\n                    Margin=\"12,8,0,0\"\n                    IsHitTestVisible=\"False\"\n                    Style=\"{StaticResource CaptionTextBlockStyle}\"\n                    Visibility=\"{Binding IsPaneOpen, ElementName=NavigationView, Converter={StaticResource FalseToVisibleConverter}}\" />\n            </Grid>\n        </controls:NavigationView>\n    </Grid>\n</Page>"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPage.xaml.cs",
    "content": "﻿using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels;\nusing FluentTerminal.App.Views.SettingsPages;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.Core;\nusing Windows.Foundation;\nusing Windows.UI.Core;\nusing Windows.UI.Core.Preview;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\nusing MUXC = Microsoft.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public sealed partial class SettingsPage : Page\n    {\n        private readonly UISettings _uiSettings;\n        private readonly ApplicationViewTitleBar _titleBar;\n        private readonly CoreDispatcher _dispatcher;\n        private readonly NavigationViewItem hiddenNavigationItem;\n        private bool _onThemesPage;\n\n        public SettingsPage()\n        {\n            InitializeComponent();\n            Root.DataContext = this;\n            ApplicationView.GetForCurrentView().Title = I18N.Translate(\"Setting\");\n\n            CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar;\n            coreTitleBar.LayoutMetricsChanged += TitleBar_LayoutMetricsChanged;\n            CoreTitleBarHeight = coreTitleBar.Height;\n\n            _titleBar = ApplicationView.GetForCurrentView().TitleBar;\n            _dispatcher = Window.Current.Dispatcher;\n\n            // ReSharper disable once AssignmentIsFullyDiscarded\n            _ = SetTitleBarColorsAsync();\n\n            _uiSettings = new UISettings();\n            _uiSettings.ColorValuesChanged += OnColorValuesChanged;\n            SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += SettingsPage_CloseRequested;\n            \n            hiddenNavigationItem = new NavigationViewItem();\n        }\n\n        private void OnColorValuesChanged(UISettings sender, object args)\n        {\n            if (!_onThemesPage)\n            {\n                // ReSharper disable once AssignmentIsFullyDiscarded\n                _ = SetTitleBarColorsAsync();\n            }\n        }\n\n        private Task SetTitleBarColorsAsync()\n        {\n            return _dispatcher.ExecuteAsync(() =>\n            {\n                var theme = Application.Current.RequestedTheme == ApplicationTheme.Light ? ElementTheme.Light : ElementTheme.Dark;\n                ContrastHelper.SetTitleBarButtonsForTheme(theme);\n            });\n        }\n\n        public double CoreTitleBarHeight { get; }\n\n        public SettingsViewModel ViewModel { get; private set; }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is SettingsViewModel viewModel)\n            {\n                ViewModel = viewModel;\n            }\n        }\n\n        private void NavigationView_Loaded(object sender, RoutedEventArgs e)\n        {\n            NavigationView.SelectedItem = NavigationView.MenuItems.Cast<MUXC.NavigationViewItemBase>().FirstOrDefault(m => m.Tag.ToString() == \"general\");\n        }\n\n        private void NavigationView_SelectionChanged(MUXC.NavigationView sender, MUXC.NavigationViewSelectionChangedEventArgs args)\n        {\n            _onThemesPage = false;\n\n            if (args.SelectedItem is MUXC.NavigationViewItem item)\n            {\n                switch (item.Tag)\n                {\n                    case \"general\":\n                        ContentFrame.Navigate(typeof(GeneralSettings), ViewModel.General);\n                        break;\n\n                    case \"profiles\":\n                        ContentFrame.Navigate(typeof(ShellProfileSettings), ViewModel.Profiles);\n                        break;\n\n                    case \"themes\":\n                        ContentFrame.Navigate(typeof(ThemeSettings), ViewModel.Themes);\n                        _onThemesPage = true;\n                        break;\n\n                    case \"terminal\":\n                        ContentFrame.Navigate(typeof(TerminalSettings), ViewModel.Terminal);\n                        break;\n\n                    case \"keyBindings\":\n                        ContentFrame.Navigate(typeof(KeyBindingSettings), ViewModel.KeyBindings);\n                        break;\n\n                    case \"mouse\":\n                        ContentFrame.Navigate(typeof(MouseSettings), ViewModel.Mouse);\n                        break;\n\n                    case \"sshprofiles\":\n                        ContentFrame.Navigate(typeof(SshProfileSettings), ViewModel.SshProfiles);\n                        break;\n                }\n            }\n\n            if (!_onThemesPage)\n            {\n                // ReSharper disable once AssignmentIsFullyDiscarded\n                _ = SetTitleBarColorsAsync();\n            }\n        }\n\n        private void SettingsPage_CloseRequested(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)\n        {\n            ViewModel.Close();\n        }\n\n        private void TitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args)\n        {\n            AppTitle.Margin = new Thickness(CoreApplication.GetCurrentView().TitleBar.SystemOverlayLeftInset + 12, 8, 0, 0);\n        }\n\n        private void Page_Loaded(object sender, RoutedEventArgs e)\n        {\n            ApplicationView.GetForCurrentView().TryResizeView(new Size { Width = 1024, Height = 768 });\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/GeneralSettings.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.SettingsPages.GeneralSettings\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:converters=\"using:FluentTerminal.App.Converters\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <Page.Resources>\n        <converters:BooleanNegationConverter x:Key=\"BooleanNegationConverter\" />\n    </Page.Resources>\n\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"32\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Grid Grid.Row=\"1\" Margin=\"{StaticResource HeaderMargin}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition />\n                <ColumnDefinition />\n            </Grid.ColumnDefinitions>\n            <TextBlock\n                x:Uid=\"General\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"28\"\n                Style=\"{StaticResource TitleTextBlockStyle}\"\n                Text=\"General\" />\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                DefaultLabelPosition=\"Right\">\n                <AppBarButton\n                    x:Uid=\"Restore\"\n                    Command=\"{x:Bind ViewModel.RestoreDefaultsCommand}\"\n                    Icon=\"Undo\"\n                    Label=\"Restore Defaults\" />\n            </CommandBar>\n        </Grid>\n        <ScrollViewer Grid.Row=\"2\">\n            <StackPanel Margin=\"{StaticResource ContainerMargin}\">\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <ComboBox\n                        x:Uid=\"Language\"\n                        Width=\"200\"\n                        Header=\"Language\"\n                        ItemsSource=\"{x:Bind ViewModel.Languages}\"\n                        SelectedItem=\"{x:Bind ViewModel.SelectedLanguage, Mode=TwoWay}\" />\n                    <TextBlock\n                        x:Uid=\"NeedsToRestart\"\n                        Foreground=\"Red\"\n                        Visibility=\"{x:Bind ViewModel.NeedsToRestart, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n                </StackPanel>\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <ToggleSwitch\n                        x:Uid=\"RunOnStartup\"\n                        Header=\"Run on startup\"\n                        IsEnabled=\"{x:Bind ViewModel.CanEnableStartupTask, Mode=OneWay}\"\n                        IsOn=\"{x:Bind ViewModel.StartupTaskEnabled, Mode=TwoWay}\" />\n                    <TextBlock\n                        Foreground=\"Red\"\n                        Text=\"{x:Bind ViewModel.StartupTaskErrorMessage, Mode=OneWay}\"\n                        Visibility=\"{x:Bind ViewModel.CanEnableStartupTask, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\" />\n                </StackPanel>\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <ToggleSwitch\n                        x:Uid=\"SystemTray\"\n                        Header=\"Show in system tray\"\n                        IsOn=\"{x:Bind ViewModel.EnableTrayIcon, Mode=TwoWay}\" />\n                    <TextBlock\n                        x:Uid=\"NeedRelaunch\"\n                        Foreground=\"Red\"\n                        Text=\"Relaunch required to apply setting\"\n                        Visibility=\"{x:Bind ViewModel.ShouldRestartForTrayMessage, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n                </StackPanel>\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"OpenNewTerminalAs\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Open new terminals as\" />\n                    <RadioButton\n                        x:Uid=\"ONTA_Tabs\"\n                        Content=\"Tabs\"\n                        GroupName=\"NewTerminalLocation\"\n                        IsChecked=\"{x:Bind ViewModel.TabIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"ONTA_Windows\"\n                        Content=\"Windows\"\n                        GroupName=\"NewTerminalLocation\"\n                        IsChecked=\"{x:Bind ViewModel.TabIsSelected, Mode=TwoWay, Converter={StaticResource BooleanNegationConverter}}\" />\n                </StackPanel>\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"AppMenuType\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Application menu type\" />\n                    <RadioButton\n                        x:Uid=\"AppMenuType_Flat\"\n                        Content=\"Flat, honoring 'Open new terminals as' setting\"\n                        GroupName=\"AppMenuType\"\n                        IsChecked=\"{x:Bind ViewModel.TabWindowCascadingAppMenu, Mode=TwoWay, Converter={StaticResource BooleanNegationConverter}}\" />\n                    <RadioButton\n                        x:Uid=\"AppMenuType_Cascading\"\n                        Content=\"'New Tab' / 'New Window' cascading\"\n                        GroupName=\"AppMenuType\"\n                        IsChecked=\"{x:Bind ViewModel.TabWindowCascadingAppMenu, Mode=TwoWay}\" />\n                </StackPanel>\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"TabsPostion\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Show tabs on\" />\n                    <RadioButton\n                        x:Uid=\"TP_Top\"\n                        Content=\"Top\"\n                        GroupName=\"TabsPosition\"\n                        IsChecked=\"{x:Bind ViewModel.TopIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"TP_Bottom\"\n                        Content=\"Bottom\"\n                        GroupName=\"TabsPosition\"\n                        IsChecked=\"{x:Bind ViewModel.BottomIsSelected, Mode=TwoWay}\" />\n                </StackPanel>\n\n                <ToggleSwitch\n                    x:Uid=\"CustomTitle\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Show custom tab title also in titlebar\"\n                    IsOn=\"{x:Bind ViewModel.ShowCustomTitleInTitlebar, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"UnderlineTab\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Underline selected tab\"\n                    IsOn=\"{x:Bind ViewModel.UnderlineSelectedTab, Mode=TwoWay}\" />\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"ColorInactiveTabs\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Color on inactive tabs\" />\n                    <RadioButton\n                        x:Uid=\"Background\"\n                        Content=\"Background\"\n                        GroupName=\"InactiveTabColorMode\"\n                        IsChecked=\"{x:Bind ViewModel.BackgroundIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"Underline\"\n                        Content=\"Underline\"\n                        GroupName=\"InactiveTabColorMode\"\n                        IsChecked=\"{x:Bind ViewModel.UnderlinedIsSelected, Mode=TwoWay}\" />\n                </StackPanel>\n\n                <ToggleSwitch\n                    x:Uid=\"ConfirmWindowClosing\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Ask before closing windows\"\n                    IsOn=\"{x:Bind ViewModel.ConfirmClosingWindows, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"ConfirmTabClosing\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Ask before closing tabs\"\n                    IsOn=\"{x:Bind ViewModel.ConfirmClosingTabs, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"IndicatorOutput\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Show new output indicator on background tabs\"\n                    IsOn=\"{x:Bind ViewModel.ShowNewOutputIndicator, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"CopiedNotification\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Text copied notification\"\n                    IsOn=\"{x:Bind ViewModel.ShowTextCopied, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"UseMoshByDefault\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Default to Mosh for SSH connections\"\n                    IsOn=\"{x:Bind ViewModel.UseMoshByDefault, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"AutoFallbackToWindowsUsername\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Use Windows username when opening SSH URLs that don't specify one\"\n                    IsOn=\"{x:Bind ViewModel.AutoFallbackToWindowsUsernameInLinks, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"RTrimCopiedLines\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Right trim copied lines\"\n                    IsOn=\"{x:Bind ViewModel.RTrimCopiedLines, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"MuteTerminalBeeps\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Mute terminal beeps\"\n                    IsOn=\"{x:Bind ViewModel.MuteTerminalBeeps, Mode=TwoWay}\" />\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <ToggleSwitch\n                        x:Uid=\"EnableLogging\"\n                        Header=\"Enable Logging\"\n                        IsOn=\"{x:Bind ViewModel.EnableLogging, Mode=TwoWay}\" />\n                    <CheckBox\n                        x:Uid=\"PrintableOutputOnly\"\n                        Content=\"Printable output only\"\n                        IsChecked=\"{x:Bind ViewModel.PrintableOutputOnly, Mode=TwoWay}\"\n                        IsEnabled=\"{x:Bind ViewModel.EnableLogging, Mode=OneWay}\" />\n                    <StackPanel Orientation=\"Horizontal\" Spacing=\"5\">\n                        <TextBox\n                            x:Uid=\"LogDirectoryPath\"\n                            MinWidth=\"250\"\n                            MaxWidth=\"250\"\n                            IsEnabled=\"{x:Bind ViewModel.EnableLogging, Mode=OneWay}\"\n                            Text=\"{x:Bind ViewModel.LogDirectoryPath, Mode=TwoWay}\" />\n                        <Button\n                            x:Uid=\"BrowseButton\"\n                            Command=\"{x:Bind ViewModel.BrowseLogDirectoryCommand}\"\n                            Content=\"Browse\"\n                            IsEnabled=\"{x:Bind ViewModel.EnableLogging, Mode=OneWay}\" />\n                    </StackPanel>\n                </StackPanel>\n\n                <ToggleSwitch\n                    x:Uid=\"UseConPty\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}\"\n                    IsOn=\"{x:Bind ViewModel.UseConPty, Mode=TwoWay}\" />\n            </StackPanel>\n        </ScrollViewer>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/GeneralSettings.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace FluentTerminal.App.Views.SettingsPages\n{\n    public sealed partial class GeneralSettings : Page\n    {\n        public GeneralPageViewModel ViewModel { get; private set; }\n\n        public GeneralSettings()\n        {\n            InitializeComponent();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is GeneralPageViewModel viewModel)\n            {\n                ViewModel = viewModel;\n                // ReSharper disable once AssignmentIsFullyDiscarded\n                _ = ViewModel.OnNavigatedToAsync();\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/KeyBindingSettings.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.SettingsPages.KeyBindingSettings\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:settings=\"using:FluentTerminal.App.ViewModels.Settings\"\n    xmlns:views=\"using:FluentTerminal.App.Views\"\n    mc:Ignorable=\"d\">\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"32\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Grid Grid.Row=\"1\" Margin=\"{StaticResource HeaderMargin}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition />\n                <ColumnDefinition />\n            </Grid.ColumnDefinitions>\n            <TextBlock\n                x:Uid=\"Keybindings\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"28\"\n                Style=\"{StaticResource TitleTextBlockStyle}\"\n                Text=\"Keybindings\" />\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                DefaultLabelPosition=\"Right\">\n                <AppBarButton\n                    x:Uid=\"AddAppBarButton\"\n                    Icon=\"Add\"\n                    Label=\"Add\">\n                    <AppBarButton.Flyout>\n                        <MenuFlyout x:Name=\"AddCommandMenu\" />\n                    </AppBarButton.Flyout>\n                </AppBarButton>\n                <AppBarButton\n                    x:Uid=\"Restore\"\n                    Command=\"{x:Bind ViewModel.RestoreDefaultsCommand}\"\n                    CommandParameter=\"keyBindings\"\n                    Icon=\"Undo\"\n                    Label=\"Restore Defaults\" />\n            </CommandBar>\n        </Grid>\n        <ScrollViewer Grid.Row=\"2\">\n            <ItemsControl Margin=\"{StaticResource ContainerMargin}\" ItemsSource=\"{x:Bind ViewModel.KeyBindings, Mode=OneWay}\">\n                <ItemsControl.ItemTemplate>\n                    <DataTemplate x:DataType=\"settings:KeyBindingsViewModel\">\n                        <views:KeyBindingsView Margin=\"{StaticResource ItemMargin}\" ViewModel=\"{x:Bind}\" />\n                    </DataTemplate>\n                </ItemsControl.ItemTemplate>\n            </ItemsControl>\n        </ScrollViewer>\n    </Grid>\n</Page>"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/KeyBindingSettings.xaml.cs",
    "content": "﻿using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Settings;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace FluentTerminal.App.Views.SettingsPages\n{\n    public sealed partial class KeyBindingSettings : Page\n    {\n        public KeyBindingsPageViewModel ViewModel { get; private set; }\n\n        public KeyBindingSettings()\n        {\n            InitializeComponent();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is KeyBindingsPageViewModel viewModel)\n            {\n                ViewModel = viewModel;\n\n                // Add the commands corresponding to all of the application's static commands\n                foreach (var value in Enum.GetValues(typeof(Command)))\n                {\n                    Command command = (Command)value;\n                    AddCommandMenu.Items.Add(new MenuFlyoutItem\n                    {\n                        Text = I18N.Translate($\"{nameof(Command)}.{command}\"),\n                        Command = ViewModel.AddCommand,\n                        CommandParameter = command.ToString()\n                    });\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/MouseSettings.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.SettingsPages.MouseSettings\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\"\n    mc:Ignorable=\"d\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"32\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Grid Grid.Row=\"1\" Margin=\"{StaticResource HeaderMargin}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition />\n                <ColumnDefinition />\n            </Grid.ColumnDefinitions>\n            <TextBlock\n                x:Uid=\"Mouse\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"28\"\n                Style=\"{StaticResource TitleTextBlockStyle}\"\n                Text=\"Mouse\" />\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                DefaultLabelPosition=\"Right\">\n                <AppBarButton\n                    x:Uid=\"Restore\"\n                    Command=\"{x:Bind ViewModel.RestoreDefaultsCommand}\"\n                    Icon=\"Undo\"\n                    Label=\"Restore Defaults\" />\n            </CommandBar>\n        </Grid>\n        <ScrollViewer Grid.Row=\"2\">\n            <StackPanel Margin=\"{StaticResource ContainerMargin}\">\n                <ToggleSwitch\n                    x:Uid=\"CopyOnSelect\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Copy on select\"\n                    IsOn=\"{x:Bind ViewModel.CopyOnSelect, Mode=TwoWay}\" />\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"MiddleButtonAction\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Middle button action\" />\n                    <RadioButton\n                        x:Uid=\"MouseNothing\"\n                        Content=\"Nothing\"\n                        GroupName=\"MiddleButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseMiddleClickNoneIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"MouseContextMenu\"\n                        Content=\"Context menu\"\n                        GroupName=\"MiddleButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseMiddleClickContextMenuIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"MousePaste\"\n                        Content=\"Paste\"\n                        GroupName=\"MiddleButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseMiddleClickPasteIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"MouseCopySelectionOrPaste\"\n                        Content=\"Copy selection or paste\"\n                        GroupName=\"MiddleButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseMiddleClickCopySelectionOrPasteIsSelected, Mode=TwoWay}\" />\n                </StackPanel>\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"RightButtonAction\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Right button action\" />\n                    <RadioButton\n                        x:Uid=\"MouseNothing\"\n                        Content=\"Nothing\"\n                        GroupName=\"RightButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseRightClickNoneIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"MouseContextMenu\"\n                        Content=\"Context menu\"\n                        GroupName=\"RightButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseRightClickContextMenuIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"MousePaste\"\n                        Content=\"Paste\"\n                        GroupName=\"RightButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseRightClickPasteIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"MouseCopySelectionOrPaste\"\n                        Content=\"Copy selection or paste\"\n                        GroupName=\"RightButton\"\n                        IsChecked=\"{x:Bind ViewModel.MouseRightClickCopySelectionOrPasteIsSelected, Mode=TwoWay}\" />\n                </StackPanel>\n            </StackPanel>\n        </ScrollViewer>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/MouseSettings.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace FluentTerminal.App.Views.SettingsPages\n{\n    public sealed partial class MouseSettings : Page\n    {\n        public MouseSettings()\n        {\n            this.InitializeComponent();\n        }\n\n        public MousePageViewModel ViewModel { get; private set; }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is MousePageViewModel viewModel)\n            {\n                ViewModel = viewModel;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/ShellProfileSettings.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.SettingsPages.ShellProfileSettings\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"using:Microsoft.Toolkit.Uwp.UI.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:enums=\"using:FluentTerminal.Models.Enums\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:viewmodels=\"using:FluentTerminal.App.ViewModels\"\n    xmlns:views=\"using:FluentTerminal.App.Views\"\n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <views:TemplateSelectors />\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Page.Resources>\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"160\" />\n            <ColumnDefinition Width=\"*\" />\n        </Grid.ColumnDefinitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"32\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Border\n            Grid.RowSpan=\"3\"\n            Grid.Column=\"0\"\n            Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\" />\n        <Grid\n            Grid.Row=\"1\"\n            Grid.ColumnSpan=\"2\"\n            Margin=\"{StaticResource HeaderMargin}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"160\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n            <TextBlock\n                x:Uid=\"Profiles\"\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"28\"\n                Style=\"{StaticResource TitleTextBlockStyle}\"\n                Text=\"Profiles\" />\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                Background=\"Transparent\"\n                DefaultLabelPosition=\"Right\"\n                Visibility=\"{x:Bind ViewModel.SelectedShellProfile.InEditMode, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\">\n                <AppBarButton\n                    x:Uid=\"SetDefaultAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedShellProfile.SetDefaultCommand, Mode=OneWay}\"\n                    Icon=\"Accept\"\n                    IsEnabled=\"{x:Bind ViewModel.SelectedShellProfile.IsDefault, Mode=OneWay, Converter={StaticResource NegateConverter}}\"\n                    Label=\"Set Default\" />\n                <AppBarButton\n                    x:Uid=\"CloneAppBarButton\"\n                    Command=\"{x:Bind ViewModel.CloneCommand, Mode=OneWay}\"\n                    CommandParameter=\"{x:Bind ViewModel.SelectedShellProfile, Mode=OneWay}\"\n                    Icon=\"Copy\"\n                    Label=\"Clone\" />\n                <AppBarButton\n                    x:Uid=\"EditAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedShellProfile.EditCommand, Mode=OneWay}\"\n                    Icon=\"Edit\"\n                    Label=\"Edit\" />\n                <AppBarButton\n                    x:Uid=\"DeleteAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedShellProfile.DeleteCommand, Mode=OneWay}\"\n                    Icon=\"Delete\"\n                    Label=\"Delete\"\n                    Visibility=\"{x:Bind ViewModel.SelectedShellProfile.ProfileVm.PreInstalled, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\" />\n                <AppBarButton\n                    x:Uid=\"Restore\"\n                    Command=\"{x:Bind ViewModel.SelectedShellProfile.RestoreDefaultsCommand, Mode=OneWay}\"\n                    Icon=\"Undo\"\n                    Label=\"Restore Defaults\"\n                    Visibility=\"{x:Bind ViewModel.SelectedShellProfile.ProfileVm.PreInstalled, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n            </CommandBar>\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                Background=\"Transparent\"\n                DefaultLabelPosition=\"Right\"\n                Visibility=\"{x:Bind ViewModel.SelectedShellProfile.InEditMode, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                <AppBarButton\n                    x:Uid=\"SaveAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedShellProfile.SaveChangesCommand, Mode=OneWay}\"\n                    Icon=\"Save\"\n                    Label=\"Save\" />\n                <AppBarButton\n                    x:Uid=\"CancelAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedShellProfile.CancelEditCommand, Mode=OneWay}\"\n                    Icon=\"Cancel\"\n                    Label=\"Cancel\" />\n            </CommandBar>\n        </Grid>\n        <ScrollViewer\n            Grid.Row=\"2\"\n            Grid.Column=\"0\"\n            VerticalScrollBarVisibility=\"Auto\">\n            <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                <ListView ItemsSource=\"{x:Bind ViewModel.ShellProfiles}\" SelectedItem=\"{x:Bind ViewModel.SelectedShellProfile, Mode=TwoWay}\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate x:DataType=\"viewmodels:ShellProfileViewModel\">\n                            <Grid>\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width=\"*\" />\n                                    <ColumnDefinition Width=\"Auto\" />\n                                </Grid.ColumnDefinitions>\n                                <TextBlock Grid.Column=\"0\" Text=\"{x:Bind Name, Mode=OneWay}\" />\n                                <Viewbox\n                                    Grid.Column=\"1\"\n                                    Width=\"16\"\n                                    Height=\"16\"\n                                    HorizontalAlignment=\"Right\">\n                                    <SymbolIcon Symbol=\"Accept\" Visibility=\"{x:Bind IsDefault, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n                                </Viewbox>\n                            </Grid>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                    <ListView.ItemContainerStyle>\n                        <Style TargetType=\"ListViewItem\">\n                            <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                        </Style>\n                    </ListView.ItemContainerStyle>\n                </ListView>\n                <Button\n                    Height=\"48\"\n                    Margin=\"0,12,0,0\"\n                    HorizontalAlignment=\"Stretch\"\n                    HorizontalContentAlignment=\"Left\"\n                    Background=\"Transparent\"\n                    Command=\"{x:Bind ViewModel.CreateShellProfileCommand}\"\n                    Style=\"{StaticResource ButtonRevealStyle}\">\n                    <Button.Content>\n                        <StackPanel Orientation=\"Horizontal\">\n                            <Viewbox\n                                Width=\"12\"\n                                Height=\"12\"\n                                Margin=\"0,0,6,0\">\n                                <SymbolIcon Symbol=\"Add\" />\n                            </Viewbox>\n                            <TextBlock\n                                x:Uid=\"CreateProfile\"\n                                Style=\"{StaticResource CaptionTextBlockStyle}\"\n                                Text=\"Create new\" />\n                        </StackPanel>\n                    </Button.Content>\n                </Button>\n            </StackPanel>\n        </ScrollViewer>\n        <ScrollViewer\n            Grid.Row=\"2\"\n            Grid.Column=\"1\"\n            HorizontalAlignment=\"Stretch\"\n            VerticalScrollBarVisibility=\"Auto\">\n            <ContentControl\n                Margin=\"{StaticResource ContainerMargin}\"\n                HorizontalContentAlignment=\"Stretch\"\n                Content=\"{x:Bind ViewModel.SelectedShellProfile, Mode=OneWay}\">\n                <ContentControl.ContentTemplate>\n                    <DataTemplate x:DataType=\"viewmodels:ShellProfileViewModel\">\n                        <Grid HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\">\n                            <StackPanel Visibility=\"{x:Bind InEditMode, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}\">\n                                <TextBox\n                                    x:Uid=\"ProfileName\"\n                                    Width=\"300\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalAlignment=\"Left\"\n                                    Header=\"Name\"\n                                    IsEnabled=\"{x:Bind ProfileVm.PreInstalled, Converter={StaticResource NegateConverter}, Mode=OneWay}\"\n                                    IsSpellCheckEnabled=\"False\"\n                                    Text=\"{x:Bind Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n\n                                <StackPanel Margin=\"{StaticResource ItemMargin}\" Orientation=\"Horizontal\">\n                                    <TextBox\n                                        x:Uid=\"ShellLocation\"\n                                        Width=\"300\"\n                                        Header=\"Shell executable location\"\n                                        IsEnabled=\"{x:Bind ProfileVm.PreInstalled, Converter={StaticResource NegateConverter}, Mode=OneWay}\"\n                                        IsSpellCheckEnabled=\"False\"\n                                        Text=\"{x:Bind ProfileVm.Location, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                                    <Button\n                                        Margin=\"6,0,0,0\"\n                                        VerticalAlignment=\"Bottom\"\n                                        Command=\"{x:Bind ProfileVm.BrowseForCustomShellCommand}\"\n                                        Content=\"...\"\n                                        IsEnabled=\"{x:Bind ProfileVm.PreInstalled, Converter={StaticResource NegateConverter}, Mode=OneWay}\"\n                                        Style=\"{StaticResource ButtonRevealStyle}\" />\n                                </StackPanel>\n\n                                <StackPanel Margin=\"{StaticResource ItemMargin}\" Orientation=\"Horizontal\">\n                                    <TextBox\n                                        x:Uid=\"WorkingDir\"\n                                        Width=\"300\"\n                                        Header=\"Working directory\"\n                                        IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        IsSpellCheckEnabled=\"False\"\n                                        Text=\"{x:Bind ProfileVm.WorkingDirectory, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n                                    <Button\n                                        Margin=\"6,0,0,0\"\n                                        VerticalAlignment=\"Bottom\"\n                                        Command=\"{x:Bind ProfileVm.BrowseForWorkingDirectoryCommand}\"\n                                        Content=\"...\"\n                                        Style=\"{StaticResource ButtonRevealStyle}\" />\n                                </StackPanel>\n\n                                <TextBox\n                                    x:Uid=\"Arguments\"\n                                    Width=\"300\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalAlignment=\"Left\"\n                                    Header=\"Arguments\"\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                    IsSpellCheckEnabled=\"False\"\n                                    Text=\"{x:Bind ProfileVm.Arguments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n\n                                <ComboBox\n                                    x:Uid=\"TabColor\"\n                                    Width=\"150\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    Header=\"Tab color\"\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                    ItemTemplateSelector=\"{StaticResource TabThemeTemplateSelector}\"\n                                    ItemsSource=\"{x:Bind ProfileVm.TabThemes, Mode=OneWay}\"\n                                    SelectedItem=\"{Binding ProfileVm.SelectedTabTheme, Mode=TwoWay}\" />\n\n                                <ComboBox\n                                    x:Uid=\"ProfileTheme\"\n                                    Width=\"150\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    Header=\"Theme\"\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                    ItemTemplateSelector=\"{StaticResource TerminalThemeTemplateSelector}\"\n                                    ItemsSource=\"{x:Bind ProfileVm.TerminalThemes, Mode=OneWay}\"\n                                    SelectedItem=\"{Binding ProfileVm.SelectedTerminalTheme, Mode=TwoWay}\" />\n\n                                <ToggleSwitch\n                                    x:Uid=\"UseConPty\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}\"\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                    IsOn=\"{x:Bind ProfileVm.UseConPty, Mode=TwoWay}\" />\n\n                                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                                    <TextBlock\n                                        x:Uid=\"EnvironmentVariables\"\n                                        Margin=\"0,0,6,0\"\n                                        VerticalAlignment=\"Center\" />\n                                    <views:EnvironmentVariablesView EnvironmentVariables=\"{x:Bind EnvironmentVariables, Mode=OneWay}\" />\n                                </StackPanel>\n\n                                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                                    <TextBlock\n                                        x:Uid=\"KeyboardShortcut1\"\n                                        Margin=\"0,0,6,0\"\n                                        VerticalAlignment=\"Center\"\n                                        Text=\"Keyboard shortcut\" />\n                                    <HyperlinkButton\n                                        x:Uid=\"Add\"\n                                        Command=\"{x:Bind AddKeyboardShortcutCommand}\"\n                                        Content=\"Add\" />\n                                    <views:KeyBindingsView ShowCommandName=\"False\" ViewModel=\"{x:Bind KeyBindings}\" />\n                                </StackPanel>\n                            </StackPanel>\n                            <StackPanel Visibility=\"{x:Bind InEditMode, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\">\n                                <TextBlock\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    Style=\"{StaticResource SubtitleTextBlockStyle}\"\n                                    Text=\"{x:Bind Name, Mode=OneWay}\" />\n\n                                <controls:HeaderedContentControl\n                                    x:Uid=\"ShellLocation\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    Header=\"Shell executable location\"\n                                    Content=\"{x:Bind ProfileVm.Location, Mode=OneWay}\" />\n\n                                <controls:HeaderedContentControl\n                                    x:Uid=\"WorkingDir\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalContentAlignment=\"Stretch\"\n                                    Header=\"Working directory\">\n                                    <ContentControl\n                                        Content=\"{x:Bind ProfileVm.WorkingDirectory, Mode=OneWay}\"\n                                        ContentTemplateSelector=\"{StaticResource NoValueTemplateSelector}\"\n                                        FontSize=\"18\"\n                                        FontWeight=\"Light\" />\n                                </controls:HeaderedContentControl>\n\n                                <controls:HeaderedContentControl\n                                    x:Uid=\"Arguments\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalContentAlignment=\"Stretch\"\n                                    Header=\"Arguments\">\n                                    <ContentControl\n                                        Content=\"{x:Bind ProfileVm.Arguments, Mode=OneWay}\"\n                                        ContentTemplateSelector=\"{StaticResource NoValueTemplateSelector}\"\n                                        FontSize=\"18\"\n                                        FontWeight=\"Light\" />\n                                </controls:HeaderedContentControl>\n\n                                <controls:HeaderedContentControl\n                                    x:Uid=\"TabColor\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalContentAlignment=\"Stretch\"\n                                    Header=\"Tab color\">\n                                    <ContentControl\n                                        Margin=\"0,6,0,0\"\n                                        Content=\"{x:Bind ProfileVm.SelectedTabTheme, Mode=OneWay}\"\n                                        ContentTemplateSelector=\"{StaticResource TabThemeTemplateSelector}\"\n                                        FontSize=\"18\"\n                                        FontWeight=\"Light\" />\n                                </controls:HeaderedContentControl>\n\n                                <controls:HeaderedContentControl\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalContentAlignment=\"Stretch\"\n                                    Header=\"Theme\">\n                                    <ContentControl\n                                        Margin=\"0,6,0,0\"\n                                        Content=\"{x:Bind ProfileVm.SelectedTerminalTheme, Mode=OneWay}\"\n                                        ContentTemplateSelector=\"{StaticResource TerminalThemeTemplateSelector}\"\n                                        FontSize=\"18\"\n                                        FontWeight=\"Light\" />\n                                </controls:HeaderedContentControl>\n\n                                <controls:HeaderedContentControl\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalContentAlignment=\"Stretch\"\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}\">\n                                    <ContentControl\n                                        Margin=\"0,6,0,0\"\n                                        Content=\"{x:Bind ProfileVm.UseConPty, Mode=OneWay}\"\n                                        ContentTemplateSelector=\"{StaticResource UseConPtyTemplateSelector}\"\n                                        FontSize=\"18\"\n                                        FontWeight=\"Light\" />\n                                </controls:HeaderedContentControl>\n\n                                <controls:HeaderedContentControl\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalContentAlignment=\"Stretch\"\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=EnvironmentVariables.Text}\">\n                                    <ItemsControl Margin=\"0,6,0,0\" ItemsSource=\"{x:Bind EnvironmentVariables}\">\n                                        <ItemsControl.ItemTemplate>\n                                            <DataTemplate x:DataType=\"viewmodels:EnvironmentVariableViewModel\">\n                                                <Grid>\n                                                    <Grid.ColumnDefinitions>\n                                                        <ColumnDefinition Width=\"Auto\" />\n                                                        <ColumnDefinition Width=\"*\" />\n                                                    </Grid.ColumnDefinitions>\n                                                    <TextBlock\n                                                        Grid.Column=\"0\"\n                                                        MinWidth=\"100\"\n                                                        Margin=\"0,0,6,0\"\n                                                        Text=\"{x:Bind Name, Mode=OneWay}\" />\n                                                    <TextBlock Grid.Column=\"1\" Text=\"{x:Bind Value, Mode=OneWay}\" />\n                                                </Grid>\n                                            </DataTemplate>\n                                        </ItemsControl.ItemTemplate>\n                                    </ItemsControl>\n                                </controls:HeaderedContentControl>\n\n                                <controls:HeaderedContentControl\n                                    x:Uid=\"KeyboardShortcut\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    HorizontalContentAlignment=\"Stretch\"\n                                    Header=\"Keyboard shortcut\">\n                                    <ContentControl\n                                        Content=\"{x:Bind KeyBindings, Mode=OneWay}\"\n                                        ContentTemplateSelector=\"{StaticResource TerminalKeybindTemplateSelector}\"\n                                        FontSize=\"18\"\n                                        FontWeight=\"Light\" />\n                                </controls:HeaderedContentControl>\n                            </StackPanel>\n                        </Grid>\n                    </DataTemplate>\n                </ContentControl.ContentTemplate>\n            </ContentControl>\n        </ScrollViewer>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/ShellProfileSettings.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace FluentTerminal.App.Views.SettingsPages\n{\n    public sealed partial class ShellProfileSettings : Page\n    {\n        public ProfilesPageViewModel ViewModel { get; private set; }\n\n        public ShellProfileSettings()\n        {\n            InitializeComponent();\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is ProfilesPageViewModel viewModel)\n            {\n                ViewModel = viewModel;\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/SshProfileSettings.xaml",
    "content": "﻿<Page\r\n    x:Class=\"FluentTerminal.App.Views.SettingsPages.SshProfileSettings\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:controls=\"using:Microsoft.Toolkit.Uwp.UI.Controls\"\r\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n    xmlns:enums=\"using:FluentTerminal.Models.Enums\"\r\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n    xmlns:profiles=\"using:FluentTerminal.App.ViewModels.Profiles\"\r\n    xmlns:viewmodels=\"using:FluentTerminal.App.ViewModels\"\r\n    xmlns:views=\"using:FluentTerminal.App.Views\"\r\n    mc:Ignorable=\"d\">\r\n\r\n    <Page.Resources>\r\n        <ResourceDictionary>\r\n            <ResourceDictionary.MergedDictionaries>\r\n                <views:TemplateSelectors />\r\n            </ResourceDictionary.MergedDictionaries>\r\n        </ResourceDictionary>\r\n    </Page.Resources>\r\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\r\n        <Grid.ColumnDefinitions>\r\n            <ColumnDefinition Width=\"185\" />\r\n            <ColumnDefinition Width=\"*\" />\r\n        </Grid.ColumnDefinitions>\r\n        <Grid.RowDefinitions>\r\n            <RowDefinition Height=\"32\" />\r\n            <RowDefinition Height=\"Auto\" />\r\n            <RowDefinition Height=\"*\" />\r\n        </Grid.RowDefinitions>\r\n        <Border\r\n            Grid.RowSpan=\"3\"\r\n            Grid.Column=\"0\"\r\n            Background=\"{ThemeResource SystemControlBackgroundBaseLowBrush}\" />\r\n        <Grid\r\n            Grid.Row=\"1\"\r\n            Grid.ColumnSpan=\"2\"\r\n            Margin=\"{StaticResource HeaderMargin}\">\r\n            <Grid.ColumnDefinitions>\r\n                <ColumnDefinition Width=\"185\" />\r\n                <ColumnDefinition Width=\"*\" />\r\n            </Grid.ColumnDefinitions>\r\n            <TextBlock\r\n                VerticalAlignment=\"Center\"\r\n                FontSize=\"28\"\r\n                Style=\"{StaticResource TitleTextBlockStyle}\"\r\n                Text=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=Setting_SShProfiles.Content}\" />\r\n            <CommandBar\r\n                Grid.Column=\"1\"\r\n                HorizontalAlignment=\"Right\"\r\n                VerticalAlignment=\"Top\"\r\n                Background=\"Transparent\"\r\n                DefaultLabelPosition=\"Right\"\r\n                Visibility=\"{x:Bind ViewModel.SelectedSshProfile.InEditMode, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\">\r\n                <AppBarButton\r\n                    x:Uid=\"CloneAppBarButton\"\r\n                    Command=\"{x:Bind ViewModel.CloneCommand, Mode=OneWay}\"\r\n                    CommandParameter=\"{x:Bind ViewModel.SelectedSshProfile, Mode=OneWay}\"\r\n                    Icon=\"Copy\"\r\n                    Label=\"Clone\" />\r\n                <AppBarButton\r\n                    x:Uid=\"EditAppBarButton\"\r\n                    Command=\"{x:Bind ViewModel.SelectedSshProfile.EditCommand, Mode=OneWay}\"\r\n                    Icon=\"Edit\"\r\n                    Label=\"Edit\" />\r\n                <AppBarButton\r\n                    x:Uid=\"DeleteAppBarButton\"\r\n                    Command=\"{x:Bind ViewModel.SelectedSshProfile.DeleteCommand, Mode=OneWay}\"\r\n                    Icon=\"Delete\"\r\n                    Label=\"Delete\" />\r\n\r\n            </CommandBar>\r\n            <CommandBar\r\n                Grid.Column=\"1\"\r\n                HorizontalAlignment=\"Right\"\r\n                VerticalAlignment=\"Top\"\r\n                Background=\"Transparent\"\r\n                DefaultLabelPosition=\"Right\"\r\n                Visibility=\"{x:Bind ViewModel.SelectedSshProfile.InEditMode, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\r\n                <AppBarButton\r\n                    x:Uid=\"SaveAppBarButton\"\r\n                    Command=\"{x:Bind ViewModel.SelectedSshProfile.SaveChangesCommand, Mode=OneWay}\"\r\n                    Icon=\"Save\"\r\n                    Label=\"Save\" />\r\n                <AppBarButton\r\n                    x:Uid=\"CancelAppBarButton\"\r\n                    Command=\"{x:Bind ViewModel.SelectedSshProfile.CancelEditCommand, Mode=OneWay}\"\r\n                    Icon=\"Cancel\"\r\n                    Label=\"Cancel\" />\r\n            </CommandBar>\r\n        </Grid>\r\n        <ScrollViewer\r\n            Grid.Row=\"2\"\r\n            Grid.Column=\"0\"\r\n            VerticalScrollBarVisibility=\"Auto\">\r\n            <StackPanel Margin=\"{StaticResource ItemMargin}\">\r\n                <ListView ItemsSource=\"{x:Bind ViewModel.SshProfiles}\" SelectedItem=\"{x:Bind ViewModel.SelectedSshProfile, Mode=TwoWay}\">\r\n                    <ListView.ItemTemplate>\r\n                        <DataTemplate x:DataType=\"viewmodels:SshProfileViewModel\">\r\n                            <Grid>\r\n                                <Grid.ColumnDefinitions>\r\n                                    <ColumnDefinition Width=\"*\" />\r\n                                    <ColumnDefinition Width=\"Auto\" />\r\n                                </Grid.ColumnDefinitions>\r\n                                <TextBlock Grid.Column=\"0\" Text=\"{x:Bind Name, Mode=OneWay}\" />\r\n                            </Grid>\r\n                        </DataTemplate>\r\n                    </ListView.ItemTemplate>\r\n                    <ListView.ItemContainerStyle>\r\n                        <Style TargetType=\"ListViewItem\">\r\n                            <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\r\n                        </Style>\r\n                    </ListView.ItemContainerStyle>\r\n                </ListView>\r\n                <Button\r\n                    Height=\"48\"\r\n                    Margin=\"0,12,0,0\"\r\n                    HorizontalAlignment=\"Stretch\"\r\n                    HorizontalContentAlignment=\"Left\"\r\n                    Background=\"Transparent\"\r\n                    Command=\"{x:Bind ViewModel.CreateSshProfileCommand}\"\r\n                    Style=\"{StaticResource ButtonRevealStyle}\">\r\n                    <Button.Content>\r\n                        <StackPanel Orientation=\"Horizontal\">\r\n                            <Viewbox\r\n                                Width=\"12\"\r\n                                Height=\"12\"\r\n                                Margin=\"0,0,6,0\">\r\n                                <SymbolIcon Symbol=\"Add\" />\r\n                            </Viewbox>\r\n                            <TextBlock\r\n                                x:Uid=\"CreateProfile\"\r\n                                Style=\"{StaticResource CaptionTextBlockStyle}\"\r\n                                Text=\"Create new\" />\r\n                        </StackPanel>\r\n                    </Button.Content>\r\n                </Button>\r\n            </StackPanel>\r\n        </ScrollViewer>\r\n        <ScrollViewer\r\n            Grid.Row=\"2\"\r\n            Grid.Column=\"1\"\r\n            HorizontalAlignment=\"Stretch\"\r\n            VerticalScrollBarVisibility=\"Auto\">\r\n            <ContentControl\r\n                Margin=\"{StaticResource ContainerMargin}\"\r\n                HorizontalContentAlignment=\"Stretch\"\r\n                Content=\"{x:Bind ViewModel.SelectedSshProfile, Mode=OneWay}\">\r\n                <ContentControl.ContentTemplate>\r\n                    <DataTemplate x:DataType=\"viewmodels:SshProfileViewModel\">\r\n                        <Grid HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\">\r\n                            <StackPanel Visibility=\"{x:Bind InEditMode, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}\">\r\n                                <TextBox\r\n                                    x:Uid=\"ProfileName\"\r\n                                    Width=\"300\"\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalAlignment=\"Left\"\r\n                                    Header=\"Name\"\r\n                                    IsSpellCheckEnabled=\"False\"\r\n                                    Text=\"{x:Bind Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n\r\n                                <Grid\r\n                                    Width=\"340\"\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalAlignment=\"Left\">\r\n                                    <Grid.ColumnDefinitions>\r\n                                        <ColumnDefinition Width=\"90\" />\r\n                                        <ColumnDefinition Width=\"20\" />\r\n                                        <ColumnDefinition Width=\"140\" />\r\n                                        <ColumnDefinition Width=\"8\" />\r\n                                        <ColumnDefinition Width=\"*\" />\r\n                                    </Grid.ColumnDefinitions>\r\n\r\n                                    <TextBox\r\n                                        x:Uid=\"Username\"\r\n                                        HorizontalAlignment=\"Stretch\"\r\n                                        Header=\"Username\"\r\n                                        IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                        IsSpellCheckEnabled=\"False\"\r\n                                        Text=\"{x:Bind ProfileVm.Username, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n\r\n                                    <TextBlock\r\n                                        Grid.Column=\"1\"\r\n                                        Margin=\"0,0,0,4\"\r\n                                        HorizontalAlignment=\"Center\"\r\n                                        VerticalAlignment=\"Bottom\"\r\n                                        FontSize=\"19\"\r\n                                        Text=\"@\" />\r\n\r\n                                    <TextBox\r\n                                        x:Uid=\"Host\"\r\n                                        Grid.Column=\"2\"\r\n                                        HorizontalAlignment=\"Stretch\"\r\n                                        Header=\"Host\"\r\n                                        IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                        IsSpellCheckEnabled=\"False\"\r\n                                        Text=\"{x:Bind ProfileVm.Host, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n\r\n                                    <TextBlock\r\n                                        Grid.Column=\"3\"\r\n                                        Margin=\"0,0,0,4\"\r\n                                        HorizontalAlignment=\"Center\"\r\n                                        VerticalAlignment=\"Bottom\"\r\n                                        FontSize=\"22\"\r\n                                        Text=\":\" />\r\n\r\n                                    <TextBox\r\n                                        Grid.Column=\"4\"\r\n                                        Margin=\"0,0,4,0\"\r\n                                        HorizontalAlignment=\"Stretch\"\r\n                                        Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=PortTextBox.PlaceholderText}\"\r\n                                        IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                        IsSpellCheckEnabled=\"False\"\r\n                                        Text=\"{x:Bind ProfileVm.SshPort, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n                                </Grid>\r\n\r\n                                <StackPanel Margin=\"{StaticResource ItemMargin}\" Orientation=\"Horizontal\">\r\n                                    <TextBox\r\n                                        Width=\"300\"\r\n                                        Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=IdentityFileTextBox.PlaceholderText}\"\r\n                                        IsSpellCheckEnabled=\"False\"\r\n                                        Text=\"{x:Bind ProfileVm.IdentityFile, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n                                    <Button\r\n                                        Margin=\"6,0,0,0\"\r\n                                        VerticalAlignment=\"Bottom\"\r\n                                        Command=\"{x:Bind ProfileVm.BrowseForIdentityFileCommand}\"\r\n                                        Content=\"...\"\r\n                                        Style=\"{StaticResource ButtonRevealStyle}\" />\r\n                                </StackPanel>\r\n\r\n                                <ToggleSwitch\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseMoshCheckBox.Content}\"\r\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                    IsOn=\"{x:Bind ProfileVm.UseMosh, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n\r\n                                <TextBlock\r\n                                    x:Uid=\"MoshPortRange\"\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    Text=\"Mosh port range\"\r\n                                    Visibility=\"{x:Bind ProfileVm.UseMosh, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}\" />\r\n\r\n                                <StackPanel Orientation=\"Horizontal\" Visibility=\"{x:Bind ProfileVm.UseMosh, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}\">\r\n                                    <TextBox\r\n                                        x:Uid=\"MoshPortFrom\"\r\n                                        Width=\"120\"\r\n                                        HorizontalAlignment=\"Left\"\r\n                                        Header=\"Mosh Port From\"\r\n                                        IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                        IsSpellCheckEnabled=\"False\"\r\n                                        Text=\"{x:Bind ProfileVm.MoshPortFrom, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n                                    <TextBlock\r\n                                        Width=\"8\"\r\n                                        Margin=\"3,26,0,0\"\r\n                                        HorizontalAlignment=\"Center\"\r\n                                        FontSize=\"22\"\r\n                                        Text=\":\" />\r\n                                    <TextBox\r\n                                        x:Uid=\"MoshPortTo\"\r\n                                        Width=\"120\"\r\n                                        HorizontalAlignment=\"Left\"\r\n                                        Header=\"Mosh Port To\"\r\n                                        IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                        IsSpellCheckEnabled=\"False\"\r\n                                        Text=\"{x:Bind ProfileVm.MoshPortTo, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\r\n                                </StackPanel>\r\n\r\n                                <ComboBox\r\n                                    x:Uid=\"TabColor\"\r\n                                    Width=\"150\"\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    Header=\"Tab color\"\r\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                    ItemTemplateSelector=\"{StaticResource TabThemeTemplateSelector}\"\r\n                                    ItemsSource=\"{x:Bind ProfileVm.TabThemes, Mode=OneWay}\"\r\n                                    SelectedItem=\"{Binding ProfileVm.SelectedTabTheme, Mode=TwoWay}\" />\r\n\r\n                                <ComboBox\r\n                                    x:Uid=\"ProfileTheme\"\r\n                                    Width=\"150\"\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    Header=\"Theme\"\r\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                    ItemTemplateSelector=\"{StaticResource TerminalThemeTemplateSelector}\"\r\n                                    ItemsSource=\"{x:Bind ProfileVm.TerminalThemes, Mode=OneWay}\"\r\n                                    SelectedItem=\"{Binding ProfileVm.SelectedTerminalTheme, Mode=TwoWay}\" />\r\n\r\n                                <ToggleSwitch\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}\"\r\n                                    IsEnabled=\"{x:Bind InEditMode, Mode=OneWay}\"\r\n                                    IsOn=\"{x:Bind ProfileVm.UseConPty, Mode=TwoWay}\" />\r\n\r\n                                <StackPanel Margin=\"{StaticResource ItemMargin}\">\r\n                                    <TextBlock\r\n                                        x:Uid=\"EnvironmentVariables\"\r\n                                        Margin=\"0,0,6,0\"\r\n                                        VerticalAlignment=\"Center\" />\r\n                                    <views:EnvironmentVariablesView EnvironmentVariables=\"{x:Bind EnvironmentVariables, Mode=OneWay}\" />\r\n                                </StackPanel>\r\n\r\n                                <StackPanel Margin=\"{StaticResource ItemMargin}\">\r\n                                    <TextBlock\r\n                                        x:Uid=\"KeyboardShortcut1\"\r\n                                        Margin=\"0,0,6,0\"\r\n                                        VerticalAlignment=\"Center\"\r\n                                        Text=\"Keyboard shortcut\" />\r\n                                    <HyperlinkButton\r\n                                        x:Uid=\"Add\"\r\n                                        Command=\"{x:Bind AddKeyboardShortcutCommand}\"\r\n                                        Content=\"Add\" />\r\n                                    <views:KeyBindingsView ShowCommandName=\"False\" ViewModel=\"{x:Bind KeyBindings}\" />\r\n                                </StackPanel>\r\n                            </StackPanel>\r\n\r\n                            <StackPanel Visibility=\"{Binding InEditMode, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\">\r\n\r\n                                <TextBlock\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                    Text=\"{x:Bind Name, Mode=OneWay}\" />\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    DataContext=\"{Binding ProfileVm}\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=SshInfoDialog.Title}\">\r\n                                    <ContentControl>\r\n                                        <ContentControl.ContentTemplate>\r\n                                            <DataTemplate x:DataType=\"profiles:SshConnectViewModel\">\r\n                                                <StackPanel Orientation=\"Horizontal\">\r\n                                                    <TextBlock\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\"{Binding Username, Mode=OneWay}\" />\r\n                                                    <TextBlock\r\n                                                        Margin=\"0,0,4,0\"\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\"@\"\r\n                                                        TextAlignment=\"Center\" />\r\n                                                    <TextBlock\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\"{Binding Host, Mode=OneWay}\" />\r\n                                                    <TextBlock\r\n                                                        Margin=\"0,0,4,0\"\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\":\"\r\n                                                        TextAlignment=\"Center\" />\r\n                                                    <TextBlock\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\"{Binding SshPort, Mode=OneWay}\" />\r\n                                                </StackPanel>\r\n                                            </DataTemplate>\r\n                                        </ContentControl.ContentTemplate>\r\n                                    </ContentControl>\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    DataContext=\"{Binding ProfileVm}\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=IdentityFileTextBox.PlaceholderText}\">\r\n                                    <ContentControl\r\n                                        Content=\"{Binding IdentityFile, Mode=OneWay}\"\r\n                                        ContentTemplateSelector=\"{StaticResource NoValueTemplateSelector}\"\r\n                                        FontSize=\"18\"\r\n                                        FontWeight=\"Light\" />\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    DataContext=\"{Binding ProfileVm}\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseMoshCheckBox.Content}\">\r\n                                    <ContentControl\r\n                                        Margin=\"0,6,0,0\"\r\n                                        Content=\"{Binding UseMosh, Mode=OneWay}\"\r\n                                        ContentTemplateSelector=\"{StaticResource UseConPtyTemplateSelector}\"\r\n                                        FontSize=\"18\"\r\n                                        FontWeight=\"Light\" />\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    DataContext=\"{Binding ProfileVm}\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=MoshPortRange.Text}\"\r\n                                    Visibility=\"{Binding UseMosh, Converter={StaticResource TrueToVisibleConverter}}\">\r\n                                    <ContentControl>\r\n                                        <ContentControl.ContentTemplate>\r\n                                            <DataTemplate x:DataType=\"profiles:SshConnectViewModel\">\r\n                                                <StackPanel Orientation=\"Horizontal\">\r\n                                                    <TextBlock\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\"{Binding MoshPortFrom, Mode=OneWay}\" />\r\n                                                    <TextBlock\r\n                                                        Margin=\"0,0,3,0\"\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\":\"\r\n                                                        TextAlignment=\"Center\" />\r\n                                                    <TextBlock\r\n                                                        FontSize=\"18\"\r\n                                                        FontWeight=\"Light\"\r\n                                                        Style=\"{StaticResource SubtitleTextBlockStyle}\"\r\n                                                        Text=\"{Binding MoshPortTo, Mode=OneWay}\" />\r\n                                                </StackPanel>\r\n                                            </DataTemplate>\r\n                                        </ContentControl.ContentTemplate>\r\n                                    </ContentControl>\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    x:Uid=\"TabColor\"\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    DataContext=\"{Binding ProfileVm}\"\r\n                                    Header=\"Tab color\">\r\n                                    <ContentControl\r\n                                        Margin=\"0,6,0,0\"\r\n                                        Content=\"{Binding SelectedTabTheme, Mode=OneWay}\"\r\n                                        ContentTemplateSelector=\"{StaticResource TabThemeTemplateSelector}\"\r\n                                        FontSize=\"18\"\r\n                                        FontWeight=\"Light\" />\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    DataContext=\"{Binding ProfileVm}\"\r\n                                    Header=\"Theme\">\r\n                                    <ContentControl\r\n                                        Margin=\"0,6,0,0\"\r\n                                        Content=\"{Binding SelectedTerminalTheme, Mode=OneWay}\"\r\n                                        ContentTemplateSelector=\"{StaticResource TerminalThemeTemplateSelector}\"\r\n                                        FontSize=\"18\"\r\n                                        FontWeight=\"Light\" />\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    DataContext=\"{Binding ProfileVm}\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}\">\r\n                                    <ContentControl\r\n                                        Margin=\"0,6,0,0\"\r\n                                        Content=\"{Binding UseConPty, Mode=OneWay}\"\r\n                                        ContentTemplateSelector=\"{StaticResource UseConPtyTemplateSelector}\"\r\n                                        FontSize=\"18\"\r\n                                        FontWeight=\"Light\" />\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    Header=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=EnvironmentVariables.Text}\">\r\n                                    <ItemsControl Margin=\"0,6,0,0\" ItemsSource=\"{x:Bind EnvironmentVariables}\">\r\n                                        <ItemsControl.ItemTemplate>\r\n                                            <DataTemplate x:DataType=\"viewmodels:EnvironmentVariableViewModel\">\r\n                                                <Grid>\r\n                                                    <Grid.ColumnDefinitions>\r\n                                                        <ColumnDefinition Width=\"Auto\" />\r\n                                                        <ColumnDefinition Width=\"*\" />\r\n                                                    </Grid.ColumnDefinitions>\r\n                                                    <TextBlock\r\n                                                        Grid.Column=\"0\"\r\n                                                        MinWidth=\"100\"\r\n                                                        Margin=\"0,0,6,0\"\r\n                                                        Text=\"{x:Bind Name, Mode=OneWay}\" />\r\n                                                    <TextBlock Grid.Column=\"1\" Text=\"{x:Bind Value, Mode=OneWay}\" />\r\n                                                </Grid>\r\n                                            </DataTemplate>\r\n                                        </ItemsControl.ItemTemplate>\r\n                                    </ItemsControl>\r\n                                </controls:HeaderedContentControl>\r\n\r\n                                <controls:HeaderedContentControl\r\n                                    x:Uid=\"KeyboardShortcut\"\r\n                                    Margin=\"{StaticResource ItemMargin}\"\r\n                                    HorizontalContentAlignment=\"Stretch\"\r\n                                    Header=\"Keyboard shortcut\">\r\n                                    <ContentControl\r\n                                        Content=\"{Binding KeyBindings, Mode=OneWay}\"\r\n                                        ContentTemplateSelector=\"{StaticResource TerminalKeybindTemplateSelector}\"\r\n                                        FontSize=\"18\"\r\n                                        FontWeight=\"Light\" />\r\n                                </controls:HeaderedContentControl>\r\n                            </StackPanel>\r\n                        </Grid>\r\n                    </DataTemplate>\r\n                </ContentControl.ContentTemplate>\r\n            </ContentControl>\r\n        </ScrollViewer>\r\n    </Grid>\r\n</Page>\r\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/SshProfileSettings.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Settings;\r\nusing Windows.UI.Xaml.Controls;\r\nusing Windows.UI.Xaml.Navigation;\r\n\r\nnamespace FluentTerminal.App.Views.SettingsPages\r\n{\r\n    public sealed partial class SshProfileSettings : Page\r\n    {\r\n        public SshProfilesPageViewModel ViewModel { get; private set; }\r\n\r\n        public SshProfileSettings()\r\n        {\r\n            this.InitializeComponent();\r\n        }\r\n\r\n        protected override void OnNavigatedTo(NavigationEventArgs e)\r\n        {\r\n            if (e.Parameter is SshProfilesPageViewModel viewModel)\r\n            {\r\n                ViewModel = viewModel;\r\n                if (ViewModel.SshProfiles.Count == 0)\r\n                {\r\n                    ViewModel.CreateSshProfile();\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/TerminalSettings.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.SettingsPages.TerminalSettings\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:converters=\"using:FluentTerminal.App.Converters\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n    <Page.Resources>\n        <converters:ToolTipValueToPixelConverter x:Key=\"ToolTipValueToPixelConverter\" />\n    </Page.Resources>\n    <Grid Background=\"{ThemeResource ApplicationPageBackgroundThemeBrush}\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"32\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Grid Grid.Row=\"1\" Margin=\"{StaticResource HeaderMargin}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition />\n                <ColumnDefinition />\n            </Grid.ColumnDefinitions>\n            <TextBlock\n                x:Uid=\"Terminal\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"28\"\n                Style=\"{StaticResource TitleTextBlockStyle}\"\n                Text=\"Terminal\" />\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                DefaultLabelPosition=\"Right\">\n                <AppBarButton\n                    x:Uid=\"Restore\"\n                    Command=\"{x:Bind ViewModel.RestoreDefaultsCommand}\"\n                    Icon=\"Undo\"\n                    Label=\"Restore Defaults\" />\n            </CommandBar>\n        </Grid>\n        <ScrollViewer Grid.Row=\"2\">\n            <StackPanel Margin=\"{StaticResource ContainerMargin}\">\n                <ComboBox\n                    x:Uid=\"FontFamily\"\n                    Width=\"200\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Font family\"\n                    ItemsSource=\"{x:Bind ViewModel.Fonts}\"\n                    SelectedValue=\"{x:Bind ViewModel.FontFamily, Mode=TwoWay}\" />\n\n                <ComboBox\n                    x:Uid=\"FontSize\"\n                    Width=\"200\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Font size\"\n                    ItemsSource=\"{x:Bind ViewModel.Sizes}\"\n                    SelectedValue=\"{x:Bind ViewModel.FontSize, Mode=TwoWay}\" />\n\n                <Slider\n                    x:Uid=\"FontWeight\"\n                    Width=\"200\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    HorizontalAlignment=\"Left\"\n                    Header=\"Font Weight\"\n                    Maximum=\"900\"\n                    Minimum=\"100\"\n                    StepFrequency=\"100\"\n                    Value=\"{x:Bind ViewModel.FontWeight, Mode=TwoWay}\" />\n\n                <Slider\n                    x:Uid=\"Padding\"\n                    Width=\"200\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    HorizontalAlignment=\"Left\"\n                    Header=\"Padding\"\n                    Maximum=\"64\"\n                    Minimum=\"0\"\n                    StepFrequency=\"1\"\n                    ThumbToolTipValueConverter=\"{StaticResource ToolTipValueToPixelConverter}\"\n                    Value=\"{x:Bind ViewModel.Padding, Mode=TwoWay}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"AcrylicBackground\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Use acrylic background\"\n                    IsOn=\"{x:Bind ViewModel.UseAcrylicBackground, Mode=TwoWay}\" />\n\n                <Slider\n                    x:Uid=\"BackgroundOpacity\"\n                    Width=\"200\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    HorizontalAlignment=\"Left\"\n                    Header=\"Background opacity\"\n                    IsEnabled=\"{x:Bind ViewModel.UseAcrylicBackground, Mode=OneWay}\"\n                    Maximum=\"1\"\n                    Minimum=\"0\"\n                    StepFrequency=\"0.01\"\n                    Value=\"{x:Bind ViewModel.BackgroundOpacity, Mode=TwoWay}\" />\n\n                <TextBox\n                    x:Uid=\"ScrollbackLimit\"\n                    Width=\"200\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    HorizontalAlignment=\"Left\"\n                    Header=\"Scrollback limit\"\n                    KeyDown=\"ScrollBackTextBoxOnKeyDown\"\n                    Text=\"{x:Bind ViewModel.ScrollBackLimit, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n\n                <ToggleSwitch\n                    x:Uid=\"BlinkingCursor\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    Header=\"Blinking cursor\"\n                    IsOn=\"{x:Bind ViewModel.CursorBlink, Mode=TwoWay}\" />\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"CursorStyle\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Cursor style\" />\n                    <RadioButton\n                        x:Uid=\"CursorBlock\"\n                        Content=\"Block\"\n                        GroupName=\"Cursor\"\n                        IsChecked=\"{x:Bind ViewModel.BlockIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"CursorUnderline\"\n                        Content=\"Underline\"\n                        GroupName=\"Cursor\"\n                        IsChecked=\"{x:Bind ViewModel.UnderlineIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"CursorBar\"\n                        Content=\"Bar\"\n                        GroupName=\"Cursor\"\n                        IsChecked=\"{x:Bind ViewModel.BarIsSelected, Mode=TwoWay}\" />\n                </StackPanel>\n\n                <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                    <TextBlock\n                        x:Uid=\"ScrollbarStyle\"\n                        Margin=\"0,0,0,8\"\n                        Text=\"Scrollbar style\" />\n                    <RadioButton\n                        x:Uid=\"ScrollBarHidden\"\n                        Content=\"Hidden\"\n                        GroupName=\"ScrollBar\"\n                        IsChecked=\"{x:Bind ViewModel.HiddenIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"ScrollBarAuto\"\n                        Content=\"Auto hiding\"\n                        GroupName=\"ScrollBar\"\n                        IsChecked=\"{x:Bind ViewModel.AutoHidingIsSelected, Mode=TwoWay}\" />\n                    <RadioButton\n                        x:Uid=\"ScrollBarVisible\"\n                        Content=\"Visible\"\n                        GroupName=\"ScrollBar\"\n                        IsChecked=\"{x:Bind ViewModel.VisibleIsSelected, Mode=TwoWay}\" />\n                </StackPanel>\n\n                <TextBox\n                    x:Uid=\"WordSeparator\"\n                    Width=\"200\"\n                    Margin=\"{StaticResource ItemMargin}\"\n                    HorizontalAlignment=\"Left\"\n                    Header=\"Select-by-word characters\"\n                    Text=\"{x:Bind ViewModel.WordSeparator, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" />\n            </StackPanel>\n        </ScrollViewer>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/TerminalSettings.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Settings;\nusing Windows.System;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Input;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace FluentTerminal.App.Views.SettingsPages\n{\n    public sealed partial class TerminalSettings : Page\n    {\n        public TerminalSettings()\n        {\n            InitializeComponent();\n        }\n\n        public TerminalPageViewModel ViewModel { get; private set; }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is TerminalPageViewModel viewModel)\n            {\n                ViewModel = viewModel;\n            }\n        }\n\n        private void ScrollBackTextBoxOnKeyDown(object sender, KeyRoutedEventArgs e)\n        {\n            if (e.Key == VirtualKey.Back)\n            {\n                e.Handled = false;\n                return;\n            }\n\n            for (int i = 0; i < 10; i++)\n            {\n                if (e.Key.ToString() == string.Format(\"Number{0}\", i))\n                {\n                    e.Handled = false;\n                    return;\n                }\n            }\n            e.Handled = true;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/ThemeSettings.xaml",
    "content": "﻿<Page\n    x:Class=\"FluentTerminal.App.Views.SettingsPages.ThemeSettings\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:viewmodels=\"using:FluentTerminal.App.ViewModels\"\n    xmlns:views=\"using:FluentTerminal.App.Views\"\n    mc:Ignorable=\"d\">\n    <Grid x:Name=\"Root\">\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"200\" />\n            <ColumnDefinition Width=\"*\" />\n        </Grid.ColumnDefinitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"32\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <Border\n            Grid.RowSpan=\"3\"\n            Grid.Column=\"0\"\n            Background=\"{ThemeResource SystemControlChromeMediumAcrylicElementMediumBrush}\" />\n        <Grid\n            Grid.Row=\"1\"\n            Grid.ColumnSpan=\"2\"\n            Margin=\"{StaticResource HeaderMargin}\"\n            RequestedTheme=\"{x:Bind ViewModel.SelectedTheme.Background, Mode=OneWay, Converter={StaticResource BackgroundToApplicationThemeConverter}}\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"200\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n            <TextBlock\n                VerticalAlignment=\"Center\"\n                FontSize=\"28\"\n                RequestedTheme=\"{x:Bind ViewModel.SelectedTheme.Background, Mode=OneWay, Converter={StaticResource BackgroundToApplicationThemeConverter}}\"\n                Style=\"{StaticResource TitleTextBlockStyle}\"\n                Text=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=Setting_Themes.Content}\" />\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                Background=\"Transparent\"\n                DefaultLabelPosition=\"Right\"\n                RequestedTheme=\"{x:Bind ViewModel.SelectedTheme.Background, Mode=OneWay, Converter={StaticResource BackgroundToApplicationThemeConverter}}\"\n                Visibility=\"{x:Bind ViewModel.SelectedTheme.InEditMode, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\">\n                <AppBarButton\n                    Name=\"SetActiveButton\"\n                    x:Uid=\"SetDefaultAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedTheme.SetActiveCommand, Mode=OneWay}\"\n                    Icon=\"Accept\"\n                    IsEnabled=\"{Binding ViewModel.SelectedTheme.IsActive, Mode=OneWay, Converter={StaticResource NegateConverter}}\"\n                    Label=\"Set Active\" />\n                <AppBarButton\n                    Name=\"ExportButton\"\n                    x:Uid=\"ExportAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedTheme.ExportCommand, Mode=OneWay}\"\n                    Label=\"Export\">\n                    <AppBarButton.Icon>\n                        <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xEE71;\" />\n                    </AppBarButton.Icon>\n                </AppBarButton>\n                <AppBarButton\n                    Name=\"CloneButton\"\n                    x:Uid=\"CloneAppBarButton\"\n                    Command=\"{x:Bind ViewModel.CloneCommand, Mode=OneWay}\"\n                    CommandParameter=\"{x:Bind ViewModel.SelectedTheme, Mode=OneWay}\"\n                    Icon=\"Copy\"\n                    Label=\"Clone\" />\n                <AppBarButton\n                    Name=\"EditButton\"\n                    x:Uid=\"EditAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedTheme.EditCommand, Mode=OneWay}\"\n                    Icon=\"Edit\"\n                    Label=\"Edit\" />\n                <AppBarButton\n                    Name=\"DeleteButton\"\n                    x:Uid=\"DeleteAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedTheme.DeleteCommand, Mode=OneWay}\"\n                    Icon=\"Delete\"\n                    Label=\"Delete\" />\n            </CommandBar>\n            <CommandBar\n                Grid.Column=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Top\"\n                Background=\"Transparent\"\n                DefaultLabelPosition=\"Right\"\n                Visibility=\"{x:Bind ViewModel.SelectedTheme.InEditMode, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                <AppBarButton\n                    Name=\"SaveButton\"\n                    x:Uid=\"SaveAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedTheme.SaveChangesCommand, Mode=OneWay}\"\n                    Icon=\"Save\"\n                    Label=\"Save\" />\n                <AppBarButton\n                    Name=\"CancelButton\"\n                    x:Uid=\"CancelAppBarButton\"\n                    Command=\"{x:Bind ViewModel.SelectedTheme.CancelEditCommand, Mode=OneWay}\"\n                    Icon=\"Cancel\"\n                    Label=\"Cancel\" />\n            </CommandBar>\n        </Grid>\n        <ScrollViewer\n            Grid.Row=\"2\"\n            Grid.Column=\"0\"\n            RequestedTheme=\"{x:Bind ViewModel.SelectedTheme.Background, Mode=OneWay, Converter={StaticResource BackgroundToApplicationThemeConverter}}\"\n            VerticalScrollBarVisibility=\"Auto\">\n            <StackPanel Margin=\"{StaticResource ItemMargin}\">\n                <ListView ItemsSource=\"{x:Bind ViewModel.Themes}\" SelectedItem=\"{x:Bind ViewModel.SelectedTheme, Mode=TwoWay}\">\n                    <ListView.ItemTemplate>\n                        <DataTemplate x:DataType=\"viewmodels:ThemeViewModel\">\n                            <Grid>\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width=\"*\" />\n                                    <ColumnDefinition Width=\"Auto\" />\n                                </Grid.ColumnDefinitions>\n                                <TextBlock Grid.Column=\"0\" Text=\"{x:Bind Name, Mode=OneWay}\" />\n                                <Viewbox\n                                    Grid.Column=\"1\"\n                                    Width=\"16\"\n                                    Height=\"16\"\n                                    HorizontalAlignment=\"Right\">\n                                    <SymbolIcon Symbol=\"Accept\" Visibility=\"{x:Bind IsActive, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n                                </Viewbox>\n                            </Grid>\n                        </DataTemplate>\n                    </ListView.ItemTemplate>\n                    <ListView.ItemContainerStyle>\n                        <Style TargetType=\"ListViewItem\">\n                            <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                        </Style>\n                    </ListView.ItemContainerStyle>\n                </ListView>\n                <Button\n                    Height=\"48\"\n                    Margin=\"0,12,0,0\"\n                    HorizontalAlignment=\"Stretch\"\n                    HorizontalContentAlignment=\"Left\"\n                    Background=\"Transparent\"\n                    Command=\"{x:Bind ViewModel.CreateThemeCommand}\"\n                    Style=\"{StaticResource ButtonRevealStyle}\">\n                    <Button.Content>\n                        <StackPanel Orientation=\"Horizontal\">\n                            <Viewbox\n                                Width=\"12\"\n                                Height=\"12\"\n                                Margin=\"0,0,6,0\">\n                                <SymbolIcon Symbol=\"Add\" />\n                            </Viewbox>\n                            <TextBlock\n                                x:Uid=\"NewTheme\"\n                                Style=\"{StaticResource CaptionTextBlockStyle}\"\n                                Text=\"Create new\" />\n                        </StackPanel>\n                    </Button.Content>\n                </Button>\n                <Button\n                    Height=\"48\"\n                    Margin=\"0,0,0,0\"\n                    HorizontalAlignment=\"Stretch\"\n                    HorizontalContentAlignment=\"Left\"\n                    Background=\"Transparent\"\n                    Command=\"{x:Bind ViewModel.ImportThemeCommand}\"\n                    Style=\"{StaticResource ButtonRevealStyle}\">\n                    <Button.Content>\n                        <StackPanel Orientation=\"Horizontal\">\n                            <Viewbox\n                                Width=\"12\"\n                                Height=\"12\"\n                                Margin=\"0,0,6,0\">\n                                <SymbolIcon Symbol=\"OpenFile\" />\n                            </Viewbox>\n                            <TextBlock\n                                x:Uid=\"ImportTheme\"\n                                Style=\"{StaticResource CaptionTextBlockStyle}\"\n                                Text=\"Import\" />\n                        </StackPanel>\n                    </Button.Content>\n                </Button>\n            </StackPanel>\n        </ScrollViewer>\n\n        <ContentControl\n            Grid.Row=\"2\"\n            Grid.Column=\"1\"\n            Margin=\"0,10\"\n            HorizontalContentAlignment=\"Stretch\"\n            Content=\"{x:Bind ViewModel.SelectedTheme, Mode=TwoWay}\"\n            RequestedTheme=\"{x:Bind ViewModel.SelectedTheme.Background, Mode=OneWay, Converter={StaticResource BackgroundToApplicationThemeConverter}}\">\n            <ContentControl.ContentTemplate>\n                <DataTemplate x:DataType=\"viewmodels:ThemeViewModel\">\n                    <ScrollViewer VerticalScrollBarVisibility=\"Auto\">\n                        <StackPanel Margin=\"{StaticResource ContainerMargin}\">\n                            <!--  VIEW THEME  -->\n                            <TextBlock\n                                Margin=\"{StaticResource ItemMargin}\"\n                                Style=\"{StaticResource SubtitleTextBlockStyle}\"\n                                Text=\"{x:Bind Name, Mode=OneWay}\"\n                                Visibility=\"{x:Bind InEditMode, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\">\n                                <TextBlock.Foreground>\n                                    <SolidColorBrush Color=\"{x:Bind Foreground, Mode=OneWay}\" />\n                                </TextBlock.Foreground>\n                            </TextBlock>\n\n                            <TextBlock\n                                FontSize=\"14\"\n                                Style=\"{StaticResource SubtitleTextBlockStyle}\"\n                                Text=\"{x:Bind Author, Mode=OneWay}\"\n                                Visibility=\"{x:Bind InEditMode, Mode=OneWay, Converter={StaticResource FalseToVisibleConverter}}\">\n                                <TextBlock.Foreground>\n                                    <SolidColorBrush Color=\"{x:Bind Foreground, Mode=OneWay}\" />\n                                </TextBlock.Foreground>\n                            </TextBlock>\n\n                            <!--  EDIT THEME  -->\n                            <TextBox\n                                x:Uid=\"ThemeName\"\n                                Width=\"200\"\n                                Margin=\"{StaticResource ItemMargin}\"\n                                HorizontalAlignment=\"Left\"\n                                Header=\"Name\"\n                                Text=\"{x:Bind Name, Mode=TwoWay}\"\n                                Visibility=\"{x:Bind InEditMode, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n\n                            <TextBox\n                                x:Uid=\"ThemeAuthor\"\n                                Width=\"200\"\n                                Margin=\"{StaticResource ItemMargin}\"\n                                HorizontalAlignment=\"Left\"\n                                Header=\"Author\"\n                                Text=\"{x:Bind Author, Mode=TwoWay}\"\n                                Visibility=\"{x:Bind InEditMode, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n\n                            <Grid Margin=\"{StaticResource ItemMargin}\">\n                                <Grid.RowDefinitions>\n                                    <RowDefinition />\n                                    <RowDefinition />\n                                    <RowDefinition />\n                                    <RowDefinition />\n                                    <RowDefinition />\n                                </Grid.RowDefinitions>\n                                <Grid.Resources>\n                                    <Style TargetType=\"Border\">\n                                        <Setter Property=\"Margin\" Value=\"0,0,0,0\" />\n                                        <Setter Property=\"Width\" Value=\"24\" />\n                                        <Setter Property=\"Height\" Value=\"24\" />\n                                    </Style>\n                                </Grid.Resources>\n                                <TextBlock\n                                    x:Uid=\"ColorPalette\"\n                                    Grid.Row=\"0\"\n                                    Text=\"Color palette\" />\n                                <TextBlock\n                                    x:Uid=\"ClickColorEdit\"\n                                    Grid.Row=\"1\"\n                                    FontSize=\"14\"\n                                    FontStyle=\"Italic\"\n                                    Foreground=\"LightGray\"\n                                    Text=\"Click on a color to edit\"\n                                    Visibility=\"{x:Bind InEditMode, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n                                <StackPanel\n                                    Grid.Row=\"2\"\n                                    Margin=\"0,6,0,0\"\n                                    Orientation=\"Horizontal\">\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Black\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Black, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Red\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Red, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Green\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Green, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Yellow\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Yellow, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Blue\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Blue, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Magenta\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Magenta, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Cyan\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Cyan, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"White\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind White, Mode=TwoWay}\" />\n                                    <TextBlock\n                                        x:Uid=\"Colors\"\n                                        Margin=\"6,0,0,0\"\n                                        VerticalAlignment=\"Center\"\n                                        Text=\"Colors\" />\n                                </StackPanel>\n                                <StackPanel\n                                    Grid.Row=\"3\"\n                                    Margin=\"{StaticResource ItemMargin}\"\n                                    Orientation=\"Horizontal\">\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright Black\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightBlack, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright Red\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightRed, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright Green\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightGreen, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright Yellow\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightYellow, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright Blue\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightBlue, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright Magenta\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightMagenta, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright Cyan\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightCyan, Mode=TwoWay}\" />\n                                    <views:TerminalColorPicker\n                                        ColorName=\"Bright White\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind BrightWhite, Mode=TwoWay}\" />\n                                    <TextBlock\n                                        x:Uid=\"BrightColors\"\n                                        Margin=\"6,0,0,0\"\n                                        VerticalAlignment=\"Center\"\n                                        Text=\"Bright colors\" />\n                                </StackPanel>\n                                <StackPanel Grid.Row=\"4\">\n                                    <views:TerminalColorPicker\n                                        Margin=\"{StaticResource ItemMargin}\"\n                                        ColorName=\"Foreground\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Foreground, Mode=TwoWay}\"\n                                        ShowName=\"True\" />\n                                    <views:TerminalColorPicker\n                                        Margin=\"{StaticResource ItemMargin}\"\n                                        ColorName=\"Background\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Background, Mode=TwoWay}\"\n                                        ShowName=\"True\" />\n                                    <views:TerminalColorPicker\n                                        Margin=\"{StaticResource ItemMargin}\"\n                                        ColorName=\"Cursor\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind Cursor, Mode=TwoWay}\"\n                                        ShowName=\"True\" />\n                                    <views:TerminalColorPicker\n                                        Margin=\"{StaticResource ItemMargin}\"\n                                        ColorName=\"Cursor Accent\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        SelectedColor=\"{x:Bind CursorAccent, Mode=TwoWay}\"\n                                        ShowName=\"True\" />\n                                    <views:TerminalColorPicker\n                                        Margin=\"{StaticResource ItemMargin}\"\n                                        ColorName=\"Selection\"\n                                        EnableEditing=\"{x:Bind InEditMode, Mode=OneWay}\"\n                                        IsAlphaEnabled=\"True\"\n                                        SelectedColor=\"{x:Bind Selection, Mode=TwoWay}\"\n                                        ShowName=\"True\" />\n                                </StackPanel>\n                            </Grid>\n\n                            <StackPanel\n                                Margin=\"{StaticResource ItemMargin}\"\n                                Orientation=\"Horizontal\"\n                                Visibility=\"{x:Bind InEditMode, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                                <TextBlock\n                                    Margin=\"0,0,6,0\"\n                                    VerticalAlignment=\"Center\"\n                                    Text=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=BackgroundImage.Content}\" />\n\n                                <Button\n                                    Margin=\"0,0,6,0\"\n                                    Command=\"{x:Bind ChooseBackgroundImageCommand}\"\n                                    Content=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=BrowseButton.Content}\" />\n\n                                <HyperlinkButton\n                                    x:Uid=\"ResetBtn\"\n                                    Command=\"{x:Bind DeleteBackgroundImageCommand}\"\n                                    Content=\"Reset\"\n                                    Visibility=\"{x:Bind BackgroundThemeFile, Converter={StaticResource NullToCollapsedConverter}, Mode=OneWay}\" />\n                            </StackPanel>\n                        </StackPanel>\n                    </ScrollViewer>\n                </DataTemplate>\n            </ContentControl.ContentTemplate>\n        </ContentControl>\n    </Grid>\n</Page>\n"
  },
  {
    "path": "FluentTerminal.App/Views/SettingsPages/ThemeSettings.xaml.cs",
    "content": "﻿using System;\nusing FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels;\nusing FluentTerminal.App.ViewModels.Settings;\nusing FluentTerminal.Models;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace FluentTerminal.App.Views.SettingsPages\n{\n    public sealed partial class ThemeSettings : Page\n    {\n        public ThemesPageViewModel ViewModel { get; private set; }\n\n        public ThemeSettings()\n        {\n            InitializeComponent();\n            Root.DataContext = this;\n        }\n\n        protected override void OnNavigatedTo(NavigationEventArgs e)\n        {\n            if (e.Parameter is ThemesPageViewModel viewModel)\n            {\n                ViewModel = viewModel;\n                viewModel.SelectedThemeBackgroundColorChanged += OnSelectedThemeBackgroundColorChanged;\n                viewModel.SelectedThemeBackgroundImageChanged += OnSelectedThemeBackgroundImageChanged;\n                viewModel.SelectedThemeChanged += OnSelectedThemeChanged;\n\n                var theme = ContrastHelper.GetIdealThemeForBackgroundColor(ViewModel.SelectedTheme.Background);\n\n                SetTheme(theme);\n                SetGridBackground(ViewModel.SelectedTheme.Background, ViewModel.SelectedTheme.BackgroundThemeFile);\n            }\n        }\n\n        private void OnSelectedThemeChanged(object sender, ThemeViewModel e)\n        {\n            SetGridBackground(e.Background, e.BackgroundThemeFile);\n        }\n\n        private void OnSelectedThemeBackgroundImageChanged(object sender, ImageFile e)\n        {\n            SetGridBackground(ViewModel.SelectedTheme.Background, e);\n        }\n\n        private void OnSelectedThemeBackgroundColorChanged(object sender, string e)\n        {\n            var theme = ContrastHelper.GetIdealThemeForBackgroundColor(e);\n            SetTheme(theme);\n\n            SetGridBackground(e, ViewModel.SelectedTheme.BackgroundThemeFile);\n        }\n\n        private void SetTheme(ElementTheme theme)\n        {\n            SetActiveButton.RequestedTheme = theme;\n            EditButton.RequestedTheme = theme;\n            DeleteButton.RequestedTheme = theme;\n            SaveButton.RequestedTheme = theme;\n            CancelButton.RequestedTheme = theme;\n            ExportButton.RequestedTheme = theme;\n            CloneButton.RequestedTheme = theme;\n\n            ContrastHelper.SetTitleBarButtonsForTheme(theme);\n        }\n\n        private void SetGridBackground(string color, ImageFile imageFile)\n        {\n            Brush backgroundBrush;\n\n            if (imageFile != null && System.IO.File.Exists(imageFile.Path))\n            {\n                backgroundBrush = new ImageBrush()\n                {\n                    ImageSource = new BitmapImage(new Uri(\n                        imageFile.Path,\n                        UriKind.Absolute)),\n                    Stretch = Stretch.UniformToFill\n                };\n            }\n            else\n            {\n                backgroundBrush = new AcrylicBrush\n                {\n                    BackgroundSource = AcrylicBackgroundSource.HostBackdrop,\n                    FallbackColor = color.FromString(),\n                    TintColor = color.FromString(),\n                    TintOpacity = ViewModel.BackgroundOpacity\n                };\n            }\n\n            Root.Background = backgroundBrush;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/TabBar.xaml",
    "content": "﻿<UserControl\n    x:Class=\"FluentTerminal.App.Views.TabBar\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:behaviors=\"using:FluentTerminal.App.Behaviors\"\n    xmlns:core=\"using:Microsoft.Xaml.Interactions.Core\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:interactivity=\"using:Microsoft.Xaml.Interactivity\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:utilities=\"using:FluentTerminal.App.Utilities\"\n    xmlns:viewmodels=\"using:FluentTerminal.App.ViewModels\"\n    xmlns:views=\"using:FluentTerminal.App.Views\"\n    d:DesignHeight=\"32\"\n    d:DesignWidth=\"200\"\n    mc:Ignorable=\"d\">\n\n    <Grid>\n        <Grid.Resources>\n            <x:Double x:Key=\"ListViewItemSelectedBorderThemeThickness\">0</x:Double>\n            <x:Double x:Key=\"ListViewItemCompactSelectedBorderThemeThickness\">0</x:Double>\n        </Grid.Resources>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"*\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n        <RepeatButton\n            x:Name=\"ScrollLeftButton\"\n            Grid.Column=\"0\"\n            Width=\"24\"\n            Padding=\"0,0,4,0\"\n            Click=\"OnScrollLeftButtonTapped\"\n            Style=\"{StaticResource TitleBarRepeatButtonStyle}\"\n            Tapped=\"OnScrollLeftButtonTapped\"\n            ToolTipService.ToolTip=\"Scroll left\"\n            Visibility=\"Collapsed\">\n            <RepeatButton.Content>\n                <Viewbox Width=\"12\" Height=\"12\">\n                    <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xE76B;\" />\n                </Viewbox>\n            </RepeatButton.Content>\n        </RepeatButton>\n        <ScrollViewer\n            x:Name=\"ScrollViewer\"\n            Grid.Column=\"1\"\n            Height=\"44\"\n            Margin=\"4 0 4 0\"\n            Padding=\"0\"\n            Background=\"Transparent\"\n            HorizontalScrollBarVisibility=\"Hidden\"\n            HorizontalScrollMode=\"Enabled\"\n            VerticalScrollBarVisibility=\"Hidden\"\n            VerticalScrollMode=\"Disabled\">\n            <ListView\n                Margin=\"0\"\n                Height=\"44\"\n                x:Name=\"ListView\"\n                AllowDrop=\"True\"\n                Background=\"Transparent\"\n                VerticalContentAlignment=\"Center\"\n                Padding=\"0 0 0 0\"\n                CanDragItems=\"true\"\n                CanReorderItems=\"True\"\n                DragEnter=\"ListView_DragEnter\"\n                DragItemsCompleted=\"ListView_DragItemsCompleted\"\n                DragItemsStarting=\"ListView_DragItemsStarting\"\n                Drop=\"ListView_Drop\"\n                ItemsSource=\"{x:Bind ItemsSource}\"\n                SelectedItem=\"{x:Bind SelectedItem, Mode=TwoWay}\"\n                SelectionChanged=\"OnListViewSelectionChanged\"\n                SizeChanged=\"OnListViewSizeChanged\">\n                <ListView.ItemTemplate>\n                    <DataTemplate x:DataType=\"viewmodels:TerminalViewModel\">\n                        <utilities:InteractiveSurface\n                            x:Name=\"InteractiveSurface\"\n                            HorizontalContentAlignment=\"Stretch\"\n                            Padding=\"0\"\n                            Height=\"32\"\n                            FocusVisualPrimaryThickness=\"0\"\n                            BorderThickness=\"0\"\n                            FocusVisualSecondaryThickness=\"0\"\n                            Hovered=\"{x:Bind IsHovered, Mode=TwoWay}\">\n                            <RelativePanel\n                                Height=\"32\"\n                                Margin=\"2 0 2 0\"\n                                Padding=\"0\"\n                                CornerRadius=\"4\"\n                                Background=\"Transparent\"\n                                ContextFlyout=\"{x:Bind TabContextMenu, Converter={StaticResource MenuViewModelToFlyoutMenuConverter}, Mode=OneWay}\"\n                                ToolTipService.ToolTip=\"{x:Bind TabTitle, Mode=OneWay}\">\n\n                                <interactivity:Interaction.Behaviors>\n                                    <behaviors:MiddleClickBehavior>\n                                        <behaviors:MiddleClickBehavior.Actions>\n                                            <core:InvokeCommandAction Command=\"{x:Bind CloseCommand}\" />\n                                        </behaviors:MiddleClickBehavior.Actions>\n                                    </behaviors:MiddleClickBehavior>\n                                </interactivity:Interaction.Behaviors>\n\n                                <Border\n                                    Height=\"3\"\n                                    VerticalAlignment=\"Bottom\"\n                                    Background=\"{x:Bind TabTheme.Theme.Color, Mode=OneWay, Converter={StaticResource ColorResourceKeyFallbackConverter}, ConverterParameter=SystemControlHighlightAccentBrush}\"\n                                    RelativePanel.AlignBottomWithPanel=\"True\"\n                                    RelativePanel.AlignLeftWithPanel=\"True\"\n                                    RelativePanel.AlignRightWithPanel=\"True\"\n                                    Visibility=\"{x:Bind IsUnderlined, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\" />\n                                <Grid\n                                    x:Name=\"HasExitedWithErrorGrid\"\n                                    Height=\"32\"\n                                    Margin=\"6,0,0,0\"\n                                    RelativePanel.AlignLeftWithPanel=\"True\"\n                                    Visibility=\"{x:Bind HasExitedWithError, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                                    <Viewbox\n                                        x:Uid=\"ExitedWithError\"\n                                        Width=\"12\"\n                                        Height=\"12\"\n                                        VerticalAlignment=\"Center\"\n                                        ToolTipService.ToolTip=\"Exited with error\">\n                                        <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xE814;\" />\n                                    </Viewbox>\n                                </Grid>\n                                <TextBlock\n                                    Margin=\"12,8,6,0\"\n                                    RelativePanel.LeftOf=\"CloseButton\"\n                                    RelativePanel.RightOf=\"HasExitedWithErrorGrid\"\n                                    Style=\"{StaticResource CaptionTextBlockStyle}\"\n                                    Foreground=\"{ThemeResource ListViewItemForeground}\"\n                                    Text=\"{x:Bind TabTitle, Mode=OneWay, Converter={StaticResource TextMiddleEllipsisConverter}}\"\n                                    TextWrapping=\"NoWrap\" />\n                                <Grid\n                                    Margin=\"0\"\n                                    x:Name=\"CloseButton\"\n                                    RelativePanel.AlignRightWithPanel=\"True\">\n                                    <Button\n                                        Width=\"32\"\n                                        Background=\"Aqua\"\n                                        HorizontalAlignment=\"Center\"\n                                        Command=\"{x:Bind CloseCommand}\"\n                                        Style=\"{StaticResource TitleBarButtonStyle}\"\n                                        ToolTipService.ToolTip=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=Close}\"\n                                        Visibility=\"{x:Bind ShowCloseButton, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                                        <Viewbox Width=\"12\" Height=\"12\">\n                                            <SymbolIcon Symbol=\"Cancel\" />\n                                        </Viewbox>\n                                    </Button>\n                                    <Grid Height=\"32\" Visibility=\"{x:Bind HasNewOutput, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\">\n                                        <Viewbox\n                                            x:Uid=\"NewOutput\"\n                                            Width=\"12\"\n                                            Height=\"12\"\n                                            VerticalAlignment=\"Center\"\n                                            ToolTipService.ToolTip=\"New output\">\n                                            <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xEA38;\" />\n                                        </Viewbox>\n                                    </Grid>\n                                </Grid>\n                            </RelativePanel>\n                        </utilities:InteractiveSurface>\n                    </DataTemplate>\n                </ListView.ItemTemplate>\n                <ListView.ItemContainerStyle>\n                    <Style TargetType=\"ListViewItem\">\n                        <Setter Property=\"MinWidth\" Value=\"100\" />\n                        <Setter Property=\"MaxWidth\" Value=\"200\" />\n                        <Setter Property=\"Height\" Value=\"32\" />\n                        <Setter Property=\"MinHeight\" Value=\"32\" />\n                        <Setter Property=\"MaxHeight\" Value=\"32\" />\n                        <Setter Property=\"Padding\" Value=\"0\" />\n                        <Setter Property=\"Margin\" Value=\"0\" />\n                        <Setter Property=\"views:TabBarBackgroundBindingHelper.BackgroundBindingPath\" Value=\"BackgroundTabTheme\" />\n                        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n                        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\" />\n                        <Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\" />\n                        <Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\" />\n                        <Setter Property=\"Foreground\" Value=\"{ThemeResource ListViewItemForeground}\" />\n                        <Setter Property=\"TabNavigation\" Value=\"Local\" />\n                        <Setter Property=\"IsHoldingEnabled\" Value=\"True\" />\n                        <Setter Property=\"AllowDrop\" Value=\"True\" />\n                        <Setter Property=\"UseSystemFocusVisuals\" Value=\"False\" />\n                        <Setter Property=\"FocusVisualMargin\" Value=\"0\" />\n                        <Setter Property=\"FocusVisualPrimaryBrush\" Value=\"{ThemeResource ListViewItemFocusVisualPrimaryBrush}\" />\n                        <Setter Property=\"FocusVisualPrimaryThickness\" Value=\"0\" />\n                        <Setter Property=\"FocusVisualSecondaryBrush\" Value=\"{ThemeResource ListViewItemFocusVisualSecondaryBrush}\" />\n                        <Setter Property=\"FocusVisualSecondaryThickness\" Value=\"0\" />\n                        <Setter Property=\"Template\">\n                            <Setter.Value>\n                                <ControlTemplate TargetType=\"ListViewItem\">\n                                    <ListViewItemPresenter\n                                        BackgroundSizing=\"OuterBorderEdge\"\n                                        x:Name=\"Root\"\n                                        CornerRadius=\"4\"\n                                        MinHeight=\"{TemplateBinding Height}\"\n                                        Height=\"{TemplateBinding Height}\"\n                                        MaxHeight=\"{TemplateBinding Height}\"\n                                        Padding=\"{TemplateBinding Padding}\"\n                                        Margin=\"{TemplateBinding Margin}\"\n                                        SelectedBorderThickness=\"0\"\n                                        HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                                        VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                                        CheckBoxBrush=\"{ThemeResource ListViewItemCheckBoxBrush}\"\n                                        CheckBrush=\"{ThemeResource ListViewItemCheckBrush}\"\n                                        CheckMode=\"{ThemeResource ListViewItemCheckMode}\"\n                                        ContentMargin=\"{TemplateBinding Padding}\"\n                                        ContentTransitions=\"{TemplateBinding ContentTransitions}\"\n                                        Control.IsTemplateFocusTarget=\"True\"\n                                        DisabledOpacity=\"{ThemeResource ListViewItemDisabledThemeOpacity}\"\n                                        DragBackground=\"{ThemeResource ListViewItemDragBackground}\"\n                                        DragForeground=\"{ThemeResource ListViewItemDragForeground}\"\n                                        DragOpacity=\"{ThemeResource ListViewItemDragThemeOpacity}\"\n                                        FocusBorderBrush=\"{ThemeResource ListViewItemFocusBorderBrush}\"\n                                        FocusSecondaryBorderBrush=\"{ThemeResource ListViewItemFocusSecondaryBorderBrush}\"\n                                        FocusVisualMargin=\"{TemplateBinding FocusVisualMargin}\"\n                                        FocusVisualPrimaryBrush=\"{TemplateBinding FocusVisualPrimaryBrush}\"\n                                        FocusVisualPrimaryThickness=\"{TemplateBinding FocusVisualPrimaryThickness}\"\n                                        FocusVisualSecondaryBrush=\"{TemplateBinding FocusVisualSecondaryBrush}\"\n                                        FocusVisualSecondaryThickness=\"{TemplateBinding FocusVisualSecondaryThickness}\"\n                                        PlaceholderBackground=\"{ThemeResource ListViewItemPlaceholderBackground}\"\n                                        PointerOverBackground=\"{Binding TabTheme, Mode=OneWay, Converter={StaticResource TabColorFallbackConverter}, ConverterParameter=BackgroundPointerOver}\"\n                                        PointerOverForeground=\"{ThemeResource ListViewItemForegroundPointerOver}\"\n                                        PressedBackground=\"{Binding TabTheme, Mode=OneWay, Converter={StaticResource TabColorFallbackConverter}, ConverterParameter=BackgroundPressed}\"\n                                        ReorderHintOffset=\"{ThemeResource ListViewItemReorderHintThemeOffset}\"\n                                        SelectedBackground=\"{Binding TabTheme, Mode=OneWay, Converter={StaticResource TabColorFallbackConverter}, ConverterParameter=BackgroundSelected}\"\n                                        SelectedForeground=\"{ThemeResource ListViewItemForegroundSelected}\"\n                                        SelectedPointerOverBackground=\"{Binding TabTheme, Mode=OneWay, Converter={StaticResource TabColorFallbackConverter}, ConverterParameter=BackgroundSelectedPointerOver}\"\n                                        SelectedPressedBackground=\"{Binding TabTheme, Mode=OneWay, Converter={StaticResource TabColorFallbackConverter}, ConverterParameter=BackgroundSelectedPressed}\"\n                                        SelectionCheckMarkVisualEnabled=\"{ThemeResource ListViewItemSelectionCheckMarkVisualEnabled}\"\n                                        PointerOverBackgroundMargin=\"0\">\n                                    </ListViewItemPresenter>\n                                </ControlTemplate>\n                            </Setter.Value>\n                        </Setter>\n                    </Style>\n                </ListView.ItemContainerStyle>\n                <ListView.ItemsPanel>\n                    <ItemsPanelTemplate>\n                        <ItemsStackPanel Orientation=\"Horizontal\" />\n                    </ItemsPanelTemplate>\n                </ListView.ItemsPanel>\n            </ListView>\n        </ScrollViewer>\n        <RepeatButton\n            x:Name=\"ScrollRightButton\"\n            Grid.Column=\"2\"\n            Width=\"24\"\n            Padding=\"4,0,0,0\"\n            Click=\"OnScrollRightButtonTapped\"\n            Style=\"{StaticResource TitleBarRepeatButtonStyle}\"\n            Tapped=\"OnScrollRightButtonTapped\"\n            ToolTipService.ToolTip=\"Scroll right\"\n            Visibility=\"Collapsed\">\n            <RepeatButton.Content>\n                <Viewbox Width=\"12\" Height=\"12\">\n                    <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xE76C;\" />\n                </Viewbox>\n            </RepeatButton.Content>\n        </RepeatButton>\n        <Button\n            Grid.Column=\"3\"\n            Command=\"{x:Bind AddCommand}\"\n            Style=\"{StaticResource TitleBarButtonStyle}\"\n            ToolTipService.ToolTip=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=NewTab.Text}\">\n            <Button.Content>\n                <Viewbox Width=\"12\" Height=\"12\">\n                    <SymbolIcon Symbol=\"Add\" />\n                </Viewbox>\n            </Button.Content>\n        </Button>\n    </Grid>\n</UserControl>"
  },
  {
    "path": "FluentTerminal.App/Views/TabBar.xaml.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing Windows.ApplicationModel.DataTransfer;\nusing Windows.Foundation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class TabBar : UserControl\n    {\n        public static readonly DependencyProperty ItemsSourceProperty =\n            DependencyProperty.Register(nameof(ItemsSource), typeof(ObservableCollection<TerminalViewModel>), typeof(TabBar), new PropertyMetadata(null));\n\n        public static readonly DependencyProperty MyPropertyProperty =\n            DependencyProperty.Register(nameof(AddCommand), typeof(ICommand), typeof(TabBar), new PropertyMetadata(null));\n\n        public static readonly DependencyProperty SelectedItemProperty =\n            DependencyProperty.Register(nameof(SelectedItem), typeof(object), typeof(TabBar), new PropertyMetadata(null));\n\n        private long _scrollableWidthChangedToken;\n\n        public TabBar()\n        {\n            InitializeComponent();\n            _scrollableWidthChangedToken = ScrollViewer.RegisterPropertyChangedCallback(ScrollViewer.ScrollableWidthProperty, OnScrollableWidthChanged);\n        }\n\n        private void OnListViewSizeChanged(object sender, SizeChangedEventArgs e)\n        {\n            SetScrollButtonsEnabledState();\n        }\n\n        public void DisposalPrepare()\n        {\n            ListView.ItemsSource = null;\n            ListView.SelectedItem = null;\n\n            ItemsSource = null;\n            AddCommand = null;\n            SelectedItem = null;\n\n            Bindings.StopTracking();\n\n            ScrollViewer.UnregisterPropertyChangedCallback(ScrollViewer.ScrollableWidthProperty, _scrollableWidthChangedToken);\n        }\n\n        public ICommand AddCommand\n        {\n            get { return (ICommand)GetValue(MyPropertyProperty); }\n            set { SetValue(MyPropertyProperty, value); }\n        }\n\n        public ObservableCollection<TerminalViewModel> ItemsSource\n        {\n            get { return (ObservableCollection<TerminalViewModel>)GetValue(ItemsSourceProperty); }\n            set { SetValue(ItemsSourceProperty, value); }\n        }\n\n        public object SelectedItem\n        {\n            get { return GetValue(SelectedItemProperty); }\n            set { SetValue(SelectedItemProperty, value); }\n        }\n\n        private async void OnListViewSelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            if (!(ListView.SelectedItem is { } item)) return;\n\n            var container = ListView.ContainerFromItem(item);\n\n            while (container == null)\n            {\n                // We need to ConfigureAwait(true) because the UI thread is needed below.\n                await Task.Delay(30).ConfigureAwait(true);\n\n                container = ListView.ContainerFromItem(item);\n            }\n\n            ((UIElement)container).StartBringIntoView();\n\n            SetScrollButtonsEnabledState();\n        }\n\n        private void OnScrollableWidthChanged(DependencyObject sender, DependencyProperty property)\n        {\n            if (ScrollViewer.ScrollableWidth > 0)\n            {\n                ScrollLeftButton.Visibility = Visibility.Visible;\n                ScrollRightButton.Visibility = Visibility.Visible;\n            }\n            else\n            {\n                ScrollLeftButton.Visibility = Visibility.Collapsed;\n                ScrollRightButton.Visibility = Visibility.Collapsed;\n            }\n        }\n\n        private void OnScrollLeftButtonTapped(object sender, RoutedEventArgs e)\n        {\n            var offset = ScrollViewer.HorizontalOffset - 10;\n            ScrollViewer.ChangeView(offset, null, null);\n            SetScrollButtonsEnabledState();\n        }\n\n        private void OnScrollRightButtonTapped(object sender, RoutedEventArgs e)\n        {\n            var offset = ScrollViewer.HorizontalOffset + 10;\n            ScrollViewer.ChangeView(offset, null, null);\n            SetScrollButtonsEnabledState();\n        }\n\n        private void SetScrollButtonsEnabledState()\n        {\n            ScrollLeftButton.IsEnabled = ScrollViewer.HorizontalOffset > 0;\n            ScrollRightButton.IsEnabled = ScrollViewer.HorizontalOffset < ScrollViewer.ScrollableWidth;\n        }\n\n        #region Drag and drop support\n\n        public static bool ItemWasDropped { get; set; }\n\n        public event EventHandler<NewTabRequestedEventArgs> TabWindowChanged;\n        public event EventHandler<TerminalViewModel> TabDraggingCompleted;\n        public event TypedEventHandler<ListViewBase, DragItemsCompletedEventArgs> TabDraggedOutside;\n        public event EventHandler<bool> TabDraggingChanged;\n\n        private void ListView_DragEnter(object sender, DragEventArgs e)\n        {\n            Logger.Instance.Debug($\"ListView_DragEnter.\");\n            e.AcceptedOperation = DataPackageOperation.Move;\n            if (e.DragUIOverride is { } dragUiOverride)\n            {\n                dragUiOverride.IsGlyphVisible = false;\n                dragUiOverride.Caption = I18N.Translate(\"DropTabHere\");\n            }\n        }\n\n        private async void ListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e)\n        {\n            TabDraggingChanged?.Invoke(this, true);\n            ItemWasDropped = false;\n\n            Logger.Instance.Debug($\"ListView_DragItemsStarting. e.Data.RequestedOperation: {e.Data.RequestedOperation}. Items count: {e.Items.Count}.\");\n\n            var item = e.Items.FirstOrDefault();\n            if (item is TerminalViewModel model)\n            {\n                await model.TrayProcessCommunicationService.PauseTerminalOutputAsync(model.Terminal.Id, true);\n                e.Data.Properties.Add(Constants.TerminalViewModelStateId, await model.SerializeAsync());\n            }\n        }\n\n        private void ListView_DragItemsCompleted(ListViewBase sender, DragItemsCompletedEventArgs args)\n        {\n            TabDraggingChanged?.Invoke(this, false);\n            Logger.Instance.Debug($\"ListView_DragItemsCompleted. Drop result: {args.DropResult}. Items count: {args.Items.Count}\");\n\n            var item = args.Items.FirstOrDefault();\n            if (item is TerminalViewModel model)\n            {\n                if (ItemsSource.Count > 1 && !ItemWasDropped && args.DropResult == DataPackageOperation.None)\n                {\n                    TabDraggedOutside?.Invoke(sender, args);\n                    ItemWasDropped = true;\n                }\n\n                if (ItemWasDropped)\n                {\n                    TabDraggingCompleted?.Invoke(sender, model);\n                }\n\n                model.TrayProcessCommunicationService.PauseTerminalOutputAsync(model.Terminal.Id, false);\n            }\n        }\n\n        private double GetWidth(ListViewItem item)\n        {\n            return item.ActualWidth + item.Margin.Left + item.Margin.Right;\n        }\n\n        private int CalculateDropPosition(DragEventArgs e)\n        {\n            int index = 0;\n            Point position = e.GetPosition(ListView.ItemsPanelRoot);\n            for (int i = 0, posInParent = 0; i < ListView.Items.Count; ++i)\n            {\n                ListViewItem item = (ListViewItem)ListView.ContainerFromIndex(i);\n                int itemWidth = (int)GetWidth(item);\n                if (posInParent + itemWidth > position.X)\n                {\n                    index = i;\n                    break;\n                }\n                else\n                {\n                    posInParent += itemWidth;\n                }\n            }\n\n            ListViewItem targetItem = (ListViewItem)ListView.ContainerFromIndex(index);\n            Point posInItem = e.GetPosition(targetItem);\n            if (posInItem.X > GetWidth(targetItem) / 2)\n            {\n                index++;\n            }\n            return index;\n        }\n\n        private void ListView_Drop(object sender, DragEventArgs e)\n        {\n            Logger.Instance.Debug($\"ListView_Drop. e.AcceptedOperation: {e.AcceptedOperation}.\");\n            int dropIndex = CalculateDropPosition(e);\n            Logger.Instance.Debug($\"Tab dropped to index: {dropIndex}.\");\n            TabWindowChanged?.Invoke(sender, new NewTabRequestedEventArgs { DragEventArgs = e, Position = dropIndex });\n            ItemWasDropped = true;\n        }\n\n        #endregion Drag and drop support\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/TabBarBackgroundBindingHelper.cs",
    "content": "﻿using FluentTerminal.Models.Enums;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Views\n{\n    /// <summary>\n    /// see: https://stackoverflow.com/questions/33573929/uwp-binding-in-style-setter-not-working\n    /// </summary>\n    public static class TabBarBackgroundBindingHelper\n    {\n        public static readonly DependencyProperty BackgroundBindingPathProperty =\n            DependencyProperty.RegisterAttached(\"BackgroundBindingPath\", typeof(string), typeof(TabBarBackgroundBindingHelper), new PropertyMetadata(null, BindingPathPropertyChanged));\n\n        public static string GetBackgroundBindingPath(DependencyObject obj)\n        {\n            return (string)obj.GetValue(BackgroundBindingPathProperty);\n        }\n\n        public static void SetBackgroundBindingPath(DependencyObject obj, string value)\n        {\n            obj.SetValue(BackgroundBindingPathProperty, value);\n        }\n\n        private static void BindingPathPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)\n        {\n            if (e.NewValue is string propertyPath)\n            {\n                var binding = new Binding\n                {\n                    Path = new PropertyPath($\"Content.{propertyPath}\"),\n                    Mode = BindingMode.OneWay,\n                    RelativeSource = new RelativeSource\n                    {\n                        Mode = RelativeSourceMode.Self\n                    },\n                    Converter = (IValueConverter)Application.Current.Resources[\"TabColorFallbackConverter\"],\n                    ConverterParameter = TabThemeKey.Background.ToString()\n                };\n                BindingOperations.SetBinding(obj, ListViewItem.BackgroundProperty, binding);\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/TabThemeTemplateSelector.cs",
    "content": "﻿using FluentTerminal.Models;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public class TabThemeTemplateSelector : DataTemplateSelector\n    {\n        public DataTemplate DefaultTemplate { get; set; }\n        public DataTemplate ColoredTemplate { get; set; }\n\n        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)\n        {\n            return SelectTemplateCore(item);\n        }\n\n        protected override DataTemplate SelectTemplateCore(object item)\n        {\n            if (item is TabTheme tabTheme)\n            {\n                return tabTheme.Id == 0 ? DefaultTemplate : ColoredTemplate;\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/TemplateSelectors.xaml",
    "content": "﻿<ResourceDictionary\n    x:Class=\"FluentTerminal.App.Views.TemplateSelectors\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:models=\"using:FluentTerminal.Models\"\n    xmlns:settings=\"using:FluentTerminal.App.ViewModels.Settings\"\n    xmlns:views=\"using:FluentTerminal.App.Views\">\n    <views:TabThemeTemplateSelector x:Key=\"TabThemeTemplateSelector\">\n        <views:TabThemeTemplateSelector.DefaultTemplate>\n            <DataTemplate x:DataType=\"models:TabTheme\">\n                <StackPanel Orientation=\"Horizontal\">\n                    <FontIcon\n                        Margin=\"0,0,6,0\"\n                        FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                        Glyph=\"&#xF126;\" />\n                    <TextBlock Text=\"{x:Bind Name, Mode=OneTime, Converter={StaticResource I18NConverter}}\" />\n                </StackPanel>\n            </DataTemplate>\n        </views:TabThemeTemplateSelector.DefaultTemplate>\n        <views:TabThemeTemplateSelector.ColoredTemplate>\n            <DataTemplate x:DataType=\"models:TabTheme\">\n                <StackPanel Orientation=\"Horizontal\">\n                    <FontIcon\n                        Margin=\"0,0,6,0\"\n                        FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n                        Foreground=\"{x:Bind Color}\"\n                        Glyph=\"&#xF127;\" />\n                    <TextBlock Text=\"{x:Bind Name, Mode=OneTime, Converter={StaticResource I18NConverter}}\" />\n                </StackPanel>\n            </DataTemplate>\n        </views:TabThemeTemplateSelector.ColoredTemplate>\n    </views:TabThemeTemplateSelector>\n    <views:TerminalThemeTemplateSelector x:Key=\"TerminalThemeTemplateSelector\">\n        <views:TerminalThemeTemplateSelector.DefaultTemplate>\n            <DataTemplate x:DataType=\"models:TerminalTheme\">\n                <TextBlock FontStyle=\"Italic\" Text=\"{x:Bind Name}\" />\n            </DataTemplate>\n        </views:TerminalThemeTemplateSelector.DefaultTemplate>\n        <views:TerminalThemeTemplateSelector.ThemeTemplate>\n            <DataTemplate x:DataType=\"models:TerminalTheme\">\n                <TextBlock Text=\"{x:Bind Name}\" />\n            </DataTemplate>\n        </views:TerminalThemeTemplateSelector.ThemeTemplate>\n    </views:TerminalThemeTemplateSelector>\n    <views:TerminalKeybindTemplateSelector x:Key=\"TerminalKeybindTemplateSelector\">\n        <views:TerminalKeybindTemplateSelector.DefaultTemplate>\n            <DataTemplate x:DataType=\"settings:KeyBindingsViewModel\">\n                <TextBlock x:Uid=\"None\" FontStyle=\"Italic\" />\n            </DataTemplate>\n        </views:TerminalKeybindTemplateSelector.DefaultTemplate>\n        <views:TerminalKeybindTemplateSelector.KeyBindingsTemplate>\n            <DataTemplate x:DataType=\"settings:KeyBindingsViewModel\">\n                <views:KeyBindingsView\n                    Margin=\"0,6,0,0\"\n                    ShowCommandName=\"False\"\n                    ViewModel=\"{x:Bind}\" />\n            </DataTemplate>\n        </views:TerminalKeybindTemplateSelector.KeyBindingsTemplate>\n    </views:TerminalKeybindTemplateSelector>\n    <views:NoValueTemplateSelector x:Key=\"NoValueTemplateSelector\">\n        <views:NoValueTemplateSelector.DefaultTemplate>\n            <DataTemplate x:DataType=\"x:String\">\n                <TextBlock x:Uid=\"None\" FontStyle=\"Italic\" />\n            </DataTemplate>\n        </views:NoValueTemplateSelector.DefaultTemplate>\n        <views:NoValueTemplateSelector.CustomTemplate>\n            <DataTemplate x:DataType=\"x:String\">\n                <TextBlock Text=\"{x:Bind}\" />\n            </DataTemplate>\n        </views:NoValueTemplateSelector.CustomTemplate>\n    </views:NoValueTemplateSelector>\n    <views:BooleanTemplateSelector x:Key=\"UseConPtyTemplateSelector\">\n        <views:BooleanTemplateSelector.TrueTemplate>\n            <DataTemplate x:DataType=\"x:Boolean\">\n                <TextBlock x:Uid=\"Yes\" />\n            </DataTemplate>\n        </views:BooleanTemplateSelector.TrueTemplate>\n        <views:BooleanTemplateSelector.FalseTemplate>\n            <DataTemplate x:DataType=\"x:Boolean\">\n                <TextBlock x:Uid=\"No\" />\n            </DataTemplate>\n        </views:BooleanTemplateSelector.FalseTemplate>\n    </views:BooleanTemplateSelector>\n</ResourceDictionary>\n"
  },
  {
    "path": "FluentTerminal.App/Views/TemplateSelectors.xaml.cs",
    "content": "﻿namespace FluentTerminal.App.Views\n{\n    // Added due https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth#resource-dictionaries-with-xbind\n    public partial class TemplateSelectors\n    {\n        public TemplateSelectors()\n        {\n            InitializeComponent();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/TerminalColorPicker.xaml",
    "content": "﻿<UserControl\n    x:Class=\"FluentTerminal.App.Views.TerminalColorPicker\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"using:Microsoft.UI.Xaml.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    Margin=\"0,0,6,0\"\n    d:DesignHeight=\"24\"\n    d:DesignWidth=\"24\"\n    mc:Ignorable=\"d\">\n    <StackPanel Orientation=\"Horizontal\" ToolTipService.ToolTip=\"{x:Bind ColorName}\">\n        <Button\n            x:Name=\"Root\"\n            Width=\"24\"\n            Height=\"24\"\n            Background=\"{x:Bind ButtonBackground, Mode=OneWay}\"\n            IsEnabled=\"{x:Bind EnableEditing, Mode=OneWay}\"\n            Style=\"{StaticResource ColorPreviewButtonStyle}\">\n            <Button.Flyout>\n                <Flyout>\n                    <StackPanel>\n                        <TextBlock\n                            Margin=\"0,0,0,6\"\n                            Style=\"{StaticResource TitleTextBlockStyle}\"\n                            Text=\"{x:Bind ColorName}\" />\n                        <controls:ColorPicker\n                            x:Name=\"colorPicker\"\n                            ColorChanged=\"ColorPicker_ColorChanged\"\n                            IsAlphaEnabled=\"{x:Bind IsAlphaEnabled, Mode=OneWay}\"\n                            IsColorChannelTextInputVisible=\"False\" />\n                    </StackPanel>\n                </Flyout>\n            </Button.Flyout>\n        </Button>\n        <TextBlock\n            Margin=\"6,0,0,0\"\n            VerticalAlignment=\"Center\"\n            Text=\"{x:Bind ColorName}\"\n            Visibility=\"{x:Bind ShowName, Converter={StaticResource TrueToVisibleConverter}}\" />\n    </StackPanel>\n\n</UserControl>"
  },
  {
    "path": "FluentTerminal.App/Views/TerminalColorPicker.xaml.cs",
    "content": "﻿using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Controls;\nusing MUXC = Microsoft.UI.Xaml.Controls;\nusing FluentTerminal.App.Utilities;\n\nnamespace FluentTerminal.App.Views\n{\n    public sealed partial class TerminalColorPicker : UserControl\n    {\n        private bool _editing;\n\n        public static readonly DependencyProperty ColorNameProperty =\n            DependencyProperty.Register(nameof(ColorName), typeof(string), typeof(TerminalColorPicker), new PropertyMetadata(null));\n\n        public static readonly DependencyProperty EnableEditingProperty =\n            DependencyProperty.Register(nameof(EnableEditing), typeof(bool), typeof(TerminalColorPicker), new PropertyMetadata(false));\n\n        public static readonly DependencyProperty ShowNameProperty =\n            DependencyProperty.Register(nameof(ShowName), typeof(bool), typeof(TerminalColorPicker), new PropertyMetadata(false));\n\n        public static readonly DependencyProperty IsAlphaEnabledProperty =\n                    DependencyProperty.Register(nameof(IsAlphaEnabled), typeof(bool), typeof(TerminalColorPicker), new PropertyMetadata(false));\n\n        public static readonly DependencyProperty SelectedColorProperty =\n                    DependencyProperty.Register(nameof(SelectedColor), typeof(string), typeof(TerminalColorPicker), new PropertyMetadata(null, (s, e) =>\n                    {\n                        if (s is TerminalColorPicker terminalColorPicker)\n                        {\n                            if (!terminalColorPicker._editing && e.NewValue != null)\n                            {\n                                var color = ((string)e.NewValue).FromString();\n                                terminalColorPicker.colorPicker.Color = color;\n                            }\n                        }\n                    }));\n\n        public static readonly DependencyProperty ButtonBackgroundProperty =\n                    DependencyProperty.Register(nameof(ButtonBackground), typeof(Brush), typeof(TerminalColorPicker), new PropertyMetadata(false));\n\n\n        public TerminalColorPicker()\n        {\n            InitializeComponent();\n            Root.DataContext = this;\n        }\n\n        public string ColorName\n        {\n            get { return (string)GetValue(ColorNameProperty); }\n            set { SetValue(ColorNameProperty, value); }\n        }\n\n        public bool EnableEditing\n        {\n            get { return (bool)GetValue(EnableEditingProperty); }\n            set { SetValue(EnableEditingProperty, value); }\n        }\n\n        public bool ShowName\n        {\n            get { return (bool)GetValue(ShowNameProperty); }\n            set { SetValue(ShowNameProperty, value); }\n        }\n\n        public bool IsAlphaEnabled\n        {\n            get { return (bool)GetValue(IsAlphaEnabledProperty); }\n            set { SetValue(IsAlphaEnabledProperty, value); }\n        }\n\n        public string SelectedColor\n        {\n            get { return (string)GetValue(SelectedColorProperty); }\n            set\n            {\n                SetValue(SelectedColorProperty, value);\n                SetValue(ButtonBackgroundProperty, value);\n            }\n        }\n\n        public Brush ButtonBackground\n        {\n            get\n            {\n                if (SelectedColor == null)\n                {\n                    return (Brush)Application.Current.Resources[\"MissingColorSelectionBrush\"];\n                }\n                else\n                {\n                    return new SolidColorBrush(((string)GetValue(SelectedColorProperty)).FromString());\n                }\n            }\n        }\n\n        private void ColorPicker_ColorChanged(MUXC.ColorPicker sender, MUXC.ColorChangedEventArgs args)\n        {\n            _editing = true;\n            SelectedColor = args.NewColor.ToColorString(IsAlphaEnabled);\n            _editing = false;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/TerminalKeybindTemplateSelector.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public class TerminalKeybindTemplateSelector : DataTemplateSelector\n    {\n        public DataTemplate DefaultTemplate { get; set; }\n        public DataTemplate KeyBindingsTemplate { get; set; }\n\n        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)\n        {\n            return SelectTemplateCore(item);\n        }\n\n        protected override DataTemplate SelectTemplateCore(object item)\n        {\n            if (item is KeyBindingsViewModel keyBindings)\n            {\n                return keyBindings.KeyBindings.Count == 0 ? DefaultTemplate : KeyBindingsTemplate;\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/TerminalThemeTemplateSelector.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n    public class TerminalThemeTemplateSelector : DataTemplateSelector\n    {\n        public DataTemplate DefaultTemplate { get; set; }\n        public DataTemplate ThemeTemplate { get; set; }\n\n        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)\n        {\n            return SelectTemplateCore(item);\n        }\n\n        protected override DataTemplate SelectTemplateCore(object item)\n        {\n            if (item is TerminalTheme theme)\n            {\n                return theme.Id == Guid.Empty ? DefaultTemplate : ThemeTemplate;\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App/Views/TerminalView.xaml",
    "content": "﻿<UserControl\n    x:Class=\"FluentTerminal.App.Views.TerminalView\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:Core=\"using:Microsoft.Xaml.Interactions.Core\"\n    xmlns:Interactivity=\"using:Microsoft.Xaml.Interactivity\"\n    xmlns:actions=\"using:FluentTerminal.App.Actions\"\n    xmlns:controls=\"using:Microsoft.Toolkit.Uwp.UI.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:views=\"using:FluentTerminal.App.Views\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"600\"\n    mc:Ignorable=\"d\">\n\n    <Grid>\n        <Grid x:Name=\"TerminalContainer\" />\n\n        <views:OverlayView x:Name=\"MessageOverlay\" />\n\n        <controls:DropShadowPanel\n            Height=\"64\"\n            Margin=\"12\"\n            HorizontalAlignment=\"Right\"\n            VerticalAlignment=\"Top\"\n            ShadowOpacity=\"0.5\"\n            Visibility=\"{x:Bind ViewModel.ShowSearchPanel, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\"\n            Color=\"Black\">\n            <StackPanel\n                Padding=\"6\"\n                Background=\"{ThemeResource SystemControlBackgroundChromeMediumBrush}\"\n                CornerRadius=\"4\"\n                Orientation=\"Horizontal\">\n                <Viewbox\n                    Width=\"16\"\n                    Height=\"16\"\n                    Margin=\"6,0,0,0\">\n                    <SymbolIcon Symbol=\"Find\" />\n                </Viewbox>\n                <TextBox\n                    Name=\"SearchTextBox\"\n                    x:Uid=\"SearchTextBox\"\n                    Width=\"200\"\n                    Margin=\"6,0,6,0\"\n                    Background=\"Transparent\"\n                    BorderThickness=\"0\"\n                    IsTabStop=\"True\"\n                    KeyUp=\"OnSearchTextBoxKeyUp\"\n                    PlaceholderText=\"Enter search term\"\n                    Text=\"{x:Bind ViewModel.SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\"\n                    GotFocus=\"SearchTextBox_GotFocus\"\n                    LostFocus=\"SearchTextBox_LostFocus\">\n                    <Interactivity:Interaction.Behaviors>\n                        <Core:DataTriggerBehavior Binding=\"{x:Bind ViewModel.ShowSearchPanel, Mode=OneWay}\" Value=\"true\">\n                            <actions:FocusAction />\n                        </Core:DataTriggerBehavior>\n                    </Interactivity:Interaction.Behaviors>\n                </TextBox>\n\n                <ToggleButton\n                    x:Uid=\"SearchCaseSensitive\"\n                    Background=\"Transparent\"\n                    IsChecked=\"{x:Bind ViewModel.SearchMatchCase, Mode=TwoWay}\"\n                    ToolTipService.ToolTip=\"Case sensitive\">\n                    <Viewbox Width=\"16\" Height=\"16\">\n                        <TextBlock Text=\"Aa\" />\n                    </Viewbox>\n                </ToggleButton>\n                <ToggleButton\n                    x:Uid=\"SearchWholeWord\"\n                    Margin=\"2,0,2,0\"\n                    Background=\"Transparent\"\n                    IsChecked=\"{x:Bind ViewModel.SearchWholeWord, Mode=TwoWay}\"\n                    ToolTipService.ToolTip=\"Whole word\">\n                    <Viewbox Width=\"16\" Height=\"16\">\n                        <TextBlock Text=\"Ab\" TextDecorations=\"Underline\" />\n                    </Viewbox>\n                </ToggleButton>\n\n                <ToggleButton\n                    x:Uid=\"SearchWithRegex\"\n                    Background=\"Transparent\"\n                    IsChecked=\"{x:Bind ViewModel.SearchWithRegex, Mode=TwoWay}\"\n                    ToolTipService.ToolTip=\"Regex\">\n                    <Viewbox Width=\"16\" Height=\"16\">\n                        <TextBlock Text=\".*\" />\n                    </Viewbox>\n                </ToggleButton>\n\n                <Button\n                    Name=\"PreviousButton\"\n                    x:Uid=\"FindPrevious\"\n                    Margin=\"6,0,0,0\"\n                    Background=\"Transparent\"\n                    Command=\"{x:Bind ViewModel.FindPreviousCommand}\"\n                    ToolTipService.ToolTip=\"Find previous\">\n                    <Button.Content>\n                        <Viewbox Width=\"16\" Height=\"16\">\n                            <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xE971;\" />\n                        </Viewbox>\n                    </Button.Content>\n                </Button>\n                <Button\n                    x:Uid=\"FindNext\"\n                    Margin=\"0,0,6,0\"\n                    Background=\"Transparent\"\n                    Command=\"{x:Bind ViewModel.FindNextCommand}\"\n                    ToolTipService.ToolTip=\"Find next\">\n                    <Button.Content>\n                        <Viewbox Width=\"16\" Height=\"16\">\n                            <FontIcon FontFamily=\"{StaticResource SymbolThemeFontFamily}\" Glyph=\"&#xE972;\" />\n                        </Viewbox>\n                    </Button.Content>\n                </Button>\n\n                <Button\n                    x:Uid=\"CloseSearchPanel\"\n                    Background=\"Transparent\"\n                    Command=\"{x:Bind ViewModel.CloseSearchPanelCommand}\"\n                    ToolTipService.ToolTip=\"Close search panel\">\n                    <Button.Content>\n                        <Viewbox Width=\"16\" Height=\"16\">\n                            <SymbolIcon Symbol=\"Cancel\" />\n                        </Viewbox>\n                    </Button.Content>\n                </Button>\n            </StackPanel>\n        </controls:DropShadowPanel>\n\n        <controls:DropShadowPanel\n            Margin=\"12\"\n            HorizontalAlignment=\"Center\"\n            VerticalAlignment=\"Bottom\"\n            ShadowOpacity=\"0.5\"\n            Visibility=\"{x:Bind ViewModel.HasExitedWithError, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}\"\n            Color=\"Black\">\n            <StackPanel\n                Padding=\"6\"\n                CornerRadius=\"4\"\n                Orientation=\"Horizontal\">\n                <StackPanel.Background>\n                    <SolidColorBrush Color=\"{ThemeResource SystemAccentColor}\" />\n                </StackPanel.Background>\n                <TextBlock\n                    x:Uid=\"SessionDisconnected\"\n                    Margin=\"6,0,24,0\"\n                    VerticalAlignment=\"Center\"\n                    Text=\"Session disconnected\" />\n                <Button\n                    x:Uid=\"RestartSession\"\n                    Margin=\"0,0,6,0\"\n                    Command=\"{x:Bind ViewModel.ReconnectTabCommand, Mode=OneWay}\"\n                    Content=\"Restart\"\n                    IsEnabled=\"{x:Bind ViewModel.HasExitedWithError, Mode=OneWay}\" />\n                <Button Command=\"{x:Bind ViewModel.CloseCommand, Mode=OneWay}\" Content=\"{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=Close}\" />\n            </StackPanel>\n        </controls:DropShadowPanel>\n    </Grid>\n</UserControl>"
  },
  {
    "path": "FluentTerminal.App/Views/TerminalView.xaml.cs",
    "content": "﻿using FluentTerminal.App.ViewModels;\nusing System;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing FluentTerminal.Models.Messages;\nusing FluentTerminal.Models;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Media.Imaging;\nusing Windows.UI;\nusing Microsoft.Toolkit.Mvvm.Messaging;\n\nnamespace FluentTerminal.App.Views\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class TerminalView : UserControl,\n        IRecipient<KeyBindingsChangedMessage>,\n        IRecipient<TerminalOptionsChangedMessage>\n    {\n        private ITerminalView _terminalView;\n\n        public TerminalView(TerminalViewModel viewModel)\n        {\n            ViewModel = viewModel;\n            ViewModel.SearchStarted += OnSearchStarted;\n            ViewModel.Activated += OnActivated;\n            ViewModel.ThemeChanged += OnThemeChanged;\n            ViewModel.FindNextRequested += OnFindNextRequested;\n            ViewModel.FindPreviousRequested += OnFindPreviousRequested;\n            ViewModel.FontSizeChanged += OnFontSizeChanged;\n            InitializeComponent();\n            _terminalView = new XtermTerminalView();\n            TerminalContainer.Children.Add((UIElement)_terminalView);\n            _terminalView.InitializeAsync(ViewModel);\n            ViewModel.TerminalView = _terminalView;\n            ViewModel.Initialized = true;\n\n            SetGridBackgroundTheme(ViewModel.TerminalTheme);\n\n            viewModel.Overlay = (OverlayViewModel) MessageOverlay.DataContext;\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        public void DisposalPrepare()\n        {\n            Bindings.StopTracking();\n            TerminalContainer.Children.Remove((UIElement)_terminalView);\n            _terminalView?.Dispose();\n            _terminalView = null;\n\n            // Messenger.Default.Unregister(this); // todo do we need this?\n\n            ViewModel.SearchStarted -= OnSearchStarted;\n            ViewModel.Activated -= OnActivated;\n            ViewModel.ThemeChanged -= OnThemeChanged;\n            ViewModel.FindNextRequested -= OnFindNextRequested;\n            ViewModel.FindPreviousRequested -= OnFindPreviousRequested;\n            ViewModel.FontSizeChanged -= OnFontSizeChanged;\n\n            ViewModel = null;\n        }\n\n        public TerminalViewModel ViewModel { get; private set; }\n\n        private void OnActivated(object sender, EventArgs e)\n        {\n            _terminalView?.FocusTerminalAsync();\n        }\n\n        private void OnFindNextRequested(object sender, SearchRequest e)\n        {\n            _terminalView.FindNextAsync(e);\n        }\n\n        private void OnFindPreviousRequested(object sender, SearchRequest e)\n        {\n            _terminalView.FindPreviousAsync(e);\n        }\n\n        public void Receive(KeyBindingsChangedMessage message)\n        {\n            _terminalView.ChangeKeyBindingsAsync();\n        }\n\n        public void Receive(TerminalOptionsChangedMessage message)\n        {\n            _terminalView.ChangeOptionsAsync(message.TerminalOptions);\n        }\n\n        private void OnSearchStarted(object sender, EventArgs e)\n        {\n            SearchTextBox.Focus(FocusState.Programmatic);\n            SearchTextBox.SelectAll();\n        }\n\n        private void OnSearchTextBoxKeyUp(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)\n        {\n            if (e.Key == VirtualKey.Enter)\n            {\n                ViewModel.FindPreviousCommand.Execute(null);\n            }\n        }\n\n        private async void OnThemeChanged(object sender, TerminalTheme e)\n        {\n            await _terminalView.ChangeThemeAsync(e);\n            SetGridBackgroundTheme(e);\n        }\n\n        private async void OnFontSizeChanged(object sender, int e)\n        {\n            await _terminalView.ChangeFontSize(e);\n        }\n\n        private void SetGridBackgroundTheme(TerminalTheme terminalTheme)\n        {\n            var imageFile = terminalTheme.BackgroundImage;\n\n            Brush backgroundBrush;\n\n            if (imageFile != null && System.IO.File.Exists(imageFile.Path))\n            {\n                backgroundBrush = new ImageBrush()\n                {\n                    ImageSource = new BitmapImage(new Uri(\n                        imageFile.Path,\n                        UriKind.Absolute)),\n                    Stretch = Stretch.UniformToFill\n                };\n            }\n            else\n            {\n                backgroundBrush = new SolidColorBrush(Colors.Transparent);\n            }\n\n            TerminalContainer.Background = backgroundBrush;\n        }\n\n        private void SearchTextBox_GotFocus(object sender, RoutedEventArgs e)\n        {\n            if (ViewModel != null)\n                ViewModel.SearchHasFocus = true;\n        }\n\n        private void SearchTextBox_LostFocus(object sender, RoutedEventArgs e)\n        {\n            if (ViewModel != null)\n                ViewModel.SearchHasFocus = false;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App/Views/XtermTerminalView.xaml",
    "content": "﻿<UserControl\n    x:Class=\"FluentTerminal.App.Views.XtermTerminalView\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:local=\"using:FluentTerminal.App.Views\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    d:DesignHeight=\"300\"\n    d:DesignWidth=\"400\"\n    mc:Ignorable=\"d\">\n    <Grid x:Name=\"Root\" />\n</UserControl>\n"
  },
  {
    "path": "FluentTerminal.App/Views/XtermTerminalView.xaml.cs",
    "content": "﻿using FluentTerminal.App.Converters;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing FluentTerminal.RuntimeComponent.Enums;\nusing FluentTerminal.RuntimeComponent.Interfaces;\nusing FluentTerminal.RuntimeComponent.WebAllowedObjects;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Windows.Foundation;\nusing Windows.System;\nusing Windows.UI;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Views\n{\n    // ReSharper disable once RedundantExtendsListEntry\n    public sealed partial class XtermTerminalView : UserControl, IxtermEventListener, ITerminalView\n    {\n        private WebView _webView;\n        private readonly DelayedAction<TerminalOptions> _optionsChanged;\n        private TerminalBridge _terminalBridge;\n\n        private volatile bool _terminalClosed;\n\n        // Members related to initialization\n        private readonly TaskCompletionSource<object> _tcsConnected = new TaskCompletionSource<object>();\n        private readonly TaskCompletionSource<object> _tcsNavigationCompleted = new TaskCompletionSource<object>();\n\n        #region Resize handling\n\n        // Members related to resize handling\n        private static readonly TimeSpan ResizeDelay = TimeSpan.FromMilliseconds(60);\n        private readonly object _resizeLock = new object();\n        private TerminalSize _requestedSize;\n        private TerminalSize _setSize;\n        private DateTime _resizeScheduleTime;\n        private Task _resizeTask;\n        private MemoryStream _outputBlockedBuffer;\n\n        // Must be called from a code locked with _resizeLock\n        private void ScheduleResize(TerminalSize size, bool scheduleIfEqual)\n        {\n            if (!scheduleIfEqual && size.EquivalentTo(_requestedSize))\n            {\n                return;\n            }\n\n            _requestedSize = size;\n            _resizeScheduleTime = DateTime.UtcNow.Add(ResizeDelay);\n\n            if (_resizeTask == null)\n            {\n                _resizeTask = ResizeTask();\n            }\n        }\n\n        private async Task ResizeTask()\n        {\n            while (true)\n            {\n                TimeSpan delay;\n                TerminalSize size = null;\n\n                lock (_resizeLock)\n                {\n                    if (_requestedSize?.EquivalentTo(_setSize) ?? true)\n                    {\n                        // Resize finished. Unblock output and exit.\n\n                        if (_outputBlockedBuffer != null)\n                        {\n                            OnOutput?.Invoke(this, _outputBlockedBuffer.ToArray());\n\n                            _outputBlockedBuffer.Dispose();\n                            _outputBlockedBuffer = null;\n                        }\n\n                        _resizeTask = null;\n\n                        break;\n                    }\n\n                    delay = _resizeScheduleTime.Subtract(DateTime.UtcNow);\n\n                    // To avoid sleeping for only few milliseconds we're introducing a threshold of 10 milliseconds\n                    if (delay.TotalMilliseconds < 10)\n                    {\n                        _setSize = size = _requestedSize;\n\n                        if (_outputBlockedBuffer == null)\n                        {\n                            _outputBlockedBuffer = new MemoryStream();\n                        }\n                    }\n                }\n\n                if (size == null)\n                {\n                    await Task.Delay(delay).ConfigureAwait(false);\n                }\n                else\n                {\n                    await ViewModel.Terminal.SetSizeAsync(_requestedSize).ConfigureAwait(false);\n                }\n            }\n        }\n\n        #endregion Resize handling\n\n        public event EventHandler<object> OnOutput;\n        public event EventHandler<string> OnPaste;\n        public event EventHandler<string> OnSessionRestart;\n\n        public XtermTerminalView()\n        {\n            InitializeComponent();\n\n            _webView = new WebView(WebViewExecutionMode.SeparateThread)\n            {\n                DefaultBackgroundColor = Colors.Transparent\n            };\n            Root.Children.Add(_webView);\n\n            _webView.NavigationCompleted += _webView_NavigationCompleted;\n            _webView.NavigationStarting += _webView_NavigationStarting;\n            _webView.NewWindowRequested += _webView_NewWindowRequested;\n\n            _optionsChanged = new DelayedAction<TerminalOptions>(async options =>\n            {\n                var serialized = JsonConvert.SerializeObject(options);\n                await ExecuteScriptAsync($\"changeOptions('{serialized}')\");\n            }, 100);\n\n            _webView.Navigate(new Uri(\"ms-appx-web:///Client/index.html\"));\n        }\n\n        public TerminalViewModel ViewModel { get; private set; }\n\n        public Task ChangeKeyBindingsAsync()\n        {\n            if (_terminalClosed)\n            {\n                return Task.CompletedTask;\n            }\n\n            var keyBindings = ViewModel.SettingsService.GetCommandKeyBindings();\n            var profiles = ViewModel.SettingsService.GetShellProfiles();\n            var sshprofiles = ViewModel.SettingsService.GetSshProfiles();\n            var serialized = JsonConvert.SerializeObject(FlattenKeyBindings(keyBindings, profiles, sshprofiles));\n            return ExecuteScriptAsync($\"changeKeyBindings('{serialized}')\");\n        }\n\n        public Task ChangeOptionsAsync(TerminalOptions options)\n        {\n            if (_terminalClosed)\n            {\n                return Task.CompletedTask;\n            }\n\n            return _optionsChanged.InvokeAsync(options);\n        }\n\n        public Task ChangeThemeAsync(TerminalTheme theme)\n        {\n            if (_terminalClosed)\n            {\n                return Task.CompletedTask;\n            }\n\n            var serialized = JsonConvert.SerializeObject(theme.Colors);\n            return ExecuteScriptAsync($\"changeTheme('{serialized}')\");\n        }\n\n        public Task ChangeFontSize(int fontSize)\n        {\n            if (_terminalClosed)\n            {\n                return Task.CompletedTask;\n            }\n\n            return ExecuteScriptAsync($\"setFontSize({fontSize})\");\n        }\n\n        public Task<string> SerializeXtermStateAsync()\n        {\n            if (_terminalClosed)\n            {\n                return Task.FromResult(string.Empty);\n            }\n\n            return ExecuteScriptAsync(@\"serializeTerminal()\");\n        }\n\n        public Task FindNextAsync(SearchRequest request)\n        {\n            if (_terminalClosed)\n            {\n                return Task.CompletedTask;\n            }\n\n            return ExecuteScriptAsync($\"findNext('{request.Term}', {request.MatchCase.ToString().ToLower()}, {request.WholeWord.ToString().ToLower()}, {request.Regex.ToString().ToLower()})\");\n        }\n\n        public Task FindPreviousAsync(SearchRequest request)\n        {\n            if (_terminalClosed)\n            {\n                return Task.CompletedTask;\n            }\n\n            return ExecuteScriptAsync($\"findPrevious('{request.Term}', {request.MatchCase.ToString().ToLower()}, {request.WholeWord.ToString().ToLower()}, {request.Regex.ToString().ToLower()})\");\n        }\n\n        public Task FocusTerminalAsync()\n        {\n            if (_terminalClosed)\n            {\n                return Task.CompletedTask;\n            }\n\n            if (_webView != null)\n            {\n                _webView.Focus(FocusState.Programmatic);\n                return ExecuteScriptAsync(\"document.focus();\");\n            }\n\n            return Task.CompletedTask;\n        }\n\n        private const string OpenSSH = \"OpenSSH\";\n\n        public async Task ReconnectAsync()\n        {\n            if (ViewModel.ShellProfile.Location.Contains(OpenSSH))\n            {\n                OnSessionRestart?.Invoke(this, OpenSSH);\n\n                await Task.Delay(500).ConfigureAwait(false);\n\n                Terminal_OutputReceived(this, System.Text.Encoding.UTF8.GetBytes(\"\\n\\x1b[2EReconnecting current session...\\n\\x1b[E\"));\n            }\n            else\n            {\n                // Fill full screen with new output to not allow erasing of available output on start of new shell\n                Terminal_OutputReceived(this, System.Text.Encoding.UTF8.GetBytes(new String('\\n', _requestedSize.Rows + 1)));\n            }\n\n            if (true == await StartShellProcessAsync(_requestedSize).ConfigureAwait(false))\n            {\n                ViewModel.Terminal.Reconnect();\n            }\n        }\n\n        public async Task InitializeAsync(TerminalViewModel viewModel)\n        {\n            ViewModel = viewModel;\n            ViewModel.Terminal.OutputReceived += Terminal_OutputReceived;\n            ViewModel.Terminal.RegisterSelectedTextCallback(() => ExecuteScriptAsync(\"term.getSelection()\"));\n            ViewModel.Terminal.Closed += Terminal_Closed;\n\n            _webView.SetBinding(ContextFlyoutProperty, new Binding\n            {\n                Converter = (IValueConverter)Application.Current.Resources[\"MenuViewModelToFlyoutMenuConverter\"],\n                Mode = BindingMode.OneWay,\n                Source = ViewModel,\n                Path = new PropertyPath(nameof(TerminalViewModel.ContextMenu))\n            });\n\n            var options = ViewModel.SettingsService.GetTerminalOptions();\n            var keyBindings = ViewModel.SettingsService.GetCommandKeyBindings();\n            var profiles = ViewModel.SettingsService.GetShellProfiles();\n            var sshprofiles = ViewModel.SettingsService.GetSshProfiles();\n            var theme = ViewModel.TerminalTheme;\n\n            // Waiting for WebView.NavigationCompleted event to happen\n            await _tcsNavigationCompleted.Task.ConfigureAwait(false);\n\n            var size = await CreateXtermViewAsync(options, theme.Colors,\n                FlattenKeyBindings(keyBindings, profiles, sshprofiles)).ConfigureAwait(false);\n\n            // Waiting for IxtermEventListener.OnInitialized() call to happen\n            await _tcsConnected.Task;\n\n            lock (_resizeLock)\n            {\n                // Check to see if some resizing has happened meanwhile\n                if (_requestedSize != null)\n                {\n                    size = _requestedSize;\n                }\n                else\n                {\n                    _requestedSize = size;\n                }\n            }\n\n            if (false == await StartShellProcessAsync(size).ConfigureAwait(false))\n            {\n                return;\n            }\n\n            lock (_resizeLock)\n            {\n                // Check to see if some resizing has happened meanwhile\n                if (!size.EquivalentTo(_requestedSize))\n                {\n                    ScheduleResize(_requestedSize, true);\n                }\n                else\n                {\n                    _setSize = size;\n                }\n            }\n\n            if (ViewModel.ShellProfile?.Tag is ISessionSuccessTracker tracker)\n            {\n                tracker.SetSuccessfulSessionStart();\n            }\n\n            await Dispatcher.ExecuteAsync(() => _webView.Focus(FocusState.Programmatic)).ConfigureAwait(false);\n        }\n\n        public void DisposalPrepare()\n        {\n            if (_terminalBridge != null)\n            {\n                _terminalBridge.DisposalPrepare();\n                _terminalBridge = null;\n            }\n            _optionsChanged.Dispose();\n            ViewModel = null;\n        }\n\n        void IxtermEventListener.OnKeyboardCommand(string command)\n        {\n            if (_terminalClosed)\n            {\n                return;\n            }\n\n            Logger.Instance.Debug(\"Received keyboard command: '{command}'\", command);\n\n            if (Enum.TryParse(command, true, out Command commandValue))\n            {\n                ViewModel.Terminal.ProcessKeyboardCommand(commandValue.ToString());\n            }\n            else if (Guid.TryParse(command, out Guid shellProfileId))\n            {\n                ViewModel.Terminal.ProcessKeyboardCommand(shellProfileId.ToString());\n            }\n        }\n\n        void IxtermEventListener.OnMouseClick(MouseButton mouseButton, int x, int y, bool hasSelection, string hoveredUri)\n        {\n            if (_terminalClosed)\n            {\n                return;\n            }\n\n            var action = MouseAction.None;\n\n            switch (mouseButton)\n            {\n                case MouseButton.Middle:\n                    action = ViewModel.ApplicationSettings.MouseMiddleClickAction;\n                    break;\n                case MouseButton.Right:\n                    action = ViewModel.ApplicationSettings.MouseRightClickAction;\n                    break;\n            }\n\n            if (action == MouseAction.ContextMenu)\n            {\n                Dispatcher.ExecuteAsync(() => ShowContextMenu(x, y, hasSelection, hoveredUri), enforceNewSchedule: true);\n            }\n            else if (action == MouseAction.Paste)\n            {\n                ((IxtermEventListener)this).OnKeyboardCommand(nameof(Command.Paste));\n            }\n            else if (action == MouseAction.CopySelectionOrPaste)\n            {\n                if (hasSelection)\n                {\n                    ((IxtermEventListener)this).OnKeyboardCommand(nameof(Command.Copy));\n                }\n                else\n                {\n                    ((IxtermEventListener)this).OnKeyboardCommand(nameof(Command.Paste));\n                }\n            }\n        }\n\n        async void IxtermEventListener.OnSelectionChanged(string selection)\n        {\n            if (_terminalClosed)\n            {\n                return;\n            }\n\n            if (!string.IsNullOrEmpty(selection) && ViewModel.ApplicationSettings.CopyOnSelect && !ViewModel.ShowSearchPanel)\n            {\n                await ViewModel.CopyTextAsync(selection).ConfigureAwait(false);\n                await ExecuteScriptAsync(\"term.clearSelection()\").ConfigureAwait(false);\n            }\n        }\n\n        void IxtermEventListener.OnTerminalResized(int columns, int rows)\n        {\n            if (_terminalClosed)\n            {\n                return;\n            }\n\n            var size = new TerminalSize {Columns = columns, Rows = rows};\n\n            lock (_resizeLock)\n            {\n                if (_setSize == null)\n                {\n                    // Initialization not finished yet\n                    _requestedSize = size;\n                }\n                else\n                {\n                    ScheduleResize(size, false);\n                }\n            }\n        }\n\n        void IxtermEventListener.OnInitialized()\n        {\n            _tcsConnected.TrySetResult(null);\n        }\n\n        void IxtermEventListener.OnTitleChanged(string title)\n        {\n            if (_terminalClosed)\n            {\n                return;\n            }\n\n            ViewModel.Terminal.SetTitle(title);\n        }\n\n        private void _webView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)\n        {\n            Logger.Instance.Debug(\"WebView navigation completed. Target: {uri}\", args.Uri);\n            _tcsNavigationCompleted.TrySetResult(null);\n        }\n\n        private void _webView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)\n        {\n            _terminalBridge = new TerminalBridge(this);\n            _webView.AddWebAllowedObject(\"terminalBridge\", _terminalBridge);\n        }\n\n        private void _webView_NewWindowRequested(WebView sender, WebViewNewWindowRequestedEventArgs args)\n        {\n            args.Handled = true;\n            // ReSharper disable once AssignmentIsFullyDiscarded\n            _ = Launcher.LaunchUriAsync(args.Uri);\n        }\n\n        private Task<TerminalSize> CreateXtermViewAsync(TerminalOptions options, TerminalColors theme, IEnumerable<KeyBinding> keyBindings)\n        {\n            var serializedOptions = JsonConvert.SerializeObject(options);\n            var serializedTheme = JsonConvert.SerializeObject(theme);\n            var serializedKeyBindings = JsonConvert.SerializeObject(keyBindings);\n            return ExecuteScriptAsync(\n                    $\"createTerminal('{serializedOptions}', '{serializedTheme}', '{serializedKeyBindings}')\")\n                .ContinueWith(t => JsonConvert.DeserializeObject<TerminalSize>(t.Result));\n        }\n\n        private async Task<string> ExecuteScriptAsync(string script)\n        {\n            if (_terminalClosed)\n            {\n                return string.Empty;\n            }\n\n            try\n            {\n                var scriptTask = await Dispatcher.ExecuteAsync(() => _webView.InvokeScriptAsync(\"eval\", new[] {script}))\n                    .ConfigureAwait(false);\n\n                \n                return await scriptTask;\n            }\n            catch (Exception e)\n            {\n                Logger.Instance.Error($\"Exception while running:\\n \\\"{script}\\\"\\n\\n {e}\");\n            }\n\n            return string.Empty;\n        }\n\n        private IEnumerable<KeyBinding> FlattenKeyBindings(IDictionary<string, ICollection<KeyBinding>> commandKeyBindings, IEnumerable<ShellProfile> profiles, IEnumerable<SshProfile> sshprofiles)\n        {\n            return commandKeyBindings.Values.SelectMany(k => k).Concat(profiles.SelectMany(x => x.KeyBindings).Concat(sshprofiles.SelectMany(x => x.KeyBindings)));\n        }\n\n        private void ShowContextMenu(int x, int y, bool terminalHasSelection, string hoveredUri)\n        {\n            ViewModel.HoveredUri = hoveredUri;\n            ViewModel.HasSelection = terminalHasSelection;\n            var flyout = (MenuFlyout)_webView.ContextFlyout;\n            flyout.ShowAt(_webView, new Point(x, y));\n        }\n\n        private void Terminal_Closed(object sender, EventArgs e)\n        {\n            _terminalClosed = true;\n\n            ViewModel.Terminal.Closed -= Terminal_Closed;\n            ViewModel.Terminal.OutputReceived -= Terminal_OutputReceived;\n            ViewModel.Terminal.RegisterSelectedTextCallback(null);\n\n            ViewModel.ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                _webView.NavigationCompleted -= _webView_NavigationCompleted;\n                _webView.NavigationStarting -= _webView_NavigationStarting;\n                _webView.NewWindowRequested -= _webView_NewWindowRequested;\n\n                _webView?.Navigate(new Uri(\"about:blank\"));\n                Root.Children.Remove(_webView);\n                _webView = null;\n                \n                if (Window.Current.Content is Frame frame && frame.Content is Page mainPage)\n                {\n                    if (mainPage.Resources[\"TerminalViewModelToViewConverter\"] is TerminalViewModelToViewConverter converter)\n                    {\n                        converter.RemoveTerminal(ViewModel);\n                    }\n                }\n            });\n        }\n\n        private void Terminal_OutputReceived(object sender, byte[] e)\n        {\n            if (_terminalClosed)\n            {\n                return;\n            }\n\n            lock (_resizeLock)\n            {\n                if (_outputBlockedBuffer != null)\n                {\n                    _outputBlockedBuffer.Write(e, 0, e.Length);\n\n                    return;\n                }\n            }\n\n            OnOutput?.Invoke(this, e);\n        }\n\n        void IxtermEventListener.OnError(string error)\n        {\n            Logger.Instance.Error(error);\n        }\n\n        public void OnInput(byte[] data)\n        {\n            if (_terminalClosed)\n            {\n                return;\n            }\n\n            ViewModel.Terminal.Write(data);\n        }\n\n        public void Dispose()\n        {\n            _outputBlockedBuffer?.Dispose();\n        }\n\n        public void Paste(string text) => OnPaste?.Invoke(this, text);\n\n        private async Task<bool> StartShellProcessAsync(TerminalSize size)\n        {\n            var sessionType = ViewModel.ShellProfile.UseConPty &&\n                ViewModel.ApplicationView.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 7)\n                    ? SessionType.ConPty\n                    : SessionType.WinPty;\n\n            var response = await ViewModel.Terminal.StartShellProcessAsync(ViewModel.ShellProfile, size, sessionType, ViewModel.XtermBufferState).ConfigureAwait(false);\n            if (!response.Success)\n            {\n                await Dispatcher.ExecuteAsync(async () =>\n                        await ViewModel.DialogService.ShowMessageDialogAsync(\"Error\", response.Error, DialogButton.OK))\n                    .ConfigureAwait(false);\n\n                ViewModel.Terminal.ReportLauchFailed();\n                return false;\n            }\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Adapters/ApplicationDataContainerAdapter.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Storage;\nusing FluentTerminal.App.Services.Utilities;\n\nnamespace FluentTerminal.App.Services.Adapters\n{\n    public class ApplicationDataContainerAdapter : IApplicationDataContainer\n    {\n        private readonly ApplicationDataContainer _applicationDataContainer;\n\n        public ApplicationDataContainerAdapter(ApplicationDataContainer applicationDataContainer)\n        {\n            _applicationDataContainer = applicationDataContainer;\n        }\n\n        public void Delete(string key)\n        {\n            _applicationDataContainer.Values.Remove(key);\n        }\n\n        public void Clear()\n        {\n            _applicationDataContainer.Values.Clear();\n        }\n\n        public IEnumerable<object> GetAll()\n        {\n            return _applicationDataContainer.Values.Select(x => x.Value);\n        }\n\n        public T ReadValueFromJson<T>(string name, T fallbackValue)\n        {\n            if (_applicationDataContainer.Values.TryGetValue(name, out object value))\n            {\n                if (EqualityComparer<T>.Default.Equals(fallbackValue, default))\n                {\n                    fallbackValue = Activator.CreateInstance<T>();\n                }\n\n                JsonConvert.PopulateObject((string)value, fallbackValue);\n            }\n            return fallbackValue;\n        }\n\n        public void SetValue(string key, object value)\n        {\n            _applicationDataContainer.Values[key] = value;\n        }\n\n        public bool TryGetValue(string key, out object value)\n        {\n            return _applicationDataContainer.Values.TryGetValue(key, out value);\n        }\n\n        public void WriteValueAsJson<T>(string name, T value)\n        {\n            _applicationDataContainer.Values[name] = JsonConvert.SerializeObject(value,\n                PreserveDictionaryKeyCaseContractResolver.SerializerSettings);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/ApplicationDataContainers.cs",
    "content": "﻿namespace FluentTerminal.App.Services\n{\n    public class ApplicationDataContainers\n    {\n        public IApplicationDataContainer LocalSettings { get; set; }\n        public IApplicationDataContainer RoamingSettings { get; set; }\n        public IApplicationDataContainer Themes { get; set; }\n        public IApplicationDataContainer KeyBindings { get; set; }\n        public IApplicationDataContainer ShellProfiles { get; set; }\n        public IApplicationDataContainer SshProfiles { get; set; }\n        public IApplicationDataContainer HistoryContainer { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Constants.cs",
    "content": "﻿namespace FluentTerminal.App.Services\n{\n    public static class Constants\n    {\n        public const string ThemesContainerName = \"Themes\";\n        public const string KeyBindingsContainerName = \"KeyBindings\";\n        public const string ShellProfilesContainerName = \"ShellProfiles\";\n        public const string SshProfilesContainerName = \"SshProfiles\";\n        public const byte TerminalBufferRequestIdentifier = 0;\n        public const string SshCommandName = \"ssh\";\n        public const string MoshCommandName = \"mosh\";\n        public const string ExecutedCommandsContainerName = \"HistoryContainer\";\n        public const string TerminalViewModelStateId = \"TerminalViewModelState\";\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Dialogs/IAboutDialog.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n    public interface IAboutDialog\n    {\n        Task ShowAsync();\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Dialogs/ICreateKeyBindingDialog.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n    public interface ICreateKeyBindingDialog\n    {\n        Task<KeyBinding> CreateKeyBinding();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Dialogs/ICustomCommandDialog.cs",
    "content": "﻿using System.Threading.Tasks;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n    public interface ICustomCommandDialog\n    {\n        Task<ShellProfile> GetCustomCommandAsync(ShellProfile input = null);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Dialogs/IInputDialog.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n    public interface IInputDialog\n    {\n        void SetTitle(string title);\n        Task<string> GetInput();\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Dialogs/IMessageDialog.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n    public interface IMessageDialog\n    {\n        string Title { get; set; }\n        string Content { get; set; }\n\n        void AddButton(DialogButton button);\n\n        Task<DialogButton> ShowAsync();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Dialogs/ISshConnectionInfoDialog.cs",
    "content": "﻿using FluentTerminal.Models;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace FluentTerminal.App.Services.Dialogs\r\n{\r\n    public interface ISshConnectionInfoDialog\r\n    {\r\n        Task<SshProfile> GetSshConnectionInfoAsync(SshProfile input = null);\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.App.Services/EventArgs/CancelableEventArgs.cs",
    "content": "﻿namespace FluentTerminal.App.Services.EventArgs\n{\n    public class CancelableEventArgs : System.EventArgs\n    {\n        public bool Cancelled { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/EventArgs/NewTabRequestedEventArgs.cs",
    "content": "﻿using Windows.UI.Xaml;\n\nnamespace FluentTerminal.App.Services.EventArgs\n{\n    public class NewTabRequestedEventArgs : System.EventArgs\n    {\n        public DragEventArgs DragEventArgs { get; set; }\n        public int Position { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/EventArgs/NewWindowRequestedEventArgs.cs",
    "content": "﻿using System;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.Services.EventArgs\n{\n    public class NewWindowRequestedEventArgs : System.EventArgs\n    {\n        public ShellProfile Profile { get; }\n\n        public NewWindowRequestedEventArgs(ShellProfile profile) =>\n            Profile = profile ?? throw new ArgumentNullException(nameof(profile));\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Exceptions/ParseThemeException.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.Services.Exceptions\n{\n    public class ParseThemeException : Exception\n    {\n        public ParseThemeException() : base()\n        {\n        }\n\n        public ParseThemeException(string message) : base(message)\n        {\n        }\n\n        public ParseThemeException(string message, Exception innerException) : base(message, innerException)\n        {\n        }\n\n        protected ParseThemeException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context)\n        {\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Exceptions/ReadTextFileException.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.Services.Exceptions\n{\n    public class ReadTextFileException : Exception\n    {\n        public ReadTextFileException() : base()\n        {\n        }\n\n        public ReadTextFileException(string message) : base(message)\n        {\n        }\n\n        public ReadTextFileException(string message, Exception innerException) : base(message, innerException)\n        {\n        }\n\n        protected ReadTextFileException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Exceptions/SaveTextFileException.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.Services.Exceptions\n{\n    public class SaveTextFileException : Exception\n    {\n        public SaveTextFileException() : base()\n        {\n        }\n\n        public SaveTextFileException(string message) : base(message)\n        {\n        }\n\n        public SaveTextFileException(string message, Exception innerException) : base(message, innerException)\n        {\n        }\n\n        protected SaveTextFileException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/FluentTerminal.App.Services.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n    <LangVersion>7.1</LangVersion>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.CSharp\" Version=\"4.7.0\" />\n    <PackageReference Include=\"Microsoft.Toolkit.Mvvm\" Version=\"7.1.2\" />\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.2\" />\n    <PackageReference Include=\"PListNet\" Version=\"3.2.0\" />\n    <PackageReference Include=\"RestSharp\" Version=\"107.3.0\" />\n    <PackageReference Include=\"Serilog.Sinks.Async\" Version=\"1.5.0\" />\n    <PackageReference Include=\"Serilog.Sinks.File\" Version=\"5.0.0\" />\n    <PackageReference Include=\"System.Runtime.InteropServices.WindowsRuntime\" Version=\"4.3.0\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\FluentTerminal.Models\\FluentTerminal.Models.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <Reference Include=\"Windows.Foundation.FoundationContract\">\n      <HintPath>$(MSBuildProgramFiles32)\\Windows Kits\\10\\References\\10.0.19041.0\\Windows.Foundation.FoundationContract\\4.0.0.0\\Windows.Foundation.FoundationContract.winmd</HintPath>\n      <Private>False</Private>\n    </Reference>\n    <Reference Include=\"Windows.Foundation.UniversalApiContract\">\n      <HintPath>$(MSBuildProgramFiles32)\\Windows Kits\\10\\References\\10.0.19041.0\\Windows.Foundation.UniversalApiContract\\10.0.0.0\\Windows.Foundation.UniversalApiContract.winmd</HintPath>\n      <Private>False</Private>\n    </Reference>\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "FluentTerminal.App.Services/IAppServiceConnection.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Windows.Foundation.Collections;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IAppServiceConnection\n    {\n        event EventHandler<ValueSet> MessageReceived;\n\n        Task<ValueSet> SendMessageAsync(ValueSet message);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IApplicationDataContainer.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IApplicationDataContainer\n    {\n        T ReadValueFromJson<T>(string name, T fallbackValue);\n\n        void WriteValueAsJson<T>(string name, T value);\n\n        bool TryGetValue(string key, out object value);\n\n        void SetValue(string key, object value);\n\n        void Delete(string key);\n\n        void Clear();\n\n        IEnumerable<object> GetAll();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IApplicationLanguageService.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IApplicationLanguageService\n    {\n        IEnumerable<string> Languages { get; }\n\n        void SetLanguage(string language);\n\n        string GetCurrentLanguage();\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/IApplicationView.cs",
    "content": "﻿using FluentTerminal.App.Services.EventArgs;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\n\nnamespace FluentTerminal.App.Services\n{\n    public delegate Task CloseRequestedHandler(object sender, CancelableEventArgs args);\n\n    public interface IApplicationView\n    {\n        event CloseRequestedHandler CloseRequested;\n        event EventHandler Closed;\n\n        int Id { get; }\n        string Title { get; set; }\n\n        Task ExecuteOnUiThreadAsync(Action action, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal,\n            bool enforceNewSchedule = false);\n\n        Task<T> ExecuteOnUiThreadAsync<T>(Func<T> func, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal,\n            bool enforceNewSchedule = false);\n\n        Task<bool> TryCloseAsync();\n\n        bool ToggleFullScreen();\n        bool IsApiContractPresent(string api, ushort version);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IClipboardService.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IClipboardService\n    {\n        Task<string> GetTextAsync();\n\n        void SetText(string text);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/ICommandHistoryService.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface ICommandHistoryService\n    {\n        /// <summary>\n        /// Returns the most recent <paramref name=\"top\"/> commands from history.\n        /// </summary>\n        /// <param name=\"includeProfiles\">Indicates if never used saved profiles should also be returned.</param>\n        /// <param name=\"top\">Maximal number of items to return.</param>\n        /// <param name=\"profilesProvider\">List of all saved profiles. If this argument isn't specified, the method will\n        /// get the list from <see cref=\"ISettingsService\"/>. The purpose of this argument is to avoid loading the\n        /// profiles from settings again (since it includes file system access and JSON deserialization), if we\n        /// already have them loaded.</param>\n        List<ExecutedCommand> GetHistoryRecentFirst(bool includeProfiles = false, int top = int.MaxValue,\n            Func<List<ShellProfile>> profilesProvider = null);\n\n        /// <summary>\n        /// Returns the most used <paramref name=\"top\"/> commands from history.\n        /// </summary>\n        /// <param name=\"includeProfiles\">Indicates if never used saved profiles should also be returned.</param>\n        /// <param name=\"top\">Maximal number of items to return.</param>\n        /// <param name=\"profilesProvider\">List of all saved profiles. If this argument isn't specified, the method will\n        /// get the list from <see cref=\"ISettingsService\"/>. The purpose of this argument is to avoid loading the\n        /// profiles from settings again (since it includes file system access and JSON deserialization), if we\n        /// already have them loaded.</param>\n        List<ExecutedCommand> GetHistoryMostUsedFirst(bool includeProfiles = false, int top = int.MaxValue,\n            Func<List<ShellProfile>> profilesProvider = null);\n\n        void MarkUsed(ShellProfile profile);\n\n        void Delete(ExecutedCommand executedCommand);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IDefaultValueProvider.cs",
    "content": "﻿using FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IDefaultValueProvider\n    {\n        ApplicationSettings GetDefaultApplicationSettings();\n\n        ICollection<KeyBinding> GetDefaultKeyBindings(Command command);\n\n        Guid GetDefaultShellProfileId();\n\n        IEnumerable<TabTheme> GetDefaultTabThemes();\n\n        TerminalOptions GetDefaultTerminalOptions();\n\n        Guid GetDefaultThemeId();\n\n        IEnumerable<ShellProfile> GetPreinstalledShellProfiles();\n\n        IEnumerable<TerminalTheme> GetPreInstalledThemes();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IDialogService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public enum DialogButton\n    {\n        // ReSharper disable once InconsistentNaming\n        OK,\n        Cancel\n    }\n\n    public interface IDialogService\n    {\n        Task<DialogButton> ShowMessageDialogAsync(string title, string content, params DialogButton[] buttons);\n\n        Task<KeyBinding> ShowCreateKeyBindingDialog();\n\n        Task<string> ShowInputDialogAsync(string title);\n\n        Task<SshProfile> ShowSshConnectionInfoDialogAsync(SshProfile input = null);\n\n        Task<ShellProfile> ShowCustomCommandDialogAsync(ShellProfile input = null);\n\n        Task ShowAboutDialogAsync();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IFileSystemService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IFileSystemService\n    {\n        Task<File> OpenFileAsync(IEnumerable<string> fileTypes);\n\n        Task<string> BrowseForDirectoryAsync();\n\n        Task SaveTextFileAsync(string name, string fileTypeDescription, string fileType, string content);\n\n        Task<ImageFile> SaveImageInRoamingAsync(ImageFile imageFile);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IImageFileSystemService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IImageFileSystemService\n    {\n        Task<ImageFile> ImportTemporaryImageFileAsync(IEnumerable<string> fileTypes);\n\n        Task RemoveTemporaryBackgroundThemeImageAsync();\n\n        Task RemoveImportedImageAsync(string fileName);\n\n        string EncodeImage(ImageFile imageFile);\n\n        Task<ImageFile> ImportThemeImageAsync(ImageFile backgroundImage, string encodedImage);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/IKeyboardCommandService.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IKeyboardCommandService\n    {\n        void RegisterCommandHandler(string command, Action handler);\n\n        void SendCommand(string command);\n        void DeregisterCommandHandler(string command);\n        void ClearCommandHandlers();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/INotificationService.cs",
    "content": "﻿namespace FluentTerminal.App.Services\n{\n    public interface INotificationService\n    {\n        void ShowNotification(string title, string content, string url = null);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/ISettingsService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System;\nusing System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface ISettingsService\n    {\n        void DeleteShellProfile(Guid id);\n        void DeleteSshProfile(Guid id);\n        void DeleteTheme(Guid id);\n        ApplicationSettings GetApplicationSettings();\n        TerminalTheme GetCurrentTheme();\n        Guid GetCurrentThemeId();\n        ShellProfile GetDefaultShellProfile();\n        Guid GetDefaultShellProfileId();\n        IDictionary<string, ICollection<KeyBinding>> GetCommandKeyBindings();\n        IEnumerable<ShellProfile> GetShellProfiles();\n        IEnumerable<SshProfile> GetSshProfiles();\n        /// <summary>\n        /// Returns union of <see cref=\"GetShellProfiles\"/> and <see cref=\"GetSshProfiles\"/>.\n        /// </summary>\n        IEnumerable<ShellProfile> GetAllProfiles();\n        IEnumerable<TabTheme> GetTabThemes();\n        TerminalOptions GetTerminalOptions();\n        TerminalTheme GetTheme(Guid id);\n        IEnumerable<TerminalTheme> GetThemes();\n        void ResetKeyBindings();\n        void SaveApplicationSettings(ApplicationSettings applicationSettings);\n        void NotifyApplicationSettingsChanged(ApplicationSettings applicationSettings);\n        void SaveCurrentThemeId(Guid id);\n        void SaveDefaultShellProfileId(Guid id);\n        void SaveKeyBindings(string command, ICollection<KeyBinding> keyBindings);\n        void SaveShellProfile(ShellProfile shellProfile, bool newShell = false);\n        void SaveSshProfile(SshProfile sshProfile, bool newShell = false);\n        void SaveTerminalOptions(TerminalOptions terminalOptions);\n        void SaveTheme(TerminalTheme theme, bool newTheme = false);\n        ShellProfile GetShellProfile(Guid id);\n        SshProfile GetSshProfile(Guid id);\n        string ExportSettings();\n        void ImportSettings(string serializedSettings);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IShellProfileMigrationService.cs",
    "content": "﻿using FluentTerminal.Models;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IShellProfileMigrationService\n    {\n        void Migrate(ShellProfile profile);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/IStartupTaskService.cs",
    "content": "﻿using FluentTerminal.Models.Enums;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IStartupTaskService\n    {\n        Task DisableStartupTaskAsync();\n        Task<StartupTaskStatus> EnableStartupTaskAsync();\n        Task<StartupTaskStatus> GetStatusAsync();\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/ISystemFontService.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface ISystemFontService\n    {\n        IEnumerable<string> GetSystemFontFamilies();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IThemeParser.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IThemeParser\n    {\n        IEnumerable<string> SupportedFileTypes { get; }\n\n        Task<TerminalTheme> Parse(string fileName, Stream fileContent);\n\n        Task<ExportedTerminalTheme> Import(string fileName, Stream fileContent);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IThemeParserFactory.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IThemeParserFactory\n    {\n        IEnumerable<string> SupportedFileTypes { get; }\n\n        IThemeParser GetParser(string fileType);\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/ITrayProcessCommunicationService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing FluentTerminal.Models.Responses;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface ITrayProcessCommunicationService\n    {\n        event EventHandler<TerminalExitStatus> TerminalExited;\n\n        void Initialize(IAppServiceConnection appServiceConnection);\n\n        Task<CreateTerminalResponse> CreateTerminalAsync(byte id, TerminalSize size, ShellProfile shellProfile,\n            SessionType sessionType);\n\n        Task<PauseTerminalOutputResponse> PauseTerminalOutputAsync(byte id, bool pause);\n\n        Task ResizeTerminalAsync(byte id, TerminalSize size);\n\n        Task UpdateToggleWindowKeyBindingsAsync();\n\n        Task WriteAsync(byte terminalId, byte[] data);\n\n        void SubscribeForTerminalOutput(byte terminalId, Action<byte[]> callback);\n\n        void UnsubscribeFromTerminalOutput(byte terminalId);\n\n        Task CloseTerminalAsync(byte terminalId);\n\n        byte GetNextTerminalId();\n\n        Task<string> GetUserNameAsync();\n\n        Task SaveTextFileAsync(string path, string content);\n\n        Task<string> ReadTextFileAsync(string path);\n\n        Task<string> GetSshConfigDirAsync();\n\n        Task<string[]> GetFilesFromSshConfigDirAsync();\n\n        Task<bool> CheckFileExistsAsync(string path);\n\n        Task MuteTerminalAsync(bool mute);\n\n        void UpdateSettings(ApplicationSettings settings);\n\n        Task<string> GetCommandPathAsync(string command);\n\n        Task QuitApplicationAsync();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/IUpdateService.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services\n{\n    public interface IUpdateService\n    {\n        Task CheckForUpdateAsync(bool notifyNoUpdate = false);\n        Version GetCurrentVersion();\n        Task<Version> GetLatestVersionAsync();\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/DefaultValueProvider.cs",
    "content": "﻿using FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing System.Collections.Generic;\nusing Windows.Foundation.Metadata;\nusing Windows.Storage;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class DefaultValueProvider : IDefaultValueProvider\n    {\n        public ApplicationSettings GetDefaultApplicationSettings()\n        {\n            var logDirectoryPath = string.Empty;\n            try\n            {\n                // Accessing ApplicationData.Current during run of unit tests causes\n                // \"System.InvalidOperationException : The process has no package identity\" exception.\n                logDirectoryPath = ApplicationData.Current.LocalCacheFolder.Path;\n            } catch (InvalidOperationException) { }\n\n            return new ApplicationSettings\n            {\n                ConfirmClosingTabs = false,\n                ConfirmClosingWindows = false,\n                UnderlineSelectedTab = false,\n                InactiveTabColorMode = InactiveTabColorMode.Background,\n                NewTerminalLocation = NewTerminalLocation.Tab,\n                TabWindowCascadingAppMenu = true,\n                TabsPosition = TabsPosition.Top,\n                CopyOnSelect = false,\n                MouseMiddleClickAction = MouseAction.None,\n                MouseRightClickAction = MouseAction.ContextMenu,\n                ShowNewOutputIndicator = false,\n                EnableTrayIcon = true,\n                ShowCustomTitleInTitlebar = true,\n                UseMoshByDefault = true,\n                AutoFallbackToWindowsUsernameInLinks = true,\n                RTrimCopiedLines = true,\n                MuteTerminalBeeps = true,\n                EnableLogging = false,\n                PrintableOutputOnly = true,\n                LogDirectoryPath = logDirectoryPath,\n                UseConPty = true,\n                ShowTextCopied = false\n            };\n        }\n\n        public ICollection<KeyBinding> GetDefaultKeyBindings(Command command)\n        {\n            switch (command)\n            {\n                case Command.ToggleWindow:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.ToggleWindow),\n                        Key = (int)ExtendedVirtualKey.Scroll\n                    }\n                };\n\n                case Command.NextTab:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.NextTab),\n                        Ctrl = true,\n                        Key = (int)ExtendedVirtualKey.Tab\n                    }\n                };\n\n                case Command.PreviousTab:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.PreviousTab),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.Tab\n                    }\n                };\n\n                case Command.SwitchToTerm1:\n                case Command.SwitchToTerm2:\n                case Command.SwitchToTerm3:\n                case Command.SwitchToTerm4:\n                case Command.SwitchToTerm5:\n                case Command.SwitchToTerm6:\n                case Command.SwitchToTerm7:\n                case Command.SwitchToTerm8:\n                case Command.SwitchToTerm9:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = command.ToString(),\n                        Alt = true,\n                        Key = (int)ExtendedVirtualKey.Number1 + (command - Command.SwitchToTerm1)\n                    }\n                };\n\n                case Command.DuplicateTab:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.DuplicateTab),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.D\n                    }\n                };\n\n                case Command.ReconnectTab:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.ReconnectTab),\n                        Ctrl = true,\n                        Alt = true,\n                        Key = (int)ExtendedVirtualKey.R\n                    }\n                };\n\n                case Command.NewTab:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.NewTab),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.T\n                    }\n                };\n\n                case Command.NewSshTab:\n                    return new List<KeyBinding>\n                    {\n                        new KeyBinding\n                        {\n                            Command = nameof(Command.NewSshTab),\n                            Ctrl = true,\n                            Shift = true,\n                            Key = (int)ExtendedVirtualKey.Y\n                        }\n                    };\n\n                case Command.NewSshWindow:\n                    return new List<KeyBinding>\n                    {\n                        new KeyBinding\n                        {\n                            Command = nameof(Command.NewSshWindow),\n                            Ctrl = true,\n                            Alt = true,\n                            Key = (int)ExtendedVirtualKey.Y\n                        }\n                    };\n\n                case Command.NewCustomCommandTab:\n                    return new List<KeyBinding>\n                    {\n                        new KeyBinding\n                        {\n                            Command = nameof(Command.NewCustomCommandTab),\n                            Ctrl = true,\n                            Alt = true,\n                            Key = (int)ExtendedVirtualKey.T\n                        }\n                    };\n\n                case Command.NewCustomCommandWindow:\n                    return new List<KeyBinding>\n                    {\n                        new KeyBinding\n                        {\n                            Command = nameof(Command.NewCustomCommandWindow),\n                            Ctrl = true,\n                            Alt = true,\n                            Key = (int)ExtendedVirtualKey.N\n                        }\n                    };\n                    \n                case Command.ChangeTabTitle:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.ChangeTabTitle),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.R\n                    }\n                };\n\n                case Command.CloseTab:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.CloseTab),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.W\n                    }\n                };\n\n                case Command.NewWindow:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.NewWindow),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.N\n                    }\n                };\n\n                case Command.ShowSettings:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.ShowSettings),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.Comma\n                    }\n                };\n\n                case Command.Copy:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.Copy),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.C\n                    }\n                };\n\n                case Command.Paste:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.Paste),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.V\n                    }\n                };\n\n\n                case Command.PasteWithoutNewlines:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.PasteWithoutNewlines),\n                        Ctrl = true,\n                        Alt = true,\n                        Key = (int)ExtendedVirtualKey.V\n                    }\n                };\n\n                case Command.Search:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.Search),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.F\n                    }\n                };\n\n                case Command.CloseSearch:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.CloseSearch),\n                        Key = (int)ExtendedVirtualKey.Escape\n                    }\n                };\n\n                case Command.ToggleFullScreen:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.ToggleFullScreen),\n                        Alt = true,\n                        Key = (int)ExtendedVirtualKey.Enter\n                    },\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.ToggleFullScreen),\n                        Key = (int)ExtendedVirtualKey.F11\n                    }\n                };\n\n                case Command.SelectAll:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.SelectAll),\n                        Ctrl = true,\n                        Shift = true,\n                        Key = (int)ExtendedVirtualKey.A\n                    }\n                };\n\n                case Command.Clear:\n                    return new List<KeyBinding>\n                {\n                    new KeyBinding\n                    {\n                        Command = nameof(Command.Clear),\n                        Ctrl = true,\n                        Alt = true,\n                        Key = (int)ExtendedVirtualKey.L\n                    }\n                };\n                case Command.IncreaseFontSize:\n                    return new List<KeyBinding>\n                    {\n                        new KeyBinding\n                        {\n                            Command = nameof(Command.IncreaseFontSize),\n                            Ctrl = true,\n                            Key = (int)ExtendedVirtualKey.Plus\n                        }\n                    };\n                case Command.DecreaseFontSize:\n                    return new List<KeyBinding>\n                    {\n                        new KeyBinding\n                        {\n                            Command = nameof(Command.DecreaseFontSize),\n                            Ctrl = true,\n                            Key = (int)ExtendedVirtualKey.Minus\n                        }\n                    };\n                case Command.ResetFontSize:\n                    return new List<KeyBinding>\n                    {\n                        new KeyBinding\n                        {\n                            Command = nameof(Command.ResetFontSize),\n                            Ctrl = true,\n                            Key = (int)ExtendedVirtualKey.Number0\n                        }\n                    };\n                default:\n                    throw new InvalidOperationException($\"Default keybindings for Command '{command}' are missing\");\n            }\n        }\n\n        public Guid GetDefaultShellProfileId()\n        {\n            return Guid.Parse(\"813f2298-210a-481a-bdbf-c17bc637a3e2\");\n        }\n\n        public IEnumerable<TabTheme> GetDefaultTabThemes()\n        {\n            return new[]\n            {\n                new TabTheme\n                {\n                    Id = 0,\n                    Name = \"TabTheme.None\",\n                    BackgroundOpacity = double.NaN,\n                    BackgroundPointerOverOpacity = double.NaN,\n                    BackgroundPressedOpacity = double.NaN,\n                    BackgroundSelectedOpacity = double.NaN,\n                    BackgroundSelectedPointerOverOpacity = double.NaN,\n                    BackgroundSelectedPressedOpacity = double.NaN\n                },\n                new TabTheme\n                {\n                    Id = 1,\n                    Name = \"TabTheme.Red\",\n                    Color = \"#E81123\"\n                },\n                new TabTheme\n                {\n                    Id = 2,\n                    Name = \"TabTheme.Green\",\n                    Color = \"#10893E\"\n                },\n                new TabTheme\n                {\n                    Id = 3,\n                    Name = \"TabTheme.Blue\",\n                    Color = \"#0078D7\"\n                },\n                new TabTheme\n                {\n                    Id = 4,\n                    Name = \"TabTheme.Purple\",\n                    Color = \"#881798\"\n                },\n                new TabTheme\n                {\n                    Id = 5,\n                    Name = \"TabTheme.Orange\",\n                    Color = \"#FF8C00\"\n                },\n                new TabTheme\n                {\n                    Id = 6,\n                    Name = \"TabTheme.Teal\",\n                    Color = \"#00B7C3\"\n                }\n            };\n        }\n\n        public TerminalOptions GetDefaultTerminalOptions()\n        {\n            return new TerminalOptions\n            {\n                BellStyle = BellStyle.None,\n                CursorBlink = true,\n                CursorStyle = CursorStyle.Block,\n                ScrollBarStyle = ScrollBarStyle.Hidden,\n                FontFamily = \"Consolas\",\n                FontSize = 13,\n                FontWeight = 400,\n                BackgroundOpacity = 0.8,\n                Padding = 12,\n                ScrollBackLimit = 1000,\n                WordSeparator = \" ()[]{}:;|│!&*<>@&quot;&squo;\",\n                UseAcrylicBackground = true\n            };\n        }\n\n        public Guid GetDefaultThemeId()\n        {\n            return Guid.Parse(\"281e4352-bb50-47b7-a691-2b13830df95e\");\n        }\n\n        public IEnumerable<ShellProfile> GetPreinstalledShellProfiles()\n        {\n            return new[]\n            {\n                new ShellProfile\n                {\n                    Id = GetDefaultShellProfileId(),\n                    Name = \"Powershell\",\n                    MigrationVersion = ShellProfile.CurrentMigrationVersion,\n                    Arguments = string.Empty,\n                    Location = @\"C:\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe\",\n                    PreInstalled = true,\n                    WorkingDirectory = string.Empty,\n                    UseConPty = ApiInformation.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 8), // Windows 10 1903+\n                    UseBuffer = false,\n                    EnvironmentVariables = new Dictionary<string, string>\n                    {\n                        [\"TERM\"] = \"xterm-256color\"\n                    },\n                    KeyBindings = new []\n                    {\n                        new KeyBinding\n                        {\n                            Command = GetDefaultShellProfileId().ToString(),\n                            Ctrl=true,\n                            Alt=true,\n                            Shift=false,\n                            Meta=false,\n                            Key=(int)ExtendedVirtualKey.Number1\n                        }\n                    }\n                },\n                new ShellProfile\n                {\n                    Id = Guid.Parse(\"ab942a61-7673-4755-9bd8-765aff91d9a3\"),\n                    Name = \"CMD\",\n                    MigrationVersion = ShellProfile.CurrentMigrationVersion,\n                    Arguments = string.Empty,\n                    Location = @\"C:\\Windows\\System32\\cmd.exe\",\n                    PreInstalled = true,\n                    WorkingDirectory = string.Empty,\n                    UseConPty = ApiInformation.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 7), // Windows 10 1809+\n                    UseBuffer = true,\n                    EnvironmentVariables = new Dictionary<string, string>\n                    {\n                        [\"TERM\"] = \"xterm-256color\"\n                    },\n                    KeyBindings = new []\n                    {\n                        new KeyBinding\n                        {\n                            Command = \"ab942a61-7673-4755-9bd8-765aff91d9a3\",\n                            Ctrl=true,\n                            Alt=true,\n                            Shift=false,\n                            Meta=false,\n                            Key=(int)ExtendedVirtualKey.Number2\n                        }\n                    }\n                },\n                new ShellProfile\n                {\n                    Id= Guid.Parse(\"e5785ad6-584f-40cb-bdcd-d5b3b3953e7f\"),\n                    Name = \"WSL\",\n                    MigrationVersion = ShellProfile.CurrentMigrationVersion,\n                    Arguments = string.Empty,\n                    Location = @\"C:\\windows\\system32\\wsl.exe\",\n                    PreInstalled = true,\n                    WorkingDirectory = string.Empty,\n                    UseConPty = ApiInformation.IsApiContractPresent(\"Windows.Foundation.UniversalApiContract\", 7), // Windows 10 1809+\n                    UseBuffer = true, //TODO: Set to false if the buffer causes issues with WSL.\n                    EnvironmentVariables = new Dictionary<string, string>\n                    {\n                        [\"TERM\"] = \"xterm-256color\"\n                    },\n                    KeyBindings = new []\n                    {\n                        new KeyBinding\n                        {\n                            Command = \"e5785ad6-584f-40cb-bdcd-d5b3b3953e7f\",\n                            Ctrl=true,\n                            Alt=true,\n                            Shift=false,\n                            Meta=false,\n                            Key=(int)ExtendedVirtualKey.Number3\n                        }\n                    }\n                }\n            };\n        }\n\n        public IEnumerable<TerminalTheme> GetPreInstalledThemes()\n        {\n            var defaultXterm = new TerminalTheme\n            {\n                Id = GetDefaultThemeId(),\n                Author = \"xterm.js\",\n                Name = \"Xterm.js Default\",\n                PreInstalled = true,\n                Colors = new TerminalColors\n                {\n                    Black = \"#2e3436\",\n                    Red = \"#cc0000\",\n                    Green = \"#4e9a06\",\n                    Yellow = \"#c4a000\",\n                    Blue = \"#3465a4\",\n                    Magenta = \"#75507b\",\n                    Cyan = \"#06989a\",\n                    White = \"#d3d7cf\",\n                    BrightBlack = \"#555753\",\n                    BrightRed = \"#ef2929\",\n                    BrightGreen = \"#8ae234\",\n                    BrightYellow = \"#fce94f\",\n                    BrightBlue = \"#729fcf\",\n                    BrightMagenta = \"#ad7fa8\",\n                    BrightCyan = \"#34e2e2\",\n                    BrightWhite = \"#eeeeec\",\n                    Foreground = \"#ffffff\",\n                    Background = \"#000000\",\n                    Cursor = \"#ffffff\",\n                    CursorAccent = \"#000000\",\n                    Selection = \"rgba(255, 255, 255, 0.3)\"\n                }\n            };\n\n            var powerShell = new TerminalTheme\n            {\n                Id = Guid.Parse(\"3571ce1b-31ce-4cf7-ae15-e0bff70c3eea\"),\n                Author = \"Microsoft\",\n                Name = \"PowerShell\",\n                PreInstalled = true,\n                Colors = new TerminalColors\n                {\n                    Black = \"#000000\",\n                    Red = \"#800000\",\n                    Green = \"#008000\",\n                    Yellow = \"#EEEDF0\",\n                    Blue = \"#000080\",\n                    Magenta = \"#012456\",\n                    Cyan = \"#008080\",\n                    White = \"#c0c0c0\",\n                    BrightBlack = \"#808080\",\n                    BrightRed = \"#ff0000\",\n                    BrightGreen = \"#00ff00\",\n                    BrightYellow = \"#ffff00\",\n                    BrightBlue = \"#0000ff\",\n                    BrightMagenta = \"#ff00ff\",\n                    BrightCyan = \"#00ffff\",\n                    BrightWhite = \"#ffffff\",\n                    Foreground = \"#ffffff\",\n                    Background = \"#012456\",\n                    Cursor = \"#fedba9\",\n                    CursorAccent = \"#000000\",\n                    Selection = \"rgba(254, 219, 169, 0.3)\"\n                }\n            };\n\n            var homebrew = new TerminalTheme\n            {\n                Id = Guid.Parse(\"5f034210-067b-40e2-b9c9-6a25eb6fb8e6\"),\n                Author = \"Hans Kokx\",\n                Name = \"Homebrew\",\n                PreInstalled = true,\n                Colors = new TerminalColors\n                {\n                    Black = \"#000000\",\n                    Red = \"#A0160B\",\n                    Green = \"#00AF21\",\n                    Yellow = \"#A1A222\",\n                    Blue = \"#192AB7\",\n                    Magenta = \"#AA2FAE\",\n                    Cyan = \"#12B1BC\",\n                    White = \"#BBB5AF\",\n                    BrightBlack = \"#747876\",\n                    BrightRed = \"#E52213\",\n                    BrightGreen = \"#00D92B\",\n                    BrightYellow = \"#E6E435\",\n                    BrightBlue = \"#283EF9\",\n                    BrightMagenta = \"#EB43E6\",\n                    BrightCyan = \"#15E7E8\",\n                    BrightWhite = \"#E9E9E9\",\n                    Foreground = \"#00D92B\",\n                    Background = \"#000000\",\n                    Cursor = \"#00D92B\",\n                    CursorAccent = \"#000000\",\n                    Selection = \"#4CFFFFFF\"\n                }\n            };\n\n            var tomorrow = new TerminalTheme\n            {\n                Id = Guid.Parse(\"0cbbf805-fa86-4be5-ac51-75f3054dcc3a\"),\n                Author = \"Chris Kempson\",\n                Name = \"Tomorrow\",\n                PreInstalled = true,\n                Colors = new TerminalColors\n                {\n                    Foreground = \"#4D4D4C\",\n                    Background = \"#FFFFFF\",\n                    Cursor = \"#4D4D4C\",\n                    CursorAccent = \"#FFFFFF\",\n                    Selection = \"rgba(214, 214, 214, 0.5)\",\n                    Black = \"#000000\",\n                    Red = \"#C82829\",\n                    Green = \"#718C00\",\n                    Yellow = \"#EAB700\",\n                    Blue = \"#4271AE\",\n                    Magenta = \"#8959A8\",\n                    Cyan = \"#3E999F\",\n                    White = \"#FFFFFF\",\n                    BrightBlack = \"#000000\",\n                    BrightRed = \"#C82829\",\n                    BrightGreen = \"#718C00\",\n                    BrightYellow = \"#EAB700\",\n                    BrightBlue = \"#4271AE\",\n                    BrightMagenta = \"#8959A8\",\n                    BrightCyan = \"#3E999F\",\n                    BrightWhite = \"#FFFFFF\"\n                }\n            };\n\n            var ubuntu = new TerminalTheme\n            {\n                Id = Guid.Parse(\"32519543-bf94-4db6-92a1-7bcec3966c82\"),\n                Author = \"Canonical\",\n                Name = \"Ubuntu Bash\",\n                PreInstalled = true,\n                Colors = new TerminalColors\n                {\n                    Foreground = \"#EEEEEE\",\n                    Background = \"#300A24\",\n                    Cursor = \"#CFF5DB\",\n                    CursorAccent = \"#000000\",\n                    Selection = \"#4DABEDC1\",\n                    Black = \"#300A24\",\n                    Red = \"#CC0000\",\n                    Green = \"#4E9A06\",\n                    Yellow = \"#C4A000\",\n                    Blue = \"#3465A4\",\n                    Magenta = \"#75507B\",\n                    Cyan = \"#06989A\",\n                    White = \"#D3D7CF\",\n                    BrightBlack = \"#554E53\",\n                    BrightRed = \"#EF2929\",\n                    BrightGreen = \"#8AE234\",\n                    BrightYellow = \"#FCE94F\",\n                    BrightBlue = \"#729FCF\",\n                    BrightMagenta = \"#AD7FA8\",\n                    BrightCyan = \"#34E2E2\",\n                    BrightWhite = \"#EEEEEE\"\n                }\n            };\n\n            return new[] { defaultXterm, powerShell, homebrew, tomorrow, ubuntu };\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/DialogService.cs",
    "content": "﻿using FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.Models;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class DialogService : IDialogService\n    {\n        private readonly Func<IMessageDialog> _messageDialogFactory;\n        private readonly Func<ICreateKeyBindingDialog> _createKeyBindingDialogFactory;\n        private readonly Func<IInputDialog> _inputDialogFactory;\n        private readonly Func<ISshConnectionInfoDialog> _sshConnectionInfoDialogFactory;\n        private readonly Func<ICustomCommandDialog> _customCommandDialogFactory;\n        private readonly Func<IAboutDialog> _aboutDialogFactory;\n\n        public DialogService(Func<IMessageDialog> messageDialogFactory, Func<ICreateKeyBindingDialog> createKeyBindingDialogFactory,\n            Func<IInputDialog> inputDialogFactory, Func<ISshConnectionInfoDialog> sshConnectionInfoDialogFactory,\n            Func<ICustomCommandDialog> customCommandDialogFactory,\n            Func<IAboutDialog> aboutDialogFactory)\n        {\n            _messageDialogFactory = messageDialogFactory;\n            _createKeyBindingDialogFactory = createKeyBindingDialogFactory;\n            _inputDialogFactory = inputDialogFactory;\n            _sshConnectionInfoDialogFactory = sshConnectionInfoDialogFactory;\n            _customCommandDialogFactory = customCommandDialogFactory;\n            _aboutDialogFactory = aboutDialogFactory;\n        }\n\n        public Task<KeyBinding> ShowCreateKeyBindingDialog()\n        {\n            var dialog = _createKeyBindingDialogFactory();\n\n            return dialog.CreateKeyBinding();\n        }\n\n        public Task<DialogButton> ShowMessageDialogAsync(string title, string content, params DialogButton[] buttons)\n        {\n            if (string.IsNullOrWhiteSpace(title))\n            {\n                throw new ArgumentNullException(nameof(title));\n            }\n\n            if (string.IsNullOrWhiteSpace(content))\n            {\n                throw new ArgumentNullException(nameof(content));\n            }\n\n            if (buttons.Length == 0)\n            {\n                throw new ArgumentException(\"Must not be empty\", nameof(buttons));\n            }\n\n            var dialog = _messageDialogFactory();\n            dialog.Content = content;\n            dialog.Title = title;\n\n            foreach (var button in buttons)\n            {\n                dialog.AddButton(button);\n            }\n\n            return dialog.ShowAsync();\n        }\n\n        public Task<string> ShowInputDialogAsync(string title)\n        {\n            var dialog = _inputDialogFactory.Invoke();\n            dialog.SetTitle(title);\n\n            return dialog.GetInput();\n        }\n\n        public Task<SshProfile> ShowSshConnectionInfoDialogAsync(SshProfile input = null) =>\n            _sshConnectionInfoDialogFactory().GetSshConnectionInfoAsync(input);\n\n        public Task<ShellProfile> ShowCustomCommandDialogAsync(ShellProfile input = null) =>\n            _customCommandDialogFactory().GetCustomCommandAsync(input);\n\n        public Task ShowAboutDialogAsync()\n        {\n            var dialog = _aboutDialogFactory();\n\n            return dialog.ShowAsync();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/FluentTerminalThemeParser.cs",
    "content": "﻿using FluentTerminal.Models;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class FluentTerminalThemeParser : IThemeParser\n    {\n        public IEnumerable<string> SupportedFileTypes { get; } = new[] { \".flutecolors\" };\n\n        public Task<ExportedTerminalTheme> Import(string fileName, Stream fileContent)\n        {\n            return DeserializeThemeAsync<ExportedTerminalTheme>(fileName, fileContent);\n        }\n\n        public Task<TerminalTheme> Parse(string fileName, Stream fileContent)\n        {\n            return DeserializeThemeAsync<TerminalTheme>(fileName, fileContent);\n        }\n\n        private async Task<T> DeserializeThemeAsync<T>(string fileName, Stream fileContent)\n            where T : TerminalTheme\n        {\n            if (string.IsNullOrWhiteSpace(fileName))\n            {\n                throw new ArgumentNullException(nameof(fileName));\n            }\n\n            if (fileContent == null)\n            {\n                throw new ArgumentNullException(nameof(fileContent));\n            }\n\n            using (var streamReader = new StreamReader(fileContent))\n            {\n                var content = await streamReader.ReadToEndAsync().ConfigureAwait(false);\n                var theme = JsonConvert.DeserializeObject<T>(content);\n\n                theme.PreInstalled = false;\n                theme.Id = Guid.NewGuid();\n\n                return theme;\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/ITermThemeParser.cs",
    "content": "﻿using FluentTerminal.App.Services.Exceptions;\nusing FluentTerminal.Models;\nusing PListNet;\nusing PListNet.Nodes;\nusing System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Threading.Tasks;\n// ReSharper disable InconsistentNaming\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class ITermThemeParser : IThemeParser\n    {\n        private const byte Opacity30Percent = 77;\n\n        public IEnumerable<string> SupportedFileTypes { get; } = new[] { \".itermcolors\" };\n\n        private static class ITermThemeKeys\n        {\n            public const string Ansi0Color = \"Ansi 0 Color\";\n            public const string Ansi1Color = \"Ansi 1 Color\";\n            public const string Ansi2Color = \"Ansi 2 Color\";\n            public const string Ansi3Color = \"Ansi 3 Color\";\n            public const string Ansi4Color = \"Ansi 4 Color\";\n            public const string Ansi5Color = \"Ansi 5 Color\";\n            public const string Ansi6Color = \"Ansi 6 Color\";\n            public const string Ansi7Color = \"Ansi 7 Color\";\n            public const string Ansi8Color = \"Ansi 8 Color\";\n            public const string Ansi9Color = \"Ansi 9 Color\";\n            public const string Ansi10Color = \"Ansi 10 Color\";\n            public const string Ansi11Color = \"Ansi 11 Color\";\n            public const string Ansi12Color = \"Ansi 12 Color\";\n            public const string Ansi13Color = \"Ansi 13 Color\";\n            public const string Ansi14Color = \"Ansi 14 Color\";\n            public const string Ansi15Color = \"Ansi 15 Color\";\n\n            public const string BackgroundColor = \"Background Color\";\n            //public const string BoldColor = \"Bold Color\";\n            public const string CursorColor = \"Cursor Color\";\n            public const string CursorTextColor = \"Cursor Text Color\";\n            public const string ForegroundColor = \"Foreground Color\";\n            public const string SelectedTextColor = \"Selected Text Color\";\n            public const string SelectionColor = \"Selection Color\";\n        }\n\n        private static class ITermThemeColorKeys\n        {\n            public const string BlueComponent = \"Blue Component\";\n            public const string GreenComponent = \"Green Component\";\n            public const string RedComponent = \"Red Component\";\n        }\n\n        public Task<TerminalTheme> Parse(string fileName, Stream fileContent)\n        {\n            if (string.IsNullOrWhiteSpace(fileName))\n            {\n                throw new ArgumentNullException(nameof(fileName));\n            }\n\n            if (fileContent == null)\n            {\n                throw new ArgumentNullException(nameof(fileContent));\n            }\n\n            var node = PList.Load(fileContent) as DictionaryNode ?? throw new ParseThemeException(\"Root node was not a dictionary.\");\n\n            return Task.FromResult(new TerminalTheme\n            {\n                Name = Path.GetFileNameWithoutExtension(fileName),\n                Colors = GetColors(node),\n                Id = Guid.NewGuid(),\n                PreInstalled = false\n            });\n        }\n\n        private TerminalColors GetColors(DictionaryNode themeDictionary)\n        {\n            return new TerminalColors\n            {\n                Background = GetColorString(themeDictionary[ITermThemeKeys.BackgroundColor]),\n                Foreground = GetColorString(themeDictionary[ITermThemeKeys.ForegroundColor]),\n                Cursor = GetColorString(themeDictionary[ITermThemeKeys.CursorColor]),\n                CursorAccent = GetColorString(themeDictionary[ITermThemeKeys.CursorTextColor]),\n                Selection = GetColorString(themeDictionary[ITermThemeKeys.SelectionColor], Opacity30Percent),\n                SelectionForeground = GetColorString(themeDictionary[ITermThemeKeys.SelectedTextColor]),\n                SelectionBackground = GetColorString(themeDictionary[ITermThemeKeys.SelectionColor]),\n                Black = GetColorString(themeDictionary[ITermThemeKeys.Ansi0Color]),\n                Red = GetColorString(themeDictionary[ITermThemeKeys.Ansi1Color]),\n                Green = GetColorString(themeDictionary[ITermThemeKeys.Ansi2Color]),\n                Yellow = GetColorString(themeDictionary[ITermThemeKeys.Ansi3Color]),\n                Blue = GetColorString(themeDictionary[ITermThemeKeys.Ansi4Color]),\n                Magenta = GetColorString(themeDictionary[ITermThemeKeys.Ansi5Color]),\n                Cyan = GetColorString(themeDictionary[ITermThemeKeys.Ansi6Color]),\n                White = GetColorString(themeDictionary[ITermThemeKeys.Ansi7Color]),\n                BrightBlack = GetColorString(themeDictionary[ITermThemeKeys.Ansi8Color]),\n                BrightRed = GetColorString(themeDictionary[ITermThemeKeys.Ansi9Color]),\n                BrightGreen = GetColorString(themeDictionary[ITermThemeKeys.Ansi10Color]),\n                BrightYellow = GetColorString(themeDictionary[ITermThemeKeys.Ansi11Color]),\n                BrightBlue = GetColorString(themeDictionary[ITermThemeKeys.Ansi12Color]),\n                BrightMagenta = GetColorString(themeDictionary[ITermThemeKeys.Ansi13Color]),\n                BrightCyan = GetColorString(themeDictionary[ITermThemeKeys.Ansi14Color]),\n                BrightWhite = GetColorString(themeDictionary[ITermThemeKeys.Ansi15Color]),\n            };\n        }\n\n        private string GetColorString(PNode colorNode, byte alpha = Byte.MaxValue)\n        {\n            var dictionaryNode = colorNode as DictionaryNode ?? throw new ParseThemeException(\"Color node was not a dictionary\");\n\n            var red = dictionaryNode[ITermThemeColorKeys.RedComponent] as RealNode ?? throw new ParseThemeException(\"Red node value was not a real number\");\n            var green = dictionaryNode[ITermThemeColorKeys.GreenComponent] as RealNode ?? throw new ParseThemeException(\"Green node value was not a real number\");\n            var blue = dictionaryNode[ITermThemeColorKeys.BlueComponent] as RealNode ?? throw new ParseThemeException(\"Blue node value was not a real number\");\n\n            if (alpha == byte.MaxValue)\n            {\n                return $\"#{GetByteValue(red):X2}{GetByteValue(green):X2}{GetByteValue(blue):X2}\";\n            }\n            else\n            {\n                return $\"rgba({GetByteValue(red):G}, {GetByteValue(green):G}, {GetByteValue(blue):G}, {ToDoubleString(alpha)})\";\n            }\n        }\n\n        private byte GetByteValue(RealNode node)\n        {\n            var doubleValue = node.Value * Byte.MaxValue;\n\n            return Convert.ToByte(doubleValue);\n        }\n\n        private static string ToDoubleString(byte alpha)\n        {\n            return (alpha / 256.0).ToString(CultureInfo.InvariantCulture);\n        }\n\n        public Task<ExportedTerminalTheme> Import(string fileName, Stream fileContent)\n        {\n            if (string.IsNullOrWhiteSpace(fileName))\n            {\n                throw new ArgumentNullException(nameof(fileName));\n            }\n\n            if (fileContent == null)\n            {\n                throw new ArgumentNullException(nameof(fileContent));\n            }\n\n            var node = PList.Load(fileContent) as DictionaryNode ?? throw new ParseThemeException(\"Root node was not a dictionary.\");\n\n            var terminalTheme = new TerminalTheme\n            {\n                Name = Path.GetFileNameWithoutExtension(fileName),\n                Colors = GetColors(node),\n                Id = Guid.NewGuid(),\n                PreInstalled = false\n            };\n\n            return Task.FromResult(new ExportedTerminalTheme(terminalTheme, string.Empty));\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/KeyboardCommandService.cs",
    "content": "﻿using FluentTerminal.Models.Enums;\r\nusing System;\r\nusing System.Collections.Generic;\r\n\r\nnamespace FluentTerminal.App.Services.Implementation\r\n{\r\n    public class KeyboardCommandService : IKeyboardCommandService\r\n    {\r\n        private readonly Dictionary<string, Action> _commandHandlers = new Dictionary<string, Action>();\r\n\r\n        public void RegisterCommandHandler(string command, Action handler)\r\n        {\r\n            if (_commandHandlers.ContainsKey(command))\r\n            {\r\n                throw new InvalidOperationException(\"command already registered\");\r\n            }\r\n\r\n            _commandHandlers[command] = handler ?? throw new ArgumentNullException(nameof(handler));\r\n        }\r\n\r\n        public void DeregisterCommandHandler(string command)\r\n        {\r\n            if (_commandHandlers.ContainsKey(command))\r\n            {\r\n                _commandHandlers.Remove(command);\r\n            }\r\n        }\r\n\r\n        public void SendCommand(string command)\r\n        {\r\n            if (_commandHandlers.TryGetValue(command, out Action handler))\r\n            {\r\n                handler.Invoke();\r\n                return;\r\n            }\r\n\r\n            // already registered by SystemTray's ToggleWindowService\r\n            if (command == nameof(Command.ToggleWindow))\r\n            {\r\n                return;\r\n            }\r\n\r\n            throw new KeyNotFoundException($\"No handler registered for command: {command}\");\r\n        }\r\n\r\n        public void ClearCommandHandlers()\r\n        {\r\n            _commandHandlers.Clear();\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/MoshBackwardCompatibility.cs",
    "content": "﻿using System;\nusing System.Text.RegularExpressions;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    // The purpose of this class is to ensure backward compatibility of mosh profiles and command history\n    // TODO: This class should be probably deleted in few months or so\n    public static class MoshBackwardCompatibility\n    {\n        private static readonly string MoshCommandExe = $\"{Constants.MoshCommandName}.exe\";\n\n        private static readonly Regex OldFormatRx = new Regex(@\".+\\s(?<ports>\\d{1,5}:\\d{1,5})$\", RegexOptions.Compiled);\n\n        private static readonly Regex TargetRx =\n            new Regex(@\"(^|\\s+)(?<user>[^\\s@;]+)@(?<host>[^\\s@:]+)(:(?<port>\\d{1,5}))?\\s+\", RegexOptions.Compiled);\n\n        private static bool IsMoshProfile(ShellProfile profile) =>\n            Constants.MoshCommandName.Equals(profile.Location, StringComparison.OrdinalIgnoreCase) ||\n            MoshCommandExe.Equals(profile.Location, StringComparison.OrdinalIgnoreCase);\n\n        /// <summary>\n        /// Checks if the profile contains obsolete mosh syntax, and changes it if it does.\n        /// </summary>\n        /// <param name=\"profile\">The profile. Note that the method doesn't change the input profile at all, but creates and\n        /// returns its clone if there's something to change.</param>\n        /// <remarks>\n        /// The method actually checks if <see cref=\"ShellProfile.Arguments\"/> of the input <paramref name=\"profile\"/> is in\n        /// obsolete <c>mosh</c> format <c>[ssh_arguments] [target] [mosh_port_range]</c>, and if it is changes it to the new\n        /// format <c>--ssh=\"[ssh_arguments]\" -p [mosh_ports] [target]</c>.\n        /// </remarks>\n        /// <returns>\n        /// If the method detected that the input profile is obsolete mosh profile, it will create its clone with the updated\n        /// command line arguments, and return it. Otherwise it will simply return unchanged input profile (the same reference\n        /// as the input profile). It allows us to simply check if anything is changed by comparing the input and output\n        /// profiles for reference equality.\n        /// </returns>\n        public static ShellProfile FixProfile(ShellProfile profile)\n        {\n            // If there aren't any arguments, or if the profile isn't a mosh profile, there's nothing to do. Just return.\n            if (string.IsNullOrWhiteSpace(profile.Arguments) || !IsMoshProfile(profile)) return profile;\n\n            var arguments = profile.Arguments.Trim();\n\n            var moshPortsMatch = OldFormatRx.Match(arguments);\n\n            if (!moshPortsMatch.Success) return profile;// Arguments don't end with mosh ports (i.e. 60000:61000), so it isn't an obsolete format.\n\n            var targetMatches = TargetRx.Matches(arguments);\n\n            if (targetMatches.Count != 1) return profile;// Target part (user@host:port) not found or found multiple times. Cannot reliably determine the target, so don't change.\n\n            var targetMatch = targetMatches[0];\n\n            // Removing [mosh_ports] from the original arguments\n            arguments = arguments.Substring(0, arguments.Length - moshPortsMatch.Groups[\"ports\"].Length).Trim();\n\n            var newProfile = profile.Clone();\n\n            // Removing [target] from the original arguments, thus getting \"pure\" ssh arguments\n            var sshArguments = targetMatch.Index > 0 ? arguments.Substring(0, targetMatch.Index).Trim() : string.Empty;\n\n            if (targetMatch.Index + targetMatch.Length < arguments.Length)\n            {\n                sshArguments += $\" {arguments.Substring(targetMatch.Index + targetMatch.Length).Trim()}\";\n            }\n\n            // If the ssh port is defined in the original target (i.e. user@host:port), which was allowed in the obsolete mosh, extracting the port part into a separate ssh argument\n            if (targetMatch.Groups[\"port\"].Success && uint.TryParse(targetMatch.Groups[\"port\"].Value, out var port) &&\n                port != SshProfile.DefaultSshPort)\n            {\n                sshArguments += $\" -p {targetMatch.Groups[\"port\"].Value}\";\n            }\n\n            // Replacing any double quotes in ssh arguments with single quotes, since ssh arguments will be double-quoted as a whole\n            sshArguments = sshArguments.Replace(\"\\\"\", \"'\").Trim();\n\n            arguments = $\"-p {moshPortsMatch.Groups[\"ports\"].Value}\";\n\n            if (!string.IsNullOrEmpty(sshArguments))\n            {\n                // If there were some ssh arguments, add them as defined in the new format\n                arguments += $\" --ssh=\\\"ssh {sshArguments}\\\"\";\n            }\n\n            // Finally append the target to the arguments\n            arguments += $\" {targetMatch.Groups[\"user\"]}@{targetMatch.Groups[\"host\"]}\";\n\n            newProfile.Arguments = arguments;\n\n            return newProfile;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/NotificationService.cs",
    "content": "﻿using System.Diagnostics;\nusing Windows.Data.Xml.Dom;\nusing Windows.UI.Notifications;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class NotificationService : INotificationService\n    {\n        public void ShowNotification(string title, string content, string url = null)\n        {\n            string xml = $@\"<toast>\n                            <visual>\n                                <binding template='ToastGeneric'>\n                                    <text>{title}</text>\n                                    <text>{content}</text>\n                                </binding>\n                            </visual>\n                        </toast>\";\n\n            var doc = new XmlDocument();\n            doc.LoadXml(xml);\n\n            var toast = new ToastNotification(doc);\n            if (url != null)\n            {\n                toast.Activated += (n, o) => Process.Start(url);\n            }\n            ToastNotificationManager.CreateToastNotifier().Show(toast);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/SettingsService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models.Messages;\nusing Microsoft.Toolkit.Mvvm.Messaging;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class SettingsService : ISettingsService\n    {\n        public const string CurrentThemeKey = \"CurrentTheme\";\n        public const string DefaultShellProfileKey = \"DefaultShellProfile\";\n        public const string DefaultSshProfileKey = \"DefaultSshProfile\";\n\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly IApplicationDataContainer _keyBindings;\n        private readonly IApplicationDataContainer _localSettings;\n        private readonly IApplicationDataContainer _roamingSettings;\n        private readonly IApplicationDataContainer _shellProfiles;\n        private readonly IApplicationDataContainer _sshProfiles;\n        private readonly IApplicationDataContainer _themes;\n\n        public SettingsService(IDefaultValueProvider defaultValueProvider, ApplicationDataContainers containers)\n        {\n            _defaultValueProvider = defaultValueProvider;\n            _localSettings = containers.LocalSettings;\n            _roamingSettings = containers.RoamingSettings;\n\n            _themes = containers.Themes;\n            _keyBindings = containers.KeyBindings;\n            _shellProfiles = containers.ShellProfiles;\n            _sshProfiles = containers.SshProfiles;\n\n\n            foreach (var theme in _defaultValueProvider.GetPreInstalledThemes())\n            {\n                if (GetTheme(theme.Id) == null)\n                {\n                    _themes.WriteValueAsJson(theme.Id.ToString(), theme);\n                }\n            }\n\n            foreach (var shellProfile in _defaultValueProvider.GetPreinstalledShellProfiles())\n            {\n                if (GetShellProfile(shellProfile.Id) == null)\n                {\n                    _shellProfiles.WriteValueAsJson(shellProfile.Id.ToString(), shellProfile);\n                }\n            }\n        }\n\n        public string ExportSettings()\n        {\n            var config = new\n            {\n                App = GetApplicationSettings(),\n                KeyBindings = GetCommandKeyBindings(),\n                TerminalOptions = GetTerminalOptions(),\n                Themes = new List<TerminalTheme>(),\n                Profiles = new List<ShellProfile>(),\n                SshProfiles = new List<SshProfile>(),\n                DefaultSettings = GetDefaultSettings(),\n            };\n\n            foreach (var theme in GetThemes().Where(x => !x.PreInstalled))\n            {\n                config.Themes.Add(theme);\n            }\n\n            foreach (var profile in GetShellProfiles())\n            {\n                config.Profiles.Add(profile);\n            }\n\n            foreach (var profile in GetSshProfiles())\n            {\n                config.SshProfiles.Add(profile);\n            }\n\n            return JsonConvert.SerializeObject(config, PreserveDictionaryKeyCaseContractResolver.SerializerSettings);\n        }\n\n        private Dictionary<string, string> GetDefaultSettings()\n        {\n            return new Dictionary<string, string>\n            {\n                [DefaultShellProfileKey] = GetDefaultShellProfileId().ToString(),\n                [CurrentThemeKey] = GetCurrentThemeId().ToString(),\n            };\n        }\n\n        public void ImportSettings(string serializedSettings)\n        {\n            var config = new\n            {\n                App = GetApplicationSettings(),\n                KeyBindings = new Dictionary<string, ICollection<KeyBinding>>(),\n                Themes = new List<TerminalTheme>(),\n                Profiles = new List<ShellProfile>(),\n                SshProfiles = new List<SshProfile>(),\n                TerminalOptions = GetTerminalOptions(),\n                DefaultSettings = new Dictionary<string, string>(),\n            };\n\n            JsonConvert.PopulateObject(serializedSettings, config);\n\n            SaveApplicationSettings(config.App);\n\n            // Since we set each command sepaartely, we don't need all existing settings\n            foreach (var pair in config.KeyBindings)\n            {\n                SaveKeyBindings(pair.Key, pair.Value);\n            }\n\n            // Can't create/modify pre-installed themes\n            foreach (var theme in config.Themes.Where(x => !x.PreInstalled))\n            {\n                var existingTheme = GetTheme(theme.Id);\n                if (existingTheme?.PreInstalled == true)\n                {\n                    continue;\n                }\n                SaveTheme(theme, existingTheme != null);\n            }\n\n            foreach (var profile in config.Profiles)\n            {\n                var existingProfile = GetShellProfile(profile.Id);\n                var isNew = existingProfile == default;\n\n                if (!isNew && existingProfile.PreInstalled)\n                {\n                    // those cannot be edited\n                    profile.Name = existingProfile.Name;\n                    profile.Location = existingProfile.Location;\n\n                    SaveShellProfile(profile, false);\n                    continue;\n                }\n                SaveShellProfile(profile, isNew);\n            }\n\n            foreach (var profile in config.SshProfiles)\n            {\n                var existingProfile = GetSshProfile(profile.Id);\n                var isNew = existingProfile == default;\n\n                SaveSshProfile(profile, isNew);\n            }\n\n            SaveTerminalOptions(config.TerminalOptions);\n\n            if (config.DefaultSettings.ContainsKey(DefaultShellProfileKey))\n            {\n                SaveDefaultShellProfileId(new Guid(config.DefaultSettings[DefaultShellProfileKey]));\n            }\n\n            if (config.DefaultSettings.ContainsKey(CurrentThemeKey))\n            {\n                SaveCurrentThemeId(new Guid(config.DefaultSettings[CurrentThemeKey]));\n            }\n        }\n\n        public void DeleteShellProfile(Guid id)\n        {\n            _shellProfiles.Delete(id.ToString());\n            WeakReferenceMessenger.Default.Send(new ShellProfileDeletedMessage(id));\n        }\n\n        public void DeleteSshProfile(Guid id)\n        {\n            _sshProfiles.Delete(id.ToString());\n            WeakReferenceMessenger.Default.Send(new ShellProfileDeletedMessage(id));\n            WeakReferenceMessenger.Default.Send(new KeyBindingsChangedMessage());\n        }\n\n\n        public void DeleteTheme(Guid id)\n        {\n            _themes.Delete(id.ToString());\n\n            foreach (var profile in GetShellProfiles())\n            {\n                if (profile.TerminalThemeId == id)\n                {\n                    profile.TerminalThemeId = Guid.Empty;\n                    SaveShellProfile(profile);\n                }\n            }\n\n            WeakReferenceMessenger.Default.Send(new ThemeDeletedMessage(id));\n        }\n\n        public ApplicationSettings GetApplicationSettings()\n        {\n            return _roamingSettings.ReadValueFromJson(nameof(ApplicationSettings), _defaultValueProvider.GetDefaultApplicationSettings());\n        }\n\n        public TerminalTheme GetCurrentTheme()\n        {\n            var id = GetCurrentThemeId();\n            var theme = GetTheme(id);\n            if (theme == null)\n            {\n                id = _defaultValueProvider.GetDefaultThemeId();\n                SaveCurrentThemeId(id);\n                theme = GetTheme(id);\n            }\n            return theme;\n        }\n\n        public Guid GetCurrentThemeId()\n        {\n            if (_roamingSettings.TryGetValue(CurrentThemeKey, out object value))\n            {\n                return (Guid)value;\n            }\n            return _defaultValueProvider.GetDefaultThemeId();\n        }\n\n        public ShellProfile GetDefaultShellProfile()\n        {\n            var id = GetDefaultShellProfileId();\n            var profile = _shellProfiles.ReadValueFromJson(id.ToString(), default(ShellProfile));\n            if (profile == null)\n            {\n                id = _defaultValueProvider.GetDefaultShellProfileId();\n                SaveDefaultShellProfileId(id);\n                profile = _shellProfiles.ReadValueFromJson(id.ToString(), default(ShellProfile));\n            }\n            return profile;\n        }\n\n        public ShellProfile GetShellProfile(Guid id)\n        {\n            return _shellProfiles.ReadValueFromJson(id.ToString(), default(ShellProfile));\n        }\n        public SshProfile GetSshProfile(Guid id)\n        {\n            return _sshProfiles.ReadValueFromJson(id.ToString(), default(SshProfile));\n        }\n\n        public Guid GetDefaultShellProfileId()\n        {\n            if (_localSettings.TryGetValue(DefaultShellProfileKey, out object value))\n            {\n                return (Guid)value;\n            }\n            return _defaultValueProvider.GetDefaultShellProfileId();\n        }\n\n        public IDictionary<string, ICollection<KeyBinding>> GetCommandKeyBindings()\n        {\n            var keyBindings = new Dictionary<string, ICollection<KeyBinding>>();\n\n            foreach (Command command in Enum.GetValues(typeof(Command)))\n            {\n                keyBindings.Add(command.ToString(), _keyBindings.ReadValueFromJson<Collection<KeyBinding>>(command.ToString(), null) ?? _defaultValueProvider.GetDefaultKeyBindings(command));\n            }\n            return keyBindings;\n        }\n\n        public IEnumerable<ShellProfile> GetShellProfiles()\n        {\n            return _shellProfiles.GetAll().Select(x => JsonConvert.DeserializeObject<ShellProfile>((string) x))\n                .Select(MoshBackwardCompatibilityFixProfile);\n        }\n\n        public IEnumerable<SshProfile> GetSshProfiles()\n        {\n            return _sshProfiles.GetAll().Select(x => JsonConvert.DeserializeObject<SshProfile>((string) x))\n                .Select(MoshBackwardCompatibilityFixProfile).Cast<SshProfile>();\n        }\n\n        public IEnumerable<ShellProfile> GetAllProfiles()\n        {\n            return GetShellProfiles().Union(GetSshProfiles());\n        }\n\n        private ShellProfile MoshBackwardCompatibilityFixProfile(ShellProfile profile)\n        {\n            var fixedProfile = MoshBackwardCompatibility.FixProfile(profile);\n\n            if (ReferenceEquals(fixedProfile, profile))\n            {\n                // Nothing changed\n                return fixedProfile;\n            }\n\n            if (fixedProfile is SshProfile sshProfile)\n            {\n                DeleteSshProfile(profile.Id);\n                SaveSshProfile(sshProfile);\n            }\n            else\n            {\n                DeleteShellProfile(profile.Id);\n                SaveShellProfile(fixedProfile);\n            }\n\n            return fixedProfile;\n        }\n\n        public IEnumerable<TabTheme> GetTabThemes()\n        {\n            return _defaultValueProvider.GetDefaultTabThemes();\n        }\n\n        public TerminalOptions GetTerminalOptions()\n        {\n            return _roamingSettings.ReadValueFromJson(nameof(TerminalOptions), _defaultValueProvider.GetDefaultTerminalOptions());\n        }\n\n        public TerminalTheme GetTheme(Guid id)\n        {\n            return _themes.ReadValueFromJson(id.ToString(), default(TerminalTheme));\n        }\n\n        public IEnumerable<TerminalTheme> GetThemes()\n        {\n            return _themes.GetAll().Select(x => JsonConvert.DeserializeObject<TerminalTheme>((string)x)).ToList();\n        }\n\n        public void ResetKeyBindings()\n        {\n            foreach (Command command in Enum.GetValues(typeof(Command)))\n            {\n                _keyBindings.WriteValueAsJson(command.ToString(), _defaultValueProvider.GetDefaultKeyBindings(command));\n            }\n\n            WeakReferenceMessenger.Default.Send(new KeyBindingsChangedMessage());\n        }\n\n        public void SaveApplicationSettings(ApplicationSettings applicationSettings)\n        {\n            _roamingSettings.WriteValueAsJson(nameof(ApplicationSettings), applicationSettings);\n            WeakReferenceMessenger.Default.Send(new ApplicationSettingsChangedMessage(applicationSettings.Clone()));\n        }\n\n        public void NotifyApplicationSettingsChanged(ApplicationSettings applicationSettings)\n        {\n            WeakReferenceMessenger.Default.Send(new ApplicationSettingsChangedMessage(applicationSettings.Clone()));\n        }\n\n        public void SaveCurrentThemeId(Guid id)\n        {\n            _roamingSettings.SetValue(CurrentThemeKey, id);\n\n            WeakReferenceMessenger.Default.Send(new CurrentThemeChangedMessage(id));\n        }\n\n        public void SaveDefaultShellProfileId(Guid id)\n        {\n            _localSettings.SetValue(DefaultShellProfileKey, id);\n\n            WeakReferenceMessenger.Default.Send(new DefaultShellProfileChangedMessage(id));\n        }\n\n        public void SaveKeyBindings(string command, ICollection<KeyBinding> keyBindings)\n        {\n            if (!Enum.TryParse<Command>(command, true, out var enumValue))\n            {\n                throw new InvalidOperationException();\n            }\n\n            _keyBindings.WriteValueAsJson(enumValue.ToString(), keyBindings);\n            WeakReferenceMessenger.Default.Send(new KeyBindingsChangedMessage());\n        }\n\n        public void SaveShellProfile(ShellProfile shellProfile, bool newShell = false)\n        {\n            _shellProfiles.WriteValueAsJson(shellProfile.Id.ToString(), shellProfile);\n\n            // When saving the shell profile, we also need to update keybindings for everywhere.\n            WeakReferenceMessenger.Default.Send(new KeyBindingsChangedMessage());\n\n            if (newShell)\n            {\n                WeakReferenceMessenger.Default.Send(new ShellProfileAddedMessage(shellProfile));\n            }\n            else\n            {\n                WeakReferenceMessenger.Default.Send(new ShellProfileChangedMessage(shellProfile));\n            }\n        }\n\n        public void SaveSshProfile(SshProfile sshProfile, bool newShell = false)\n        {\n            _sshProfiles.WriteValueAsJson(sshProfile.Id.ToString(), sshProfile);\n\n            // When saving the shell profile, we also need to update keybindings for everywhere.\n            WeakReferenceMessenger.Default.Send(new KeyBindingsChangedMessage());\n\n            if (newShell)\n            {\n                WeakReferenceMessenger.Default.Send(new ShellProfileAddedMessage(sshProfile));\n            }\n            else\n            {\n                WeakReferenceMessenger.Default.Send(new ShellProfileChangedMessage(sshProfile));\n            }\n        }\n\n        public void SaveTerminalOptions(TerminalOptions terminalOptions)\n        {\n            _roamingSettings.WriteValueAsJson(nameof(TerminalOptions), terminalOptions);\n            WeakReferenceMessenger.Default.Send(new TerminalOptionsChangedMessage(terminalOptions));\n        }\n\n        public void SaveTheme(TerminalTheme theme, bool newTheme = false)\n        {\n            _themes.WriteValueAsJson(theme.Id.ToString(), theme);\n\n            if (theme.Id == GetCurrentThemeId())\n            {\n                WeakReferenceMessenger.Default.Send(new CurrentThemeChangedMessage(theme.Id));\n            }\n\n            if (newTheme)\n            {\n                WeakReferenceMessenger.Default.Send(new ThemeAddedMessage(theme));\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/ShellProfileMigrationService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing System;\nusing System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class ShellProfileMigrationService : IShellProfileMigrationService\n    {\n        private readonly Dictionary<int, Action<ShellProfile>> _migrationSteps = new Dictionary<int, Action<ShellProfile>>\n        {\n            [1] = new Action<ShellProfile>(profile =>\n            {\n                profile.EnvironmentVariables[\"TERM\"] = \"xterm-256color\";\n            })\n        };\n\n\n        public void Migrate(ShellProfile profile)\n        {\n            while(profile.MigrationVersion < ShellProfile.CurrentMigrationVersion)\n            {\n                ApplyMigrationStep(profile, profile.MigrationVersion + 1);\n            }\n        }\n\n        private void ApplyMigrationStep(ShellProfile profile, int targetVersion)\n        {\n            _migrationSteps[targetVersion](profile);\n            profile.MigrationVersion = targetVersion;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/ThemeParserFactory.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class ThemeParserFactory : IThemeParserFactory\n    {\n        private readonly IEnumerable<IThemeParser> _parsers;\n\n        public IEnumerable<string> SupportedFileTypes { get; }\n\n        public ThemeParserFactory(IEnumerable<IThemeParser> parsers)\n        {\n            _parsers = parsers;\n            SupportedFileTypes = _parsers.SelectMany(p => p.SupportedFileTypes);\n        }\n\n        public IThemeParser GetParser(string fileType)\n        {\n            return _parsers.FirstOrDefault(p => p.SupportedFileTypes.Contains(fileType));\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/TrayProcessCommunicationService.cs",
    "content": "﻿using FluentTerminal.App.Services.Exceptions;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing FluentTerminal.Models.Requests;\nusing FluentTerminal.Models.Responses;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.Foundation.Collections;\nusing FluentTerminal.App.Services.Utilities;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class TrayProcessCommunicationService : ITrayProcessCommunicationService\n    {\n        #region Static\n\n        private static string _userName;\n        private static string _sshConfigDir;\n        private static readonly Dictionary<string, string> CommandPaths = new Dictionary<string, string>();\n        private static readonly Dictionary<string, string> CommandErrors = new Dictionary<string, string>();\n\n        private static ValueSet CreateMessage(IMessage content)\n        {\n            return new ValueSet\n            {\n                [MessageKeys.Type] = content.Identifier,\n                [MessageKeys.Content] = JsonConvert.SerializeObject(content,\n                    PreserveDictionaryKeyCaseContractResolver.SerializerSettings)\n            };\n        }\n\n        #endregion Static\n\n        private readonly ISettingsService _settingsService;\n        private IAppServiceConnection _appServiceConnection;\n        private readonly Dictionary<byte, Action<byte[]>> _terminalOutputHandlers;\n        // ReSharper disable once RedundantDefaultMemberInitializer\n        private byte _nextTerminalId = 0;\n\n        public event EventHandler<TerminalExitStatus> TerminalExited;\n\n        public TrayProcessCommunicationService(ISettingsService settingsService)\n        {\n            _settingsService = settingsService;\n            _terminalOutputHandlers = new Dictionary<byte, Action<byte[]>>();\n        }\n\n        public byte GetNextTerminalId()\n        {\n            return _nextTerminalId++;\n        }\n\n        public async Task<string> GetUserNameAsync()\n        {\n            if (!string.IsNullOrEmpty(_userName))\n            {\n                // Returning the username from cache\n                return _userName;\n            }\n\n            var response = await GetResponseAsync<StringValueResponse>(new GetUserNameRequest()).ConfigureAwait(false);\n\n            if (response.Success)\n            {\n                _userName = response.Value;\n            }\n\n            return _userName;\n        }\n\n        public async Task SaveTextFileAsync(string path, string content)\n        {\n            var response =\n                await GetResponseAsync<CommonResponse>(new SaveTextFileRequest {Path = path, Content = content})\n                    .ConfigureAwait(false);\n\n            if (!response.Success)\n            {\n                throw new SaveTextFileException(string.IsNullOrEmpty(response.Error)\n                    ? \"Failed to save the file.\"\n                    : response.Error);\n            }\n        }\n\n        public async Task<string> ReadTextFileAsync(string path)\n        {\n            var response = await GetResponseAsync<StringValueResponse>(new ReadTextFileRequest { Path = path }).ConfigureAwait(false);\n\n            if (!response.Success)\n            {\n                throw new ReadTextFileException(string.IsNullOrWhiteSpace(response.Error) ? \"Failed to read the file.\" : response.Error);\n            }\n\n            return response.Value;\n        }\n\n        public async Task<string> GetSshConfigDirAsync()\n        {\n            if (!string.IsNullOrEmpty(_sshConfigDir))\n            {\n                return _sshConfigDir;\n            }\n\n            var response =\n                await GetResponseAsync<GetSshConfigFolderResponse>(new GetSshConfigFolderRequest\n                    { IncludeContent = false }).ConfigureAwait(false);\n\n            if (response.Success)\n            {\n                _sshConfigDir = response.Path;\n            }\n\n            return _sshConfigDir;\n        }\n\n        public async Task<string[]> GetFilesFromSshConfigDirAsync()\n        {\n            var response =\n                await GetResponseAsync<GetSshConfigFolderResponse>(new GetSshConfigFolderRequest\n                    {IncludeContent = true}).ConfigureAwait(false);\n\n            if (response.Success)\n            {\n                _sshConfigDir = response.Path;\n\n                return response.Files;\n            }\n\n            return null;\n        }\n\n        public async Task<bool> CheckFileExistsAsync(string path)\n        {\n            var response = await GetResponseAsync<CommonResponse>(new CheckFileExistsRequest {Path = path})\n                .ConfigureAwait(false);\n\n            return response.Success;\n        }\n\n        public Task MuteTerminalAsync(bool mute)\n        {\n            return _appServiceConnection.SendMessageAsync(CreateMessage(new MuteTerminalRequest {Mute = mute}));\n        }\n\n        public void UpdateSettings(ApplicationSettings settings)\n        {\n            _appServiceConnection.SendMessageAsync(CreateMessage(new UpdateSettingsRequest { Settings = settings }));\n        }\n\n        public async Task<CreateTerminalResponse> CreateTerminalAsync(byte id, TerminalSize size, ShellProfile shellProfile,\n            SessionType sessionType)\n        {\n            var request = new CreateTerminalRequest\n            {\n                Id = id,\n                Size = size,\n                Profile = shellProfile,\n                SessionType = sessionType\n            };\n\n            Logger.Instance.Debug(\"Sending CreateTerminalRequest: {@request}\", request);\n\n            var response = await GetResponseAsync<CreateTerminalResponse>(request).ConfigureAwait(false);\n\n            Logger.Instance.Debug(\"Received CreateTerminalResponse: {@response}\", response);\n\n            return response;\n        }\n\n        public Task<PauseTerminalOutputResponse> PauseTerminalOutputAsync(byte id, bool pause)\n        {\n            return GetResponseAsync<PauseTerminalOutputResponse>(\n                new PauseTerminalOutputRequest {Id = id, Pause = pause});\n        }\n\n        public void Initialize(IAppServiceConnection appServiceConnection)\n        {\n            _appServiceConnection = appServiceConnection;\n            _appServiceConnection.MessageReceived += OnMessageReceived;\n        }\n\n        private void OnMessageReceived(object sender, IDictionary<string, object> e)\n        {\n            var messageType = (byte)e[MessageKeys.Type];\n            var messageContent = e[MessageKeys.Content];\n\n            switch (messageType)\n            {\n                case Constants.TerminalBufferRequestIdentifier:\n                    var terminalId = (byte)e[MessageKeys.TerminalId];\n\n                    if (_terminalOutputHandlers.ContainsKey(terminalId))\n                    {\n                        _terminalOutputHandlers[terminalId].Invoke((byte[])messageContent);\n                    }\n                    else\n                    {\n                        Logger.Instance.Error(\"Received output for unknown terminal Id {id}\", terminalId);\n                    }\n                    break;\n                case (byte) MessageIdentifiers.TerminalExitedRequest:\n                    var request = JsonConvert.DeserializeObject<TerminalExitedRequest>((string)messageContent);\n                    Logger.Instance.Debug(\"Received TerminalExitedRequest: {@request}\", request);\n\n                    TerminalExited?.Invoke(this, request.ToStatus());\n                    break;\n                default:\n                    Logger.Instance.Error(\"Received unknown message type: {messageType}\", messageType);\n                    break;\n            }\n        }\n\n        public Task ResizeTerminalAsync(byte id, TerminalSize size)\n        {\n            return _appServiceConnection.SendMessageAsync(CreateMessage(new ResizeTerminalRequest\n                {TerminalId = id, NewSize = size}));\n        }\n\n        public void SubscribeForTerminalOutput(byte terminalId, Action<byte[]> callback)\n        {\n            _terminalOutputHandlers[terminalId] = callback;\n        }\n\n        public void UnsubscribeFromTerminalOutput(byte id)\n        {\n            if (_terminalOutputHandlers.ContainsKey(id))\n            {\n                _terminalOutputHandlers.Remove(id);\n            }\n        }\n\n        public Task UpdateToggleWindowKeyBindingsAsync()\n        {\n            var keyBindings = _settingsService.GetCommandKeyBindings()[nameof(Command.ToggleWindow)];\n\n            return _appServiceConnection.SendMessageAsync(CreateMessage(new SetToggleWindowKeyBindingsRequest\n                {KeyBindings = keyBindings}));\n        }\n\n        public Task WriteAsync(byte id, byte[] data)\n        {\n            var message = new ValueSet\n            {\n                [MessageKeys.Type] = Constants.TerminalBufferRequestIdentifier,\n                [MessageKeys.TerminalId] = id,\n                [MessageKeys.Content] = data\n            };\n\n            return _appServiceConnection.SendMessageAsync(message);\n        }\n\n        public Task CloseTerminalAsync(byte terminalId)\n        {\n            var request = new TerminalExitedRequest(terminalId, -1);\n\n            Logger.Instance.Debug(\"Sending TerminalExitedRequest: {@request}\", request);\n\n            return _appServiceConnection.SendMessageAsync(CreateMessage(request));\n        }\n\n        public async Task<string> GetCommandPathAsync(string command)\n        {\n            if (string.IsNullOrWhiteSpace(command))\n            {\n                throw new ArgumentException(\"Input value is null or empty.\", nameof(command));\n            }\n\n            command = command.Trim();\n\n            var commandLower = command.ToLowerInvariant();\n\n            if (CommandPaths.TryGetValue(commandLower, out var path))\n            {\n                return path;\n            }\n\n            if (CommandErrors.TryGetValue(commandLower, out var error))\n            {\n                throw new Exception(error);\n            }\n\n            var response = await GetResponseAsync<StringValueResponse>(new GetCommandPathRequest {Command = command})\n                .ConfigureAwait(false);\n\n            if (response.Success)\n            {\n                CommandPaths[commandLower] = response.Value;\n\n                return response.Value;\n            }\n\n            CommandErrors[commandLower] = response.Error;\n\n            throw new Exception(response.Error);\n        }\n\n        public Task QuitApplicationAsync()\n        {\n            return _appServiceConnection.SendMessageAsync(CreateMessage(new QuitApplicationRequest()));\n        }\n\n        private async Task<T> GetResponseAsync<T>(IMessage request)\n        {\n            var messageResponse =\n                await _appServiceConnection.SendMessageAsync(CreateMessage(request)).ConfigureAwait(false);\n\n            return JsonConvert.DeserializeObject<T>((string)messageResponse[MessageKeys.Content]);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Implementation/UpdateService.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel;\nusing Newtonsoft.Json;\nusing RestSharp;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Implementation\n{\n    public class UpdateService : IUpdateService\n    {\n        private const string apiEndpoint = \"https://api.github.com\";\n\n        private readonly INotificationService _notificationService;\n\n        public UpdateService(INotificationService notificationService)\n        {\n            _notificationService = notificationService;\n        }\n\n        public async Task CheckForUpdateAsync(bool notifyNoUpdate = false)\n        {\n            var latest = await GetLatestVersionAsync().ConfigureAwait(false);\n            if (latest > GetCurrentVersion())\n            {\n                _notificationService.ShowNotification(\"Update available\",\n                    \"Click to open the releases page.\", \"https://github.com/felixse/FluentTerminal/releases\");\n            }\n            else if (notifyNoUpdate)\n            {\n                _notificationService.ShowNotification(\"No update available\", \"You're up to date!\");\n            }\n        }\n\n        public Version GetCurrentVersion()\n        {\n            var currentVersion = Package.Current.Id.Version;\n            return new Version(currentVersion.Major, currentVersion.Minor, currentVersion.Build, currentVersion.Revision);\n        }\n\n        public async Task<Version> GetLatestVersionAsync()\n        {\n            var restClient = new RestClient(apiEndpoint);\n            var restRequest = new RestRequest(\"/repos/felixse/fluentterminal/releases\", Method.Get);\n\n            var restResponse = await restClient.ExecuteAsync(restRequest).ConfigureAwait(false);\n            if (restResponse.IsSuccessful)\n            {\n                dynamic restResponseData = JsonConvert.DeserializeObject(restResponse.Content);\n                string tag = restResponseData[0].tag_name;\n                var latestVersion = new Version(tag);\n                return new Version(latestVersion.Major, latestVersion.Minor, latestVersion.Build, latestVersion.Revision);\n            }\n            return new Version(0, 0, 0, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Logger.cs",
    "content": "﻿using Serilog;\nusing Serilog.Events;\nusing System;\n\nnamespace FluentTerminal.App.Services\n{\n    public sealed class Logger\n    {\n        public enum LogLevel\n        {\n            Verbose = 0,\n            Debug = 1,\n            Information = 2,\n            Warning = 3,\n            Error = 4,\n            Fatal = 5\n        }\n\n        public class Configuration\n        {\n            public LogLevel LogLevel { get; set; } = LogLevel.Error;\n        }\n\n        public static Logger Instance { get; } = new Logger();\n\n        private Logger()\n        {\n\n        }\n\n        public void Initialize(string filePath, Configuration configuration)\n        {\n            Log.Logger = new LoggerConfiguration()\n            .WriteTo.Async(a => a.File(filePath, rollingInterval: RollingInterval.Day, retainedFileCountLimit: 7))\n            .MinimumLevel.Is((LogEventLevel)configuration.LogLevel)\n            .CreateLogger();\n\n            // Log file is not created during unhandled exception processing.\n            // Force log file creation with the highest severity initialization record.\n            Log.Fatal(\"Initialized\");\n        }\n\n        public void Debug(string text, params object[] propertyValues)\n        {\n            Log.Debug(text, propertyValues, propertyValues);\n        }\n\n        public void Information(string text, params object[] propertyValues)\n        {\n            Log.Information(text, propertyValues);\n        }\n\n        public void Warning(string text, params object[] propertyValues)\n        {\n            Log.Warning(text, propertyValues);\n        }\n\n        public void Error(string text, params object[] propertyValues)\n        {\n            Log.Error(text, propertyValues);\n        }\n\n        public void Error(Exception exception, string text, params object[] propertyValues)\n        {\n            Log.Error(exception, text, propertyValues);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Terminal.cs",
    "content": "﻿using FluentTerminal.Models;\r\nusing FluentTerminal.Models.Enums;\r\nusing FluentTerminal.Models.Responses;\r\nusing System;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace FluentTerminal.App.Services\r\n{\r\n    public class Terminal\r\n    {\r\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\r\n        private Func<Task<string>> _selectedTextCallback;\r\n        private bool _closingFromUi;\r\n        private bool _exited;\r\n        private readonly bool _requireShellProcessStart;\r\n        private string _fallbackTitle;\r\n\r\n        public Terminal(ITrayProcessCommunicationService trayProcessCommunicationService, byte? terminalId = null)\r\n        {\r\n            _trayProcessCommunicationService = trayProcessCommunicationService;\r\n            _trayProcessCommunicationService.TerminalExited += OnTerminalExited;\r\n            Id = terminalId ?? trayProcessCommunicationService.GetNextTerminalId();\r\n            _requireShellProcessStart = !terminalId.HasValue;\r\n        }\r\n\r\n        public void Reconnect()\r\n        {\r\n            _exited = false;\r\n            _trayProcessCommunicationService.TerminalExited += OnTerminalExited;\r\n        }\r\n\r\n        private void OnTerminalExited(object sender, TerminalExitStatus status)\r\n        {\r\n            if (status.TerminalId != Id)\r\n            {\r\n                return;\r\n            }\r\n\r\n            _exited = true;\r\n            Exited?.Invoke(this, status.ExitCode);\r\n\r\n            if (_closingFromUi || status.ExitCode <= 0)\r\n            {\r\n                Closed?.Invoke(this, System.EventArgs.Empty);\r\n            }\r\n\r\n            _trayProcessCommunicationService.TerminalExited -= OnTerminalExited;\r\n        }\r\n\r\n        public event EventHandler<int> Exited;\r\n\r\n        /// <summary>\r\n        /// To be observed by both view and viewmodel\r\n        /// </summary>\r\n        public event EventHandler Closed;\r\n\r\n        /// <summary>\r\n        /// to be observed by viewmodel\r\n        /// </summary>\r\n        public event EventHandler<string> KeyboardCommandReceived;\r\n\r\n        /// <summary>\r\n        /// to be observed by view\r\n        /// </summary>\r\n        public event EventHandler<byte[]> OutputReceived;\r\n\r\n        /// <summary>\r\n        /// to be observed by viewmodel\r\n        /// </summary>\r\n        public event EventHandler<TerminalSize> SizeChanged;\r\n\r\n        /// <summary>\r\n        /// to be observed by viewmodel\r\n        /// </summary>\r\n        public event EventHandler<string> TitleChanged;\r\n\r\n        public byte Id { get; }\r\n\r\n        public ShellProfile Profile { get; private set; }\r\n\r\n        /// <summary>\r\n        /// To be called by either view or viewmodel\r\n        /// </summary>\r\n        public Task CloseAsync()\r\n        {\r\n            if (_exited)\r\n            {\r\n                Closed?.Invoke(this, System.EventArgs.Empty);\r\n                return Task.CompletedTask;\r\n            }\r\n            _closingFromUi = true;\r\n            _trayProcessCommunicationService.UnsubscribeFromTerminalOutput(Id);\r\n            return _trayProcessCommunicationService.CloseTerminalAsync(Id);\r\n        }\r\n\r\n        /// <summary>\r\n        /// to be called by viewmodel\r\n        /// </summary>\r\n        /// <returns></returns>\r\n        public Task<string> GetSelectedText()\r\n        {\r\n            return _selectedTextCallback?.Invoke();\r\n        }\r\n\r\n        /// <summary>\r\n        /// to be called by view\r\n        /// </summary>\r\n        public void ProcessKeyboardCommand(string command)\r\n        {\r\n            KeyboardCommandReceived?.Invoke(this, command);\r\n        }\r\n\r\n        /// <summary>\r\n        /// To be set by view\r\n        /// </summary>\r\n        public void RegisterSelectedTextCallback(Func<Task<string>> selectedTextCallback)\r\n        {\r\n            _selectedTextCallback = selectedTextCallback;\r\n        }\r\n\r\n        /// <summary>\r\n        /// To be called by view\r\n        /// </summary>\r\n        public async Task SetSizeAsync(TerminalSize size)\r\n        {\r\n            await _trayProcessCommunicationService.ResizeTerminalAsync(Id, size).ConfigureAwait(false);\r\n            SizeChanged?.Invoke(this, size);\r\n        }\r\n\r\n        /// <summary>\r\n        /// to be called by view\r\n        /// </summary>\r\n        public void SetTitle(string title)\r\n        {\r\n            if (string.IsNullOrWhiteSpace(title))\r\n            {\r\n                title = _fallbackTitle;\r\n            }\r\n            TitleChanged?.Invoke(this, title);\r\n        }\r\n\r\n        /// <summary>\r\n        /// To be called by view when ready\r\n        /// </summary>\r\n        public async Task<TerminalResponse> StartShellProcessAsync(ShellProfile shellProfile, TerminalSize size, SessionType sessionType, string termState)\r\n        {\r\n            Profile = shellProfile;\r\n\r\n            if (!_requireShellProcessStart && !string.IsNullOrEmpty(termState))\r\n            {\r\n                OutputReceived?.Invoke(this, Encoding.UTF8.GetBytes(termState));\r\n            }\r\n\r\n            _trayProcessCommunicationService.SubscribeForTerminalOutput(Id, t => OutputReceived?.Invoke(this, t));\r\n\r\n            if (_requireShellProcessStart)\r\n            {\r\n                var response = await _trayProcessCommunicationService\r\n                    .CreateTerminalAsync(Id, size, shellProfile, sessionType).ConfigureAwait(false);\r\n\r\n                if (response.Success)\r\n                {\r\n                    _fallbackTitle = response.Name;\r\n                    SetTitle(_fallbackTitle);\r\n                }\r\n                return response;\r\n            }\r\n            else\r\n            {\r\n                return await _trayProcessCommunicationService.PauseTerminalOutputAsync(Id, false);\r\n            }\r\n        }\r\n\r\n        public Task Write(byte[] data)\r\n        {\r\n            return _trayProcessCommunicationService.WriteAsync(Id, data);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Tells the ViewModel that this view failed to launch and can be closed.\r\n        /// </summary>\r\n        public void ReportLauchFailed()\r\n        {\r\n            Closed?.Invoke(this, System.EventArgs.Empty);\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Utilities/EnumHelper.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\n\nnamespace FluentTerminal.App.Services.Utilities\n{\n    public static class EnumHelper\n    {\n        public static string GetEnumDescription(Enum value)\n        {\n            var fieldInfo = value.GetType().GetField(value.ToString());\n\n            var attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);\n\n            if (attributes?.Length > 0)\n            {\n                return attributes[0].Description;\n            }\n            return value.ToString();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services/Utilities/I18N.cs",
    "content": "﻿using Windows.ApplicationModel.Resources;\n\nnamespace FluentTerminal.App.Services.Utilities\n{\n    /// <summary>\n    /// Get strings in different languages.\n    /// Author: Zuozishi\n    /// </summary>\n    public static class I18N\n    {\n        private static readonly ResourceLoader ResourceLoader = ResourceLoader.GetForViewIndependentUse();\n\n        public static string Translate(string resource)\n        {\n            return ResourceLoader.GetString(resource.Replace('.', '/'));\n        }\n\n        public static string TranslateWithFallback(string resource, string fallback)\n        {\n            var result = Translate(resource);\n\n            return string.IsNullOrEmpty(result) ? fallback : result;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Utilities/PreserveDictionaryKeyCaseContractResolver.cs",
    "content": "﻿using System;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Serialization;\n\nnamespace FluentTerminal.App.Services.Utilities\n{\n    public class PreserveDictionaryKeyCaseContractResolver : DefaultContractResolver\n    {\n        public static readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings\n            { ContractResolver = new PreserveDictionaryKeyCaseContractResolver() };\n\n        protected override JsonDictionaryContract CreateDictionaryContract(Type objectType)\n        {\n            var contract = base.CreateDictionaryContract(objectType);\n\n            contract.DictionaryKeyResolver = key => key;\n\n            return contract;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services/Utilities/TerminalThemeContractResolver.cs",
    "content": "﻿using FluentTerminal.Models;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Serialization;\nusing System.Reflection;\n\nnamespace FluentTerminal.App.Services.Utilities\n{\n    public class TerminalThemeContractResolver : PreserveDictionaryKeyCaseContractResolver\n    {\n        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)\n        {\n            JsonProperty property = base.CreateProperty(member, memberSerialization);\n\n            if (property.DeclaringType == typeof(TerminalTheme) && property.PropertyName == nameof(TerminalTheme.PreInstalled))\n            {\n                property.ShouldSerialize = (_) => false;\n            }\n\n            if (property.DeclaringType == typeof(TerminalTheme) && property.PropertyName == nameof(TerminalTheme.Id))\n            {\n                property.ShouldSerialize = (_) => false;\n            }\n\n            return property;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services.Test/DefaultValueProviderTests.cs",
    "content": "﻿using FluentAssertions;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.Models.Enums;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Xunit;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class DefaultValueProviderTests\n    {\n        public static IEnumerable<object[]> Commands => System.Enum.GetValues(typeof(Command)).Cast<Command>().Select(x => new object[] { x });\n\n        [Fact]\n        public void GetDefaultApplicationSettings_Default_DoesNotReturnNull()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var applicationSettings = defaultValueProvider.GetDefaultApplicationSettings();\n\n            applicationSettings.Should().NotBeNull();\n        }\n\n        [Theory]\n        [MemberData(nameof(Commands))]\n        public void GetDefaultKeyBindings_AllCommands_ReturnsANonEmptyList(Command command)\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var keyBindings = defaultValueProvider.GetDefaultKeyBindings(command);\n\n            keyBindings.Should().NotBeNullOrEmpty();\n        }\n\n        [Fact]\n        public void GetDefaultShellProfileId_Default_DoesNotReturnEmptyGuid()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var defaultShellProfileId = defaultValueProvider.GetDefaultShellProfileId();\n\n            defaultShellProfileId.Should().NotBeEmpty();\n        }\n\n        [Fact]\n        public void GetDefaultShellProfileId_Default_IdIsOneOfThePreInstalledShellProfiles()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n            var shellProfiles = defaultValueProvider.GetPreinstalledShellProfiles();\n\n            var defaultShellProfileId = defaultValueProvider.GetDefaultShellProfileId();\n\n            shellProfiles.Select(x => x.Id).Should().Contain(defaultShellProfileId);\n        }\n\n        [Fact]\n        public void GetDefaultTerminalOptions_Default_DoesNotReturnNull()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var defaultTerminalOptions = defaultValueProvider.GetDefaultTerminalOptions();\n\n            defaultTerminalOptions.Should().NotBeNull();\n        }\n\n        [Fact]\n        public void GetDefaultThemeId_Default_DoesNotReturnEmptyGuid()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var defaultThemeId = defaultValueProvider.GetDefaultThemeId();\n\n            defaultThemeId.Should().NotBeEmpty();\n        }\n\n        [Fact]\n        public void GetDefaultThemeId_Default_IdIsOneOfThePreInstalledThemes()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n            var themes = defaultValueProvider.GetPreInstalledThemes();\n\n            var defaultThemeId = defaultValueProvider.GetDefaultThemeId();\n\n            themes.Select(x => x.Id).Should().Contain(defaultThemeId);\n        }\n\n        [Fact]\n        public void GetPreinstalledShellProfiles_Default_ReturnsANonEmptyList()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var shellProfiles = defaultValueProvider.GetPreinstalledShellProfiles();\n\n            shellProfiles.Should().NotBeNullOrEmpty();\n        }\n\n        [Fact]\n        public void GetPreinstalledShellProfiles_Default_HaveUniqueIds()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var shellProfiles = defaultValueProvider.GetPreinstalledShellProfiles();\n\n            shellProfiles.Select(x => x.Id).Should().OnlyHaveUniqueItems();\n        }\n\n        [Fact]\n        public void GetPreinstalledShellProfiles_Default_HavePreInstalledSetToTrue()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var shellProfiles = defaultValueProvider.GetPreinstalledShellProfiles();\n\n            shellProfiles.Select(x => x.PreInstalled).Should().AllBeEquivalentTo(true);\n        }\n\n        [Fact]\n        public void GetPreinstalledShellProfiles_Default_HaveNonEmptyLocations()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var shellProfiles = defaultValueProvider.GetPreinstalledShellProfiles();\n\n            shellProfiles.Select(x => x.Location).Should().NotBeNullOrEmpty();\n        }\n\n        [Fact]\n        public void GetPreInstalledThemes_Default_ReturnsANonEmptyList()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var themes = defaultValueProvider.GetPreInstalledThemes();\n\n            themes.Should().NotBeNullOrEmpty();\n        }\n\n        [Fact]\n        public void GetPreinstalledThemes_Default_HaveUniqueIds()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var themes = defaultValueProvider.GetPreInstalledThemes();\n\n            themes.Select(x => x.Id).Should().OnlyHaveUniqueItems();\n        }\n\n        [Fact]\n        public void GetPreinstalledThemes_Default_HavePreInstalledSetToTrue()\n        {\n            var defaultValueProvider = new DefaultValueProvider();\n\n            var themes = defaultValueProvider.GetPreInstalledThemes();\n\n            themes.Select(x => x.PreInstalled).Should().AllBeEquivalentTo(true);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services.Test/DialogServiceTests.cs",
    "content": "﻿using AutoFixture;\nusing FluentAssertions;\nusing FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Services.Implementation;\nusing Moq;\nusing System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class DialogServiceTests\n    {\n        private readonly Fixture _fixture;\n\n        public DialogServiceTests()\n        {\n            _fixture = new Fixture();\n        }\n\n        [Fact]\n        public void ShowCreateKeyBindingDialog_Default_UsesCreateKeyBindingDialog()\n        {\n            var createKeyBindingDialog = new Mock<ICreateKeyBindingDialog>();\n            var dialogService = new DialogService(Mock.Of<IMessageDialog>, () => createKeyBindingDialog.Object, Mock.Of<IInputDialog>, Mock.Of<ISshConnectionInfoDialog>, Mock.Of<ICustomCommandDialog>, Mock.Of<IAboutDialog>);\n\n            dialogService.ShowCreateKeyBindingDialog();\n\n            createKeyBindingDialog.Verify(x => x.CreateKeyBinding(), Times.Once);\n        }\n\n        [Fact]\n        public async Task ShowMessageDialogAsnyc_TitleIsEmpty_ThrowsArgumentNullException()\n        {\n            var title = string.Empty;\n            var content = _fixture.Create<string>();\n            var buttons = _fixture.CreateMany<DialogButton>(2);\n            var dialogService = new DialogService(Mock.Of<IMessageDialog>, Mock.Of<ICreateKeyBindingDialog>, Mock.Of<IInputDialog>, Mock.Of<ISshConnectionInfoDialog>, Mock.Of<ICustomCommandDialog>, Mock.Of<IAboutDialog>);\n\n            Func<Task<DialogButton>> showMessageDialogAsnyc = () => dialogService.ShowMessageDialogAsync(title, content, buttons.ElementAt(0), buttons.ElementAt(1));\n\n            await showMessageDialogAsnyc.Should().ThrowAsync<ArgumentNullException>().WithParameterName(\"title\");\n        }\n\n        [Fact]\n        public async Task ShowMessageDialogAsnyc_ContentIsEmpty_ThrowsArgumentNullException()\n        {\n            var title = _fixture.Create<string>();\n            var content = string.Empty;\n            var buttons = _fixture.CreateMany<DialogButton>(2);\n            var dialogService = new DialogService(Mock.Of<IMessageDialog>, Mock.Of<ICreateKeyBindingDialog>, Mock.Of<IInputDialog>, Mock.Of<ISshConnectionInfoDialog>, Mock.Of<ICustomCommandDialog>, Mock.Of<IAboutDialog>);\n\n            Func<Task<DialogButton>> showMessageDialogAsnyc = () => dialogService.ShowMessageDialogAsync(title, content, buttons.ElementAt(0), buttons.ElementAt(1));\n\n            await showMessageDialogAsnyc.Should().ThrowAsync<ArgumentNullException>().WithParameterName(\"content\");\n        }\n\n        [Fact]\n        public async Task ShowMessageDialogAsnyc_NoButtonsPassed_ThrowsArgumentException()\n        {\n            var title = _fixture.Create<string>();\n            var content = _fixture.Create<string>();\n            var dialogService = new DialogService(Mock.Of<IMessageDialog>, Mock.Of<ICreateKeyBindingDialog>, Mock.Of<IInputDialog>, Mock.Of<ISshConnectionInfoDialog>, Mock.Of<ICustomCommandDialog>, Mock.Of<IAboutDialog>);\n\n            Func<Task<DialogButton>> showMessageDialogAsnyc = () => dialogService.ShowMessageDialogAsync(title, content);\n\n            await showMessageDialogAsnyc.Should().ThrowAsync<ArgumentException>().WithParameterName(\"buttons\");\n        }\n\n        [Fact]\n        public void ShowMessageDialogAsnyc_Default_UsesMessageDialog()\n        {\n            var title = _fixture.Create<string>();\n            var content = _fixture.Create<string>();\n            var buttons = _fixture.CreateMany<DialogButton>(2);\n            var messageDialog = new Mock<IMessageDialog>();\n            var dialogService = new DialogService(() => messageDialog.Object, Mock.Of<ICreateKeyBindingDialog>, Mock.Of<IInputDialog>, Mock.Of<ISshConnectionInfoDialog>, Mock.Of<ICustomCommandDialog>, Mock.Of<IAboutDialog>);\n\n            dialogService.ShowMessageDialogAsync(title, content, buttons.ElementAt(0), buttons.ElementAt(1));\n\n            messageDialog.Verify(x => x.ShowAsync(), Times.Once);\n        }\n        \n        [Fact]\n        public void ShowInputDialogAsync_UsesIInputDialogSetTitle()\n        {\n            var title = \"title\";\n            var inputDialog = new Mock<IInputDialog>();            \n            var dialogService = new DialogService(Mock.Of<IMessageDialog>, Mock.Of<ICreateKeyBindingDialog>, () => inputDialog.Object, Mock.Of<ISshConnectionInfoDialog>, Mock.Of<ICustomCommandDialog>, Mock.Of<IAboutDialog>);\n\n            dialogService.ShowInputDialogAsync(title);\n\n            inputDialog.Verify(x => x.SetTitle(title), Times.Once);\n            inputDialog.Verify(x => x.GetInput(), Times.Once);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services.Test/FluentTerminal.App.Services.Test.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netcoreapp3.1</TargetFramework>\n\n    <IsPackable>false</IsPackable>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <None Remove=\"TestData\\AdventureTime.itermcolors\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"AutoFixture\" Version=\"4.17.0\" />\n    <PackageReference Include=\"FluentAssertions\" Version=\"6.5.1\" />\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"17.1.0\" />\n    <PackageReference Include=\"Moq\" Version=\"4.17.2\" />\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.2\" />\n    <PackageReference Include=\"xunit\" Version=\"2.4.1\" />\n    <PackageReference Include=\"xunit.runner.visualstudio\" Version=\"2.4.3\">\n      <PrivateAssets>all</PrivateAssets>\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>\n    </PackageReference>\n    <DotNetCliToolReference Include=\"dotnet-xunit\" Version=\"2.3.1\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <EmbeddedResource Include=\"TestData\\AdventureTime.itermcolors\">\n      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\n    </EmbeddedResource>\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\FluentTerminal.App.Services\\FluentTerminal.App.Services.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <Reference Include=\"Windows.Foundation.FoundationContract\">\n      <HintPath>$(MSBuildProgramFiles32)\\Windows Kits\\10\\References\\10.0.19041.0\\Windows.Foundation.FoundationContract\\4.0.0.0\\Windows.Foundation.FoundationContract.winmd</HintPath>\n      <Private>False</Private>\n    </Reference>\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "FluentTerminal.App.Services.Test/FluentTerminalThemeParserTests.cs",
    "content": "﻿using AutoFixture;\nusing FluentAssertions;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.Models;\nusing Newtonsoft.Json;\nusing System;\nusing System.IO;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class FluentTerminalThemeParserTests\n    {\n        private readonly Fixture _fixture;\n\n        public FluentTerminalThemeParserTests()\n        {\n            _fixture = new Fixture();\n        }\n\n        [Fact]\n        public async Task Parse_ValidFileStream_ReturnsTheme()\n        {\n            var theme = _fixture.Create<TerminalTheme>();\n            var serialized = JsonConvert.SerializeObject(theme);\n            var stream = new MemoryStream(Encoding.UTF8.GetBytes(serialized));\n            var parser = new FluentTerminalThemeParser();\n\n            var parsedTheme = await parser.Parse(theme.Name, stream);\n\n            parsedTheme.Name.Should().Be(theme.Name);\n            parsedTheme.Author.Should().Be(theme.Author);\n            parsedTheme.PreInstalled.Should().Be(false);\n            parsedTheme.Colors.Should().BeEquivalentTo(theme.Colors);\n        }\n\n        [Fact]\n        public async Task Parse_InvalidFileStream_ThrowsException()\n        {\n            var fileName = _fixture.Create<string>();\n            var serialized = _fixture.Create<string>();\n            var stream = new MemoryStream(Encoding.UTF8.GetBytes(serialized));\n            var parser = new FluentTerminalThemeParser();\n\n            Func<Task<TerminalTheme>> parse = () => parser.Parse(fileName, stream);\n\n            await parse.Should().ThrowAsync<Exception>();\n        }\n\n        [Theory]\n        [InlineData(null)]\n        [InlineData(\"\")]\n        [InlineData(\" \")]\n        public async Task Parse_InvalidFileName_ThrowsArgumentNullException(string fileName)\n        {\n            var theme = _fixture.Create<TerminalTheme>();\n            var serialized = JsonConvert.SerializeObject(theme);\n            var stream = new MemoryStream(Encoding.UTF8.GetBytes(serialized));\n            var parser = new FluentTerminalThemeParser();\n\n            Func<Task<TerminalTheme>> parse = () => parser.Parse(fileName, stream);\n\n            await parse.Should().ThrowAsync<ArgumentNullException>().WithParameterName(\"fileName\");\n        }\n\n        [Fact]\n        public async Task Parse_FileStreamIsNull_ThrowsArgumentNullException()\n        {\n            var fileName = _fixture.Create<string>();\n            Stream stream = null;\n            var parser = new FluentTerminalThemeParser();\n\n            Func<Task<TerminalTheme>> parse = () => parser.Parse(fileName, stream);\n\n            await parse.Should().ThrowAsync<ArgumentNullException>().WithParameterName(\"fileContent\");\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services.Test/ITermThemeParserTests.cs",
    "content": "﻿using AutoFixture;\nusing FluentAssertions;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.Models;\nusing System;\nusing System.IO;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class ITermThemeParserTests\n    {\n        private readonly Fixture _fixture;\n\n        public ITermThemeParserTests()\n        {\n            _fixture = new Fixture();\n        }\n\n        [Theory]\n        [InlineData(null)]\n        [InlineData(\"\")]\n        [InlineData(\" \")]\n        public async Task Parse_InvalidFileName_ThrowsArgumentNullException(string fileName)\n        {\n            var stream = typeof(ITermThemeParserTests).Assembly.GetManifestResourceStream(\"FluentTerminal.App.Services.Test.TestData.AdventureTime.itermcolors\");\n            var parser = new ITermThemeParser();\n\n            Func<Task<TerminalTheme>> parse = () => parser.Parse(fileName, stream);\n\n            await parse.Should().ThrowAsync<ArgumentNullException>().WithParameterName(\"fileName\");\n        }\n\n        [Fact]\n        public async Task Parse_FileStreamIsNull_ThrowsArgumentNullException()\n        {\n            var fileName = _fixture.Create<string>();\n            Stream stream = null;\n            var parser = new ITermThemeParser();\n\n            Func<Task<TerminalTheme>> parse = () => parser.Parse(fileName, stream);\n\n            await parse.Should().ThrowAsync<ArgumentNullException>().WithParameterName(\"fileContent\");\n        }\n\n        [Fact]\n        public async Task Parse_InvalidFileStream_ThrowsException()\n        {\n            var fileName = _fixture.Create<string>();\n            var serialized = _fixture.Create<string>();\n            var stream = new MemoryStream(Encoding.UTF8.GetBytes(serialized));\n            var parser = new ITermThemeParser();\n\n            Func<Task<TerminalTheme>> parse = () => parser.Parse(fileName, stream);\n\n            await parse.Should().ThrowAsync<Exception>();\n        }\n\n        [Fact]\n        public async Task Parse_ValidThemeFile_ParsesCorrectly()\n        {\n            var fileName = _fixture.Create<string>();\n            var stream = typeof(ITermThemeParserTests).Assembly.GetManifestResourceStream(\"FluentTerminal.App.Services.Test.TestData.AdventureTime.itermcolors\");\n            var parser = new ITermThemeParser();\n\n            var theme = await parser.Parse(fileName, stream);\n\n            theme.Colors.Background.ToLower().Should().Be(\"#1f1d45\");\n            theme.Colors.Cursor.ToLower().Should().Be(\"#efbf38\");\n            theme.Colors.Foreground.ToLower().Should().Be(\"#f8dcc0\");\n            theme.Colors.Black.ToLower().Should().Be(\"#050404\");\n            theme.Colors.Red.ToLower().Should().Be(\"#bd0013\");\n            theme.Colors.Green.ToLower().Should().Be(\"#4ab118\");\n            theme.Colors.Yellow.ToLower().Should().Be(\"#e7741e\");\n            theme.Colors.Blue.ToLower().Should().Be(\"#0f4ac6\");\n            theme.Colors.Magenta.ToLower().Should().Be(\"#665993\");\n            theme.Colors.Cyan.ToLower().Should().Be(\"#70a598\");\n            theme.Colors.White.ToLower().Should().Be(\"#f8dcc0\");\n            theme.Colors.BrightBlack.ToLower().Should().Be(\"#4e7cbf\");\n            theme.Colors.BrightRed.ToLower().Should().Be(\"#fc5f5a\");\n            theme.Colors.BrightGreen.ToLower().Should().Be(\"#9eff6e\");\n            theme.Colors.BrightYellow.ToLower().Should().Be(\"#efc11a\");\n            theme.Colors.BrightBlue.ToLower().Should().Be(\"#1997c6\");\n            theme.Colors.BrightMagenta.ToLower().Should().Be(\"#9b5953\");\n            theme.Colors.BrightCyan.ToLower().Should().Be(\"#c8faf4\");\n            theme.Colors.BrightWhite.ToLower().Should().Be(\"#f6f5fb\");\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services.Test/KeyboardCommandServiceTests.cs",
    "content": "﻿using AutoFixture;\nusing FluentAssertions;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing System.Collections.Generic;\nusing Xunit;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class KeyboardCommandServiceTests\n    {\n        private readonly Fixture _fixture;\n\n        public KeyboardCommandServiceTests()\n        {\n            _fixture = new Fixture();\n        }\n\n        [Fact]\n        public void RegisterCommandHandler_HandlerIsNull_ThrowsArgumentNullException()\n        {\n            var command = ((Command)new Random().Next(1, Enum.GetValues(typeof(Command)).Length)).ToString();\n            Action handler = null;\n            var keyboardCommandService = new KeyboardCommandService();\n\n            Action invoke = () => keyboardCommandService.RegisterCommandHandler(command, handler);\n\n            invoke.Should().Throw<ArgumentNullException>().And.ParamName.Should().Be(\"handler\");\n        }\n\n        [Fact]\n        public void RegisterCommandHandler_CommandAlreadyRegisted_ThrowsInvalidOperationException()\n        {\n            var command = ((Command)new Random().Next(1, Enum.GetValues(typeof(Command)).Length)).ToString();\n            var handler = _fixture.Create<Action>();\n            var keyboardCommandService = new KeyboardCommandService();\n            keyboardCommandService.RegisterCommandHandler(command, handler);\n\n            Action invoke = () => keyboardCommandService.RegisterCommandHandler(command, handler);\n\n            invoke.Should().Throw<InvalidOperationException>();\n        }\n        \n        [Fact]\n        public void DeregisterCommandHandler_CommandIsNull_ThrowsArgumentNullException()\n        {\n            var keyboardCommandService = new KeyboardCommandService();\n\n            Action invoke = () => keyboardCommandService.DeregisterCommandHandler(null);\n\n            invoke.Should().Throw<ArgumentNullException>();\n        }\n\n        [Fact]\n        public void DeregisterCommandHandler_CommandRegistered_HandlerGetsRemoved()\n        {\n            var command = ((Command)new Random().Next(1, Enum.GetValues(typeof(Command)).Length)).ToString();\n            var handler = _fixture.Create<Action>();\n            var keyboardCommandService = new KeyboardCommandService();\n\n            keyboardCommandService.RegisterCommandHandler(command, handler);\n\n            Action invoke = () => keyboardCommandService.DeregisterCommandHandler(command);\n\n            invoke.Should().NotThrow();\n        }\n\n        [Fact]\n        public void DeregisterCommandHandler_CommandNotRegistered_ShouldNotThrow()\n        {\n            var command = ((Command)new Random().Next(1, Enum.GetValues(typeof(Command)).Length)).ToString();\n            var keyboardCommandService = new KeyboardCommandService();\n\n            Action invoke = () => keyboardCommandService.DeregisterCommandHandler(command);\n\n            invoke.Should().NotThrow();\n        }\n\n        [Fact]\n        public void SendCommand_CommandIsRegistered_HandlerGetsInvoked()\n        {\n            var command = ((Command)new Random().Next(1, Enum.GetValues(typeof(Command)).Length)).ToString();\n            var handlerCalled = false;\n            var keyboardCommandService = new KeyboardCommandService();\n            keyboardCommandService.RegisterCommandHandler(command, () => handlerCalled = true);\n\n            keyboardCommandService.SendCommand(command);\n\n            handlerCalled.Should().BeTrue();\n        }\n\n        [Fact]\n        public void SendCommand_CommandIsNotRegisted_KeyNotFoundExceptionIsThrown()\n        {\n            var command = ((Command)new Random().Next(1, Enum.GetValues(typeof(Command)).Length)).ToString();\n            var keyboardCommandService = new KeyboardCommandService();\n\n            Action invoke = () => keyboardCommandService.SendCommand(command);\n\n            invoke.Should().Throw<KeyNotFoundException>();\n        }\n        \n        [Fact]\n        public void SendCommand_CommandIsToggleWindow_ShouldNotThrow()\n        {\n            var command = nameof(Command.ToggleWindow);\n            var keyboardCommandService = new KeyboardCommandService();\n\n            Action invoke = () => keyboardCommandService.SendCommand(command);\n\n            invoke.Should().NotThrow();\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.Services.Test/SettingsServiceTests.cs",
    "content": "﻿using AutoFixture;\nusing FluentAssertions;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Moq;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing FluentTerminal.Models.Messages;\nusing Xunit;\nusing Microsoft.Toolkit.Mvvm.Messaging;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class SettingsServiceTests\n    {\n        private readonly Fixture _fixture;\n\n        public SettingsServiceTests()\n        {\n            _fixture = new Fixture();\n        }\n\n        [Fact]\n        public void Constructor_Default_WritesAllPreinstalledThemesInThemeContainer()\n        {\n            var themes = _fixture.CreateMany<TerminalTheme>(3);\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            defaultValueProvider.Setup(x => x.GetPreInstalledThemes()).Returns(themes);\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                Themes = themesContainer.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(), \n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n\n            new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            defaultValueProvider.Verify(x => x.GetPreInstalledThemes(), Times.Once);\n            foreach (var theme in themes)\n            {\n                themesContainer.Verify(x => x.WriteValueAsJson(theme.Id.ToString(), theme), Times.Once);\n            }\n        }\n\n        [Fact]\n        public void Constructor_Default_WritesAllPreinstalledShellProfilesInShellProfilesContainer()\n        {\n            var shellProfiles = _fixture.CreateMany<ShellProfile>(3);\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            defaultValueProvider.Setup(x => x.GetPreinstalledShellProfiles()).Returns(shellProfiles);\n            var shellProfilesContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                ShellProfiles = shellProfilesContainer.Object,\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n\n            new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            defaultValueProvider.Verify(x => x.GetPreinstalledShellProfiles(), Times.Once);\n            foreach (var shellProfile in shellProfiles)\n            {\n                shellProfilesContainer.Verify(x => x.WriteValueAsJson(shellProfile.Id.ToString(), shellProfile), Times.Once);\n            }\n        }\n\n        [Fact]\n        public void GetCurrentThemeId_ValueExistsInRoamingSettings_ReturnsCurrentThemeId()\n        {\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var currentThemeId = (object)_fixture.Create<Guid>();\n            roamingSettings.Setup(x => x.TryGetValue(SettingsService.CurrentThemeKey, out currentThemeId)).Returns(true);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetCurrentThemeId();\n\n            result.Should().Be((Guid)currentThemeId);\n            roamingSettings.Verify(x => x.TryGetValue(SettingsService.CurrentThemeKey, out currentThemeId), Times.Once);\n        }\n\n        [Fact]\n        public void GetCurrentThemeId_ValueDoesNotExistInRoamingSettings_ReturnsDefaultThemeIdFromDefaultValueProvider()\n        {\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            var defaultThemeId = _fixture.Create<Guid>();\n            defaultValueProvider.Setup(x => x.GetDefaultThemeId()).Returns(defaultThemeId);\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var currentThemeId = (object)_fixture.Create<Guid>();\n            roamingSettings.Setup(x => x.TryGetValue(SettingsService.CurrentThemeKey, out currentThemeId)).Returns(false);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            var result = settingsService.GetCurrentThemeId();\n\n            result.Should().Be(defaultThemeId);\n            defaultValueProvider.Verify(x => x.GetDefaultThemeId(), Times.Once);\n            roamingSettings.Verify(x => x.TryGetValue(SettingsService.CurrentThemeKey, out currentThemeId), Times.Once);\n        }\n\n        [Fact]\n        public void SaveCurrentThemeId_Default_SetsValueOnRoamingSettings()\n        {\n            var currentThemeId = _fixture.Create<Guid>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.SaveCurrentThemeId(currentThemeId);\n\n            roamingSettings.Verify(x => x.SetValue(SettingsService.CurrentThemeKey, currentThemeId), Times.Once);\n        }\n\n        [Fact]\n        public void SaveCurrentThemeId_Default_InvokesCurrentThemeChangedEvent()\n        {\n            var currentThemeId = _fixture.Create<Guid>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var currentThemeChangedEventInvoked = false;\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n            WeakReferenceMessenger.Default.Register<CurrentThemeChangedMessage>(this,\n                (r, m) => currentThemeChangedEventInvoked = true);\n\n            settingsService.SaveCurrentThemeId(currentThemeId);\n\n            currentThemeChangedEventInvoked.Should().BeTrue();\n        }\n\n        [Fact]\n        public void SaveTheme_Default_WritesToThemesContainer()\n        {\n            var theme = _fixture.Create<TerminalTheme>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                Themes = themesContainer.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.SaveTheme(theme);\n\n            themesContainer.Verify(x => x.WriteValueAsJson(theme.Id.ToString(), theme), Times.Once);\n        }\n\n        [Fact]\n        public void SaveTheme_ThemeIsCurrentTheme_InvokesCurrentThemeChangedEvent()\n        {\n            var theme = _fixture.Create<TerminalTheme>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var currentThemeId = (object)theme.Id;\n            roamingSettings.Setup(x => x.TryGetValue(SettingsService.CurrentThemeKey, out currentThemeId)).Returns(true);\n            var currentThemeChangedEventInvoked = false;\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                Themes = themesContainer.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = roamingSettings.Object,\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n            WeakReferenceMessenger.Default.Register<CurrentThemeChangedMessage>(this,\n                (r, m) => currentThemeChangedEventInvoked = true);\n\n            settingsService.SaveTheme(theme);\n\n            currentThemeChangedEventInvoked.Should().BeTrue();\n        }\n\n        [Fact]\n        public void DeleteTheme_Default_CallsDeleteOnThemesContainer()\n        {\n            var themeId = _fixture.Create<Guid>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                Themes = themesContainer.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.DeleteTheme(themeId);\n\n            themesContainer.Verify(x => x.Delete(themeId.ToString()), Times.Once);\n        }\n\n        [Fact]\n        public void GetThemes_Default_CallsGetAllOnThemesContainer()\n        {\n            var themes = _fixture.CreateMany<TerminalTheme>(3);\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            themesContainer.Setup(x => x.GetAll()).Returns(themes.Select(JsonConvert.SerializeObject));\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                Themes = themesContainer.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetThemes();\n\n            result.Should().BeEquivalentTo(themes);\n            themesContainer.Verify(x => x.GetAll(), Times.Once);\n        }\n\n        [Fact]\n        public void GetTheme_ValidThemeId_ReturnsThemeFromThemesContainer()\n        {\n            var theme = _fixture.Create<TerminalTheme>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            themesContainer.Setup(x => x.ReadValueFromJson(theme.Id.ToString(), default(TerminalTheme))).Returns(theme);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                Themes = themesContainer.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetTheme(theme.Id);\n\n            result.Should().BeEquivalentTo(theme);\n            themesContainer.Verify(x => x.ReadValueFromJson(theme.Id.ToString(), default(TerminalTheme)), Times.Once);\n        }\n\n        [Fact]\n        public void GetTheme_UnknownThemeId_ReturnsNull()\n        {\n            var themeId = _fixture.Create<Guid>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            themesContainer.Setup(x => x.ReadValueFromJson(themeId.ToString(), default(TerminalTheme))).Returns(value: null);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                Themes = themesContainer.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetTheme(themeId);\n\n            result.Should().BeNull();\n            themesContainer.Verify(x => x.ReadValueFromJson(themeId.ToString(), default(TerminalTheme)), Times.Once);\n        }\n\n        [Fact]\n        public void GetTerminalOptions_Default_ReturnsTerminalOptionsFromRoamingSettings()\n        {\n            var terminalOptions = _fixture.Create<TerminalOptions>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            roamingSettings.Setup(x => x.ReadValueFromJson(nameof(TerminalOptions), It.IsAny<TerminalOptions>())).Returns(terminalOptions);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetTerminalOptions();\n\n            result.Should().BeEquivalentTo(terminalOptions);\n            roamingSettings.Verify(x => x.ReadValueFromJson(nameof(TerminalOptions), It.IsAny<TerminalOptions>()), Times.Once);\n        }\n\n        [Fact]\n        public void SaveTerminalOptions_Default_WritesToRoamingSettings()\n        {\n            var terminalOptions = _fixture.Create<TerminalOptions>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.SaveTerminalOptions(terminalOptions);\n\n            roamingSettings.Verify(x => x.WriteValueAsJson(nameof(TerminalOptions), terminalOptions), Times.Once);\n        }\n\n        [Fact]\n        public void SaveTerminalOptions_Default_InvokesTerminalOptionsChangedEvent()\n        {\n            var terminalOptions = _fixture.Create<TerminalOptions>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var terminalOptionsChangedEventInvoked = false;\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n            WeakReferenceMessenger.Default.Register<TerminalOptionsChangedMessage>(this,\n                (r, m) => terminalOptionsChangedEventInvoked = true);\n\n            settingsService.SaveTerminalOptions(terminalOptions);\n\n            terminalOptionsChangedEventInvoked.Should().BeTrue();\n        }\n\n        [Fact]\n        public void GetApplicationSettings_Default_ReturnsApplicationSettingsFromRoamingSettings()\n        {\n            var applicationSettings = _fixture.Create<ApplicationSettings>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            roamingSettings.Setup(x => x.ReadValueFromJson(nameof(ApplicationSettings), It.IsAny<ApplicationSettings>())).Returns(applicationSettings);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetApplicationSettings();\n\n            result.Should().BeEquivalentTo(applicationSettings);\n            roamingSettings.Verify(x => x.ReadValueFromJson(nameof(ApplicationSettings), It.IsAny<ApplicationSettings>()), Times.Once);\n        }\n\n        [Fact]\n        public void SaveApplicationSettings_Default_WritesToRoamingSettings()\n        {\n            var applicationSettings = _fixture.Create<ApplicationSettings>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.SaveApplicationSettings(applicationSettings);\n\n            roamingSettings.Verify(x => x.WriteValueAsJson(nameof(ApplicationSettings), applicationSettings), Times.Once);\n        }\n\n        [Fact]\n        public void SaveApplicationSettings_Default_InvokesApplicationSettingsChangedEvent()\n        {\n            var applicationSettings = _fixture.Create<ApplicationSettings>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var applicationSettingsChangedEventInvoked = false;\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                RoamingSettings = roamingSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n            WeakReferenceMessenger.Default.Register<ApplicationSettingsChangedMessage>(this, (r, m) => applicationSettingsChangedEventInvoked = true);\n\n            settingsService.SaveApplicationSettings(applicationSettings);\n\n            applicationSettingsChangedEventInvoked.Should().BeTrue();\n        }\n\n        [Fact]\n        public void GetKeyBindings_KeyBindingsInKeyBindingsContainer_ReturnsKeyBindingsFromKeyBindingsContainer()\n        {\n            var commands = _fixture.CreateMany<Command>(5);\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var keyBindingsContainer = new Mock<IApplicationDataContainer>();\n            foreach (var command in commands)\n            {\n                keyBindingsContainer.Setup(x => x.ReadValueFromJson<Collection<KeyBinding>>(command.ToString(), null)).Returns(new Collection<KeyBinding> { });\n            }\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                KeyBindings = keyBindingsContainer.Object,\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetCommandKeyBindings();\n\n            foreach (var command in commands)\n            {\n                keyBindingsContainer.Verify(x => x.ReadValueFromJson<Collection<KeyBinding>>(command.ToString(), null), Times.Once);\n            }\n        }\n\n        [Fact]\n        public void GetKeyBindings_KeyBindingsNotInKeyBindingsContainer_ReturnsKeyBindingsFromDefaultValueProvider()\n        {\n            var commands = _fixture.CreateMany<Command>(5);\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            var keyBindingsContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                KeyBindings = keyBindingsContainer.Object,\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            var result = settingsService.GetCommandKeyBindings();\n\n            foreach (Command command in Enum.GetValues(typeof(Command)))\n            {\n                defaultValueProvider.Verify(x => x.GetDefaultKeyBindings(command), Times.Once);\n            }\n        }\n\n        [Fact]\n        public void SaveKeyBindings_Default_WritesToKeyBindingsContainer()\n        {\n            var command = _fixture.Create<Command>();\n            var keyBindings = _fixture.Create<ICollection<KeyBinding>>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var keyBindingsContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                KeyBindings = keyBindingsContainer.Object,\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.SaveKeyBindings(command.ToString(), keyBindings);\n\n            keyBindingsContainer.Verify(x => x.WriteValueAsJson(command.ToString(), keyBindings), Times.Once);\n        }\n\n        [Fact]\n        public void SaveKeyBindings_Default_InvokesKeyBindingsChangedEvent()\n        {\n            var command = _fixture.Create<Command>();\n            var keyBindings = _fixture.Create<Collection<KeyBinding>>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var keyBindingsContainer = new Mock<IApplicationDataContainer>();\n            var keyBindingsChangedEventInvoked = false;\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                KeyBindings = keyBindingsContainer.Object,\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n            WeakReferenceMessenger.Default.Register<KeyBindingsChangedMessage>(this,\n                (r, m) => keyBindingsChangedEventInvoked = true);\n\n            settingsService.SaveKeyBindings(command.ToString(), keyBindings);\n\n            keyBindingsChangedEventInvoked.Should().BeTrue();\n        }\n\n        [Fact]\n        public void ResetKeyBindings_Default_WritesToKeyBindingsContainerFromDefaultValueProvider()\n        {\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            var keyBindingsContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                KeyBindings = keyBindingsContainer.Object,\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            settingsService.ResetKeyBindings();\n\n            foreach (Command command in Enum.GetValues(typeof(Command)))\n            {\n                keyBindingsContainer.Verify(x => x.WriteValueAsJson(command.ToString(), It.IsAny<ICollection<KeyBinding>>()), Times.Once);\n                defaultValueProvider.Verify(x => x.GetDefaultKeyBindings(command), Times.Once);\n            }\n        }\n\n        [Fact]\n        public void ResetKeyBindings_Default_InvokesKeyBindingsChangedEvent()\n        {\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var keyBindingsContainer = new Mock<IApplicationDataContainer>();\n            var keyBindingsChangedEventInvoked = false;\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                KeyBindings = keyBindingsContainer.Object,\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n            WeakReferenceMessenger.Default.Register<KeyBindingsChangedMessage>(this,\n                (r, m) => keyBindingsChangedEventInvoked = true);\n\n            settingsService.ResetKeyBindings();\n\n            keyBindingsChangedEventInvoked.Should().BeTrue();\n        }\n\n        [Fact]\n        public void GetDefaultShellProfileId_ValueExistsInRoamingSettings_ReturnsDefaultShellProfileId()\n        {\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var localSettings = new Mock<IApplicationDataContainer>();\n            var defaultShellProfileId = (object)_fixture.Create<Guid>();\n            localSettings.Setup(x => x.TryGetValue(SettingsService.DefaultShellProfileKey, out defaultShellProfileId)).Returns(true);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                LocalSettings = localSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetDefaultShellProfileId();\n\n            result.Should().Be((Guid)defaultShellProfileId);\n            localSettings.Verify(x => x.TryGetValue(SettingsService.DefaultShellProfileKey, out defaultShellProfileId), Times.Once);\n        }\n\n        [Fact]\n        public void GetDefaultShellProfileId_ValueDoesNotExistInRoamingSettings_ReturnsDefaultShellProfileIdFromDefaultValueProvider()\n        {\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            var defaultShellProfileId = _fixture.Create<Guid>();\n            defaultValueProvider.Setup(x => x.GetDefaultShellProfileId()).Returns(defaultShellProfileId);\n            var localSettings = new Mock<IApplicationDataContainer>();\n            var currentDefaultShellProfileId = (object)_fixture.Create<Guid>();\n            localSettings.Setup(x => x.TryGetValue(SettingsService.DefaultShellProfileKey, out currentDefaultShellProfileId)).Returns(false);\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                LocalSettings = localSettings.Object,\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            var result = settingsService.GetDefaultShellProfileId();\n\n            result.Should().Be(defaultShellProfileId);\n            defaultValueProvider.Verify(x => x.GetDefaultShellProfileId(), Times.Once);\n            localSettings.Verify(x => x.TryGetValue(SettingsService.DefaultShellProfileKey, out currentDefaultShellProfileId), Times.Once);\n        }\n\n        [Fact]\n        public void GetShellProfiles_Default_CallsGetAllOnShellProfilesContainer()\n        {\n            var shellProfiles = _fixture.CreateMany<ShellProfile>(3);\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var shellProfilesContainer = new Mock<IApplicationDataContainer>();\n            shellProfilesContainer.Setup(x => x.GetAll()).Returns(shellProfiles.Select(JsonConvert.SerializeObject));\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                ShellProfiles = shellProfilesContainer.Object,\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            var result = settingsService.GetShellProfiles();\n\n            result.Select(p => p.EqualTo(shellProfiles.FirstOrDefault(x => x.Id == p.Id)).Should().BeTrue());\n            shellProfilesContainer.Verify(x => x.GetAll(), Times.Once);\n        }\n\n        [Fact]\n        public void SaveShellProfile_Default_WritesToShellProfilesContainer()\n        {\n            var shellProfile = _fixture.Create<ShellProfile>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var shellProfilesContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                ShellProfiles = shellProfilesContainer.Object,\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.SaveShellProfile(shellProfile);\n\n            shellProfilesContainer.Verify(x => x.WriteValueAsJson(shellProfile.Id.ToString(), shellProfile), Times.Once);\n        }\n\n        [Fact]\n        public void DeleteShellProfile_Default_CallsDeleteOnShellProfilesContainer()\n        {\n            var shellProfileId = _fixture.Create<Guid>();\n            var defaultValueProvider = Mock.Of<IDefaultValueProvider>();\n            var shellProfilesContainer = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                ShellProfiles = shellProfilesContainer.Object,\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            var settingsService = new SettingsService(defaultValueProvider, applicationDataContainers);\n\n            settingsService.DeleteShellProfile(shellProfileId);\n\n            shellProfilesContainer.Verify(x => x.Delete(shellProfileId.ToString()), Times.Once);\n        }\n\n        [Fact]\n        public void GetDefaultShellProfile_ProfileNotFound_DefaultShellProfileIdGetsResetToDefault()\n        {\n            var currentShellProfileId = (object)_fixture.Create<Guid>();\n            var defaultShellProfile = _fixture.Create<ShellProfile>();\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            defaultValueProvider.Setup(x => x.GetDefaultShellProfileId()).Returns(defaultShellProfile.Id);\n            var shellProfilesContainer = new Mock<IApplicationDataContainer>();\n            var localSettings = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                ShellProfiles = shellProfilesContainer.Object,\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = localSettings.Object,\n                Themes = Mock.Of<IApplicationDataContainer>()\n            };\n            shellProfilesContainer.Setup(x => x.ReadValueFromJson(currentShellProfileId.ToString(), default(ShellProfile))).Returns(value: null);\n            shellProfilesContainer.Setup(x => x.ReadValueFromJson(defaultShellProfile.Id.ToString(), default(ShellProfile))).Returns(defaultShellProfile);\n            localSettings.Setup(x => x.TryGetValue(SettingsService.DefaultShellProfileKey, out currentShellProfileId)).Returns(true);\n            var settingsService = new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            var result = settingsService.GetDefaultShellProfile();\n\n            result.Should().Be(defaultShellProfile);\n            localSettings.Verify(x => x.SetValue(SettingsService.DefaultShellProfileKey, defaultShellProfile.Id), Times.Once);\n        }\n\n        [Fact]\n        public void GetCurrentTheme_ThemeNotFound_CurrentThemeIdGetsResetToDefault()\n        {\n            var currentThemeId = (object)_fixture.Create<Guid>();\n            var defaultTheme = _fixture.Create<TerminalTheme>();\n            var defaultValueProvider = new Mock<IDefaultValueProvider>();\n            defaultValueProvider.Setup(x => x.GetDefaultThemeId()).Returns(defaultTheme.Id);\n            var themesContainer = new Mock<IApplicationDataContainer>();\n            var roamingSettings = new Mock<IApplicationDataContainer>();\n            var applicationDataContainers = new ApplicationDataContainers\n            {\n                ShellProfiles = Mock.Of<IApplicationDataContainer>(),\n                SshProfiles = Mock.Of<IApplicationDataContainer>(),\n                KeyBindings = Mock.Of<IApplicationDataContainer>(),\n                LocalSettings = Mock.Of<IApplicationDataContainer>(),\n                RoamingSettings = roamingSettings.Object,\n                Themes = themesContainer.Object\n            };\n            themesContainer.Setup(x => x.ReadValueFromJson(currentThemeId.ToString(), default(TerminalTheme))).Returns(value: null);\n            themesContainer.Setup(x => x.ReadValueFromJson(defaultTheme.Id.ToString(), default(TerminalTheme))).Returns(defaultTheme);\n            roamingSettings.Setup(x => x.TryGetValue(SettingsService.CurrentThemeKey, out currentThemeId)).Returns(true);\n            var settingsService = new SettingsService(defaultValueProvider.Object, applicationDataContainers);\n\n            var result = settingsService.GetCurrentTheme();\n\n            result.Should().Be(defaultTheme);\n            roamingSettings.Verify(x => x.SetValue(SettingsService.CurrentThemeKey, defaultTheme.Id), Times.Once);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services.Test/TestData/AdventureTime.itermcolors",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Ansi 0 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.016337040811777115</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.016232240945100784</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.020433688536286354</real>\n\t</dict>\n\t<key>Ansi 1 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.075083047151565552</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.0</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.73976802825927734</real>\n\t</dict>\n\t<key>Ansi 10 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.43171143531799316</real>\n\t\t<key>Green Component</key>\n\t\t<real>1</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.61819148063659668</real>\n\t</dict>\n\t<key>Ansi 11 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.10242157429456711</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.7578997015953064</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.93761706352233887</real>\n\t</dict>\n\t<key>Ansi 12 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.77801346778869629</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.59102588891983032</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.096501544117927551</real>\n\t</dict>\n\t<key>Ansi 13 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.32394066452980042</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.34950375556945801</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.60686224699020386</real>\n\t</dict>\n\t<key>Ansi 14 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.95550096035003662</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.97915208339691162</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.78500419855117798</real>\n\t</dict>\n\t<key>Ansi 15 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.98438382148742676</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.96043074131011963</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.96449893712997437</real>\n\t</dict>\n\t<key>Ansi 2 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.092498354613780975</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.6950421929359436</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.28945007920265198</real>\n\t</dict>\n\t<key>Ansi 3 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.1164485365152359</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.45553147792816162</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.90543299913406372</real>\n\t</dict>\n\t<key>Ansi 4 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.77829605340957642</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.28880593180656433</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.059818677604198456</real>\n\t</dict>\n\t<key>Ansi 5 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.57602518796920776</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.35004982352256775</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.40191537141799927</real>\n\t</dict>\n\t<key>Ansi 6 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.59465551376342773</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.64633101224899292</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.43781715631484985</real>\n\t</dict>\n\t<key>Ansi 7 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.75428962707519531</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.86175870895385742</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.97308963537216187</real>\n\t</dict>\n\t<key>Ansi 8 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.7491685152053833</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.48549851775169373</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.30726605653762817</real>\n\t</dict>\n\t<key>Ansi 9 Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.35247993469238281</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.37095117568969727</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.98876720666885376</real>\n\t</dict>\n\t<key>Background Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.27054747939109802</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.11274909973144531</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.12003477662801743</real>\n\t</dict>\n\t<key>Bold Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.075083047151565552</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.0</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.73976802825927734</real>\n\t</dict>\n\t<key>Cursor Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.21945112943649292</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.74987590312957764</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.93704277276992798</real>\n\t</dict>\n\t<key>Cursor Text Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.037519864737987518</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.032785907387733459</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.02988031692802906</real>\n\t</dict>\n\t<key>Foreground Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.75428962707519531</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.86175870895385742</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.97308963537216187</real>\n\t</dict>\n\t<key>Selected Text Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.767447829246521</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.85237473249435425</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.95287787914276123</real>\n\t</dict>\n\t<key>Selection Color</key>\n\t<dict>\n\t\t<key>Blue Component</key>\n\t\t<real>0.30699285864830017</real>\n\t\t<key>Green Component</key>\n\t\t<real>0.41871801018714905</real>\n\t\t<key>Red Component</key>\n\t\t<real>0.43789717555046082</real>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "FluentTerminal.App.Services.Test/ThemeParserFactoryTests.cs",
    "content": "﻿using AutoFixture;\nusing FluentAssertions;\nusing FluentTerminal.App.Services.Implementation;\nusing Moq;\nusing Xunit;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class ThemeParserFactoryTests\n    {\n        private readonly Fixture _fixture;\n\n        public ThemeParserFactoryTests()\n        {\n            _fixture = new Fixture();\n        }\n\n        [Fact]\n        public void GetParser_SupportedFileType_ReturnsParser()\n        {\n            var supportedFileType = _fixture.Create<string>();\n            var parser = new Mock<IThemeParser>();\n            parser.Setup(x => x.SupportedFileTypes).Returns(new string[] { supportedFileType });\n            var themeParserFactory = new ThemeParserFactory(new IThemeParser[] { parser.Object });\n\n            var result = themeParserFactory.GetParser(supportedFileType);\n\n            parser.Should().Be(parser);\n        }\n\n        [Fact]\n        public void GetParser_UnsupportedFileType_ReturnsNull()\n        {\n            var unSupportedFileType = _fixture.Create<string>();\n            var supportedFileType = _fixture.Create<string>();\n            var parser = new Mock<IThemeParser>();\n            parser.Setup(x => x.SupportedFileTypes).Returns(new string[] { supportedFileType });\n            var themeParserFactory = new ThemeParserFactory(new IThemeParser[] { parser.Object });\n\n            var result = themeParserFactory.GetParser(unSupportedFileType);\n\n            result.Should().BeNull();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.Services.Test/TrayProcessCommunicationServiceTests.cs",
    "content": "﻿using AutoFixture;\nusing FluentAssertions;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing FluentTerminal.Models.Requests;\nusing FluentTerminal.Models.Responses;\nusing Moq;\nusing Newtonsoft.Json;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Windows.Foundation.Collections;\nusing Xunit;\n\nnamespace FluentTerminal.App.Services.Test\n{\n    public class TrayProcessCommunicationServiceTests\n    {\n        private readonly Fixture _fixture;\n\n        public TrayProcessCommunicationServiceTests()\n        {\n            _fixture = new Fixture();\n        }\n\n        [Fact]\n        public async Task CreateTerminal_Default_ReturnsResponseFromAppServiceConnection()\n        {\n            var settingsService = new Mock<ISettingsService>();\n            var keyBindings = _fixture.CreateMany<KeyBinding>(3);\n            settingsService.Setup(x => x.GetCommandKeyBindings()).Returns(new Dictionary<string, ICollection<KeyBinding>>\n            {\n                [nameof(Command.ToggleWindow)] = keyBindings.ToList()\n            });\n            var appServiceConnection = new Mock<IAppServiceConnection>();\n            var response = _fixture.Create<CreateTerminalResponse>();\n            var responseMessage = new ValueSet\n            {\n                [MessageKeys.Type] = _fixture.Create<string>(),\n                [MessageKeys.Content] = JsonConvert.SerializeObject(response)\n            };\n            appServiceConnection.Setup(x => x.SendMessageAsync(It.IsAny<ValueSet>())).Returns(Task.FromResult(responseMessage));\n            var terminalSize = _fixture.Create<TerminalSize>();\n            var shellProfile = _fixture.Create<ShellProfile>();\n            var sessionType = _fixture.Create<SessionType>();\n            var id = _fixture.Create<byte>();\n            var trayProcessCommunicationService = new TrayProcessCommunicationService(settingsService.Object);\n            trayProcessCommunicationService.Initialize(appServiceConnection.Object);\n\n            var result = await trayProcessCommunicationService.CreateTerminalAsync(id, terminalSize, shellProfile, sessionType);\n\n            result.Should().BeEquivalentTo(response);\n        }\n\n        [Fact]\n        public async Task ResizeTerminal_Default_SendsResizeTerminalRequest()\n        {\n            var terminalId = _fixture.Create<byte>();\n            var terminalSize = _fixture.Create<TerminalSize>();\n            var settingsService = new Mock<ISettingsService>();\n            var keyBindings = _fixture.CreateMany<KeyBinding>(3);\n            settingsService.Setup(x => x.GetCommandKeyBindings()).Returns(new Dictionary<string, ICollection<KeyBinding>>\n            {\n                [nameof(Command.ToggleWindow)] = keyBindings.ToList()\n            });\n            var appServiceConnection = new Mock<IAppServiceConnection>();\n            var trayProcessCommunicationService = new TrayProcessCommunicationService(settingsService.Object);\n            trayProcessCommunicationService.Initialize(appServiceConnection.Object);\n\n            await trayProcessCommunicationService.ResizeTerminalAsync(terminalId, terminalSize);\n\n            appServiceConnection.Verify(x => x.SendMessageAsync(It.Is<ValueSet>(d => (byte)d[MessageKeys.Type] == (byte)MessageIdentifiers.ResizeTerminalRequest)), Times.Once);\n        }\n\n        [Fact]\n        public async Task Write_Default_SendsWriteDataRequest()\n        {\n            var terminalId = _fixture.Create<byte>();\n            var data = _fixture.Create<byte[]>();\n            var settingsService = new Mock<ISettingsService>();\n            var keyBindings = _fixture.CreateMany<KeyBinding>(3);\n            settingsService.Setup(x => x.GetCommandKeyBindings()).Returns(new Dictionary<string, ICollection<KeyBinding>>\n            {\n                [nameof(Command.ToggleWindow)] = keyBindings.ToList()\n            });\n            var appServiceConnection = new Mock<IAppServiceConnection>();\n            var trayProcessCommunicationService = new TrayProcessCommunicationService(settingsService.Object);\n            trayProcessCommunicationService.Initialize(appServiceConnection.Object);\n\n            await trayProcessCommunicationService.WriteAsync(terminalId, data);\n\n            appServiceConnection.Verify(x => x.SendMessageAsync(It.Is<ValueSet>(d => (byte)d[MessageKeys.Type] == Constants.TerminalBufferRequestIdentifier)), Times.Once);\n        }\n\n        [Fact]\n        public async Task CloseTerminal_Default_SendsTerminalExitedRequest()\n        {\n            var terminalId = _fixture.Create<byte>();\n            var settingsService = new Mock<ISettingsService>();\n            var keyBindings = _fixture.CreateMany<KeyBinding>(3);\n            settingsService.Setup(x => x.GetCommandKeyBindings()).Returns(new Dictionary<string, ICollection<KeyBinding>>\n            {\n                [nameof(Command.ToggleWindow)] = keyBindings.ToList()\n            });\n            var appServiceConnection = new Mock<IAppServiceConnection>();\n            var trayProcessCommunicationService = new TrayProcessCommunicationService(settingsService.Object);\n            trayProcessCommunicationService.Initialize(appServiceConnection.Object);\n\n            await trayProcessCommunicationService.CloseTerminalAsync(terminalId);\n\n            appServiceConnection.Verify(x => x.SendMessageAsync(It.Is<ValueSet>(d => (byte)d[MessageKeys.Type] == (byte)MessageIdentifiers.TerminalExitedRequest)), Times.Once);\n        }\n\n        [Fact]\n        public void OnMessageReceived_TerminalExitedRequest_InvokesTerminalExitedEvent()\n        {\n            var request = new TerminalExitedRequest(_fixture.Create<byte>(), _fixture.Create<int>());\n\n            var receivedExitStatus = (TerminalExitStatus) null;\n\n            var message = new ValueSet\n            {\n                [MessageKeys.Type] = (byte) MessageIdentifiers.TerminalExitedRequest,\n                [MessageKeys.Content] = JsonConvert.SerializeObject(request)\n            };\n            var settingsService = new Mock<ISettingsService>();\n            var keyBindings = _fixture.CreateMany<KeyBinding>(3);\n            settingsService.Setup(x => x.GetCommandKeyBindings()).Returns(new Dictionary<string, ICollection<KeyBinding>>\n            {\n                [nameof(Command.ToggleWindow)] = keyBindings.ToList()\n            });\n            var trayProcessCommunicationService = new TrayProcessCommunicationService(settingsService.Object);\n            var appServiceConnection = new Mock<IAppServiceConnection>();\n            trayProcessCommunicationService.Initialize(appServiceConnection.Object);\n            trayProcessCommunicationService.TerminalExited += (s, status) =>\n            {\n                receivedExitStatus = status;\n            };\n\n            appServiceConnection.Raise(x => x.MessageReceived += null, null, message);\n\n            receivedExitStatus.Should().NotBeNull();\n            receivedExitStatus.TerminalId.Should().Be(request.TerminalId);\n            receivedExitStatus.ExitCode.Should().Be(request.ExitCode);\n        }\n\n        [Fact]\n        public void OnMessageReceived_DisplayTerminalOutputRequest_InvokesCorrectOutputHandler()\n        {\n            var terminalId = _fixture.Create<byte>();\n            var output = _fixture.Create<byte[]>();\n            var receivedOutput = default(byte[]);\n            var message = new ValueSet\n            {\n                [MessageKeys.Type] = Constants.TerminalBufferRequestIdentifier,\n                [MessageKeys.TerminalId] = terminalId,\n                [MessageKeys.Content] = output\n            };\n            var settingsService = new Mock<ISettingsService>();\n            var keyBindings = _fixture.CreateMany<KeyBinding>(3);\n            settingsService.Setup(x => x.GetCommandKeyBindings()).Returns(new Dictionary<string, ICollection<KeyBinding>>\n            {\n                [nameof(Command.ToggleWindow)] = keyBindings.ToList()\n            });\n            var trayProcessCommunicationService = new TrayProcessCommunicationService(settingsService.Object);\n            var appServiceConnection = new Mock<IAppServiceConnection>();\n            trayProcessCommunicationService.Initialize(appServiceConnection.Object);\n            trayProcessCommunicationService.SubscribeForTerminalOutput(terminalId, o =>\n            {\n                receivedOutput = o;\n            });\n\n            appServiceConnection.Raise(x => x.MessageReceived += null, null, message);\n\n            receivedOutput.Should().BeEquivalentTo(output);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/DelayedHistorySaver.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    internal class DelayedHistorySaver : ISessionSuccessTracker\n    {\n        private const int DelayMilliseconds = 5000;\n\n        private readonly Action _saveAction;\n\n        private readonly object _lock = new object();\n\n        private CancellationTokenSource _cts;\n\n        private bool _sessionStarted;\n        private bool _outputReceived;\n\n        private bool _toSave = true;\n\n        internal DelayedHistorySaver(Action saveAction)\n        {\n            _saveAction = saveAction;\n        }\n\n        public void SetSuccessfulSessionStart()\n        {\n            lock (_lock)\n            {\n                if (!_toSave || _sessionStarted)\n                {\n                    return;\n                }\n\n                _sessionStarted = true;\n\n                if (_outputReceived)\n                {\n                    InitiateSave();\n                }\n            }\n        }\n\n        public void SetOutputReceived()\n        {\n            lock (_lock)\n            {\n                if (!_toSave || _outputReceived)\n                {\n                    return;\n                }\n\n                _outputReceived = true;\n\n                if (_sessionStarted)\n                {\n                    InitiateSave();\n                }\n            }\n        }\n\n        public void SetInvalid()\n        {\n            lock (_lock)\n            {\n                if (!_toSave || !(_cts is CancellationTokenSource cts))\n                {\n                    return;\n                }\n\n                _toSave = false;\n\n                cts.Cancel();\n                cts.Dispose();\n                _cts = null;\n            }\n        }\n\n        private void InitiateSave()\n        {\n            _cts = new CancellationTokenSource();\n\n            Task.Delay(DelayMilliseconds, _cts.Token).ContinueWith(t =>\n                {\n                    lock (_lock)\n                    {\n                        if (_toSave)\n                        {\n                            _saveAction.Invoke();\n                        }\n\n                        _toSave = false;\n\n                        _cts?.Dispose();\n                        _cts = null;\n                    }\n                });\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/EnvironmentVariableViewModel.cs",
    "content": "﻿using Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class EnvironmentVariableViewModel : ObservableObject\n    {\n        private string _name;\n        private string _value;\n\n        public Guid Id { get; } = Guid.NewGuid();\n\n        public string Name\n        {\n            get => _name;\n            set => SetProperty(ref _name, value);\n        }\n\n        public string Value\n        {\n            get => _value;\n            set => SetProperty(ref _value, value);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/FluentTerminal.App.ViewModels.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <LangVersion>9.0</LangVersion>\n    <TargetFramework>netstandard2.0</TargetFramework>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.Toolkit.Mvvm\" Version=\"7.1.0\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\FluentTerminal.App.Services\\FluentTerminal.App.Services.csproj\" />\n    <ProjectReference Include=\"..\\FluentTerminal.Models\\FluentTerminal.Models.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <Reference Include=\"Windows.Foundation.UniversalApiContract\">\n      <HintPath>$(MSBuildProgramFiles32)\\Windows Kits\\10\\References\\10.0.16299.0\\Windows.Foundation.UniversalApiContract\\5.0.0.0\\Windows.Foundation.UniversalApiContract.winmd</HintPath>\n      <Private>False</Private>\n    </Reference>\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/ISessionSuccessTracker.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels\n{\n    public interface ISessionSuccessTracker\n    {\n        void SetSuccessfulSessionStart();\n\n        void SetOutputReceived();\n\n        void SetInvalid();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/ITerminalView.cs",
    "content": "﻿using System;\nusing FluentTerminal.Models;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public interface ITerminalView : IDisposable\n    {\n        Task ChangeFontSize(int fontSize);\n        Task ChangeThemeAsync(TerminalTheme theme);\n        Task ChangeKeyBindingsAsync();\n        Task ChangeOptionsAsync(TerminalOptions options);\n        Task InitializeAsync(TerminalViewModel viewModel);\n        Task ReconnectAsync();\n        void DisposalPrepare();\n        Task FindNextAsync(SearchRequest request);\n        Task FindPreviousAsync(SearchRequest request);\n        Task FocusTerminalAsync();\n        Task<string> SerializeXtermStateAsync();\n        void Paste(string text);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Infrastructure/IErrorHandler.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Infrastructure\n{\n    public interface IErrorHandler\n    {\n        void HandleError(Exception ex);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/MainViewModel.cs",
    "content": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Collections.Specialized;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\nusing FluentTerminal.App.ViewModels.Menu;\nusing FluentTerminal.Models.Messages;\nusing System.Windows.Input;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Messaging;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class MainViewModel : ObservableObject,\n        IRecipient<ApplicationSettingsChangedMessage>,\n        IRecipient<ShellProfileAddedMessage>,\n        IRecipient<ShellProfileDeletedMessage>,\n        IRecipient<ShellProfileChangedMessage>,\n        IRecipient<DefaultShellProfileChangedMessage>,\n        IRecipient<TerminalOptionsChangedMessage>,\n        IRecipient<CommandHistoryChangedMessage>,\n        IRecipient<KeyBindingsChangedMessage>\n    {\n        private readonly IClipboardService _clipboardService;\n        private readonly IDialogService _dialogService;\n        private readonly IKeyboardCommandService _keyboardCommandService;\n        private readonly ISettingsService _settingsService;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly ICommandHistoryService _commandHistoryService;\n        private ApplicationSettings _applicationSettings;\n        private bool _useAcrylicBackground;\n        private double _backgroundOpacity;\n        private TerminalViewModel _selectedTerminal;\n        private TabsPosition _tabsPosition;\n        private string _windowTitle;\n        private IDictionary<string, ICollection<KeyBinding>> _keyBindings;\n\n        public MainViewModel(ISettingsService settingsService, ITrayProcessCommunicationService trayProcessCommunicationService, IDialogService dialogService, IKeyboardCommandService keyboardCommandService, \n            IApplicationView applicationView, IClipboardService clipboardService, ICommandHistoryService commandHistoryService)\n        {\n            _settingsService = settingsService;\n\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _dialogService = dialogService;\n            ApplicationView = applicationView;\n            _clipboardService = clipboardService;\n            _keyboardCommandService = keyboardCommandService;\n            _commandHistoryService = commandHistoryService;\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewTab), async () => await AddDefaultProfileAsync(NewTerminalLocation.Tab));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewWindow), async () => await AddDefaultProfileAsync(NewTerminalLocation.Window));\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewSshTab), async () => await AddSshProfileAsync(NewTerminalLocation.Tab));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewSshWindow), async () => await AddSshProfileAsync(NewTerminalLocation.Window));\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewCustomCommandTab), async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Tab));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NewCustomCommandWindow), async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Window));\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ChangeTabTitle), async () => await SelectedTerminal.EditTitleAsync());\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.CloseTab), CloseCurrentTab);\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.DuplicateTab), async () => await AddTabAsync(SelectedTerminal.ShellProfile.Clone()));\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ReconnectTab), async () => { if (SelectedTerminal.ReconnectTabCommand.CanExecute(null)) await SelectedTerminal.ReconnectTabAsync(); });\n\n            // empty command handlers for copy and paste so that the main window does not execute these when copy keyboard shortcut is used in a popup search panel \n            // in such a case an exception would be thrown if no handlers are available so these empty ones mitigate that. Also there is no need for these on the main window anyway\n            // so leaving them empty is fine.\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.Paste), () => { });\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.Copy), () => { });\n\n            // Add all of the commands for switching to a tab of a given ID, if there's one open there\n            for (int i = 0; i < 9; i++)\n            {\n                var switchCmd = Command.SwitchToTerm1 + i; \n                int tabNumber = i;\n                // ReSharper disable once InconsistentNaming\n                void handler() => SelectTabNumber(tabNumber);\n                _keyboardCommandService.RegisterCommandHandler(switchCmd.ToString(), handler);\n            }\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.NextTab), SelectNextTab);\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.PreviousTab), SelectPreviousTab);\n\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ShowSettings), ShowSettings);\n            _keyboardCommandService.RegisterCommandHandler(nameof(Command.ToggleFullScreen), ToggleFullScreen);\n\n            foreach (ShellProfile profile in _settingsService.GetShellProfiles())\n            {\n                _keyboardCommandService.RegisterCommandHandler(profile.Id.ToString(), async () => await AddProfileByGuidAsync(profile.Id));\n            }\n\n            foreach (SshProfile profile in _settingsService.GetSshProfiles())\n            {\n                _keyboardCommandService.RegisterCommandHandler(profile.Id.ToString(), async () => await AddProfileByGuidAsync(profile.Id));\n            }\n\n            var currentTheme = _settingsService.GetCurrentTheme();\n            var options = _settingsService.GetTerminalOptions();\n            UseAcrylicBackground = options.UseAcrylicBackground;\n            BackgroundOpacity = options.BackgroundOpacity;\n            _applicationSettings = _settingsService.GetApplicationSettings();\n            TabsPosition = _applicationSettings.TabsPosition;\n\n            AddDefaultTabCommand = new RelayCommand(async () => await AddDefaultProfileAsync(NewTerminalLocation.Tab));\n\n            ApplicationView.CloseRequested += OnCloseRequest;\n            ApplicationView.Closed += OnClosed;\n            Terminals.CollectionChanged += OnTerminalsCollectionChanged;\n\n            LoadKeyBindings();\n\n            _newDefaultTabCommand = new RelayCommand(async () => await AddDefaultProfileAsync(NewTerminalLocation.Tab));\n            _newDefaultWindowCommand = new RelayCommand(async () => await AddDefaultProfileAsync(NewTerminalLocation.Window));\n            _newRemoteTabCommand = new RelayCommand(async () => await AddSshProfileAsync(NewTerminalLocation.Tab));\n            _newRemoteWindowCommand = new RelayCommand(async () => await AddSshProfileAsync(NewTerminalLocation.Window));\n            _newQuickLaunchTabCommand = new RelayCommand(async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Tab));\n            _newQuickLaunchWindowCommand = new RelayCommand(async () => await AddQuickLaunchProfileAsync(NewTerminalLocation.Window));\n\n            _settingsCommand = new RelayCommand(ShowSettings);\n            _aboutCommand = new AsyncRelayCommand(_dialogService.ShowAboutDialogAsync);\n            _quitCommand = new AsyncRelayCommand(_trayProcessCommunicationService.QuitApplicationAsync);\n\n            _defaultProfile = _settingsService.GetDefaultShellProfile();\n\n            CreateMenuViewModel();\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        private ShellProfile _defaultProfile;\n\n        private void UpdateDefaultShellProfile()\n        {\n            var defaultProfile = _settingsService.GetDefaultShellProfile();\n\n            // We need to rebuild the menu only if default profile Id or Name is changed\n            var changeMenu = _defaultProfile == null || !_defaultProfile.Id.Equals(defaultProfile.Id) ||\n                             !string.Equals(_defaultProfile.Name, defaultProfile.Name, StringComparison.Ordinal);\n\n            _defaultProfile = defaultProfile;\n\n            if (changeMenu)\n            {\n                ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n            }\n        }\n\n        private void LoadKeyBindings() => _keyBindings = _settingsService.GetCommandKeyBindings();\n\n        private void OnClosed(object sender, EventArgs e)\n        {\n            //MessengerInstance.Unregister(this); todo do we still need this?\n\n            ApplicationView.CloseRequested -= OnCloseRequest;\n            ApplicationView.Closed -= OnClosed;\n            Terminals.CollectionChanged -= OnTerminalsCollectionChanged;\n\n            _keyboardCommandService.ClearCommandHandlers();\n\n            _applicationSettings = null;\n\n            AddDefaultTabCommand = null;\n\n            Closed?.Invoke(this, e);\n        }\n\n        private void OnTerminalsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)\n        {\n            OnPropertyChanged(nameof(ShowTabsOnTop));\n            OnPropertyChanged(nameof(ShowTabsOnBottom));\n        }\n\n        public event EventHandler Closed;\n\n        public event EventHandler<NewWindowRequestedEventArgs> NewWindowRequested;\n\n        public event EventHandler ShowSettingsRequested;\n\n        public event EventHandler ActivatedMv;\n\n        public event EventHandler<TerminalViewModel> TabTearedOff;\n\n        public void TearOffTab(TerminalViewModel model)\n        {\n            TabTearedOff?.Invoke(this, model);\n        }\n\n        public void FocusWindow()\n        {\n            ActivatedMv?.Invoke(this, EventArgs.Empty);\n        }\n\n        public ICommand AddDefaultTabCommand { get; private set; }\n\n        public string WindowTitle\n        {\n            get => _windowTitle;\n            set\n            {\n                if (SetProperty(ref _windowTitle, value))\n                {\n                    ApplicationView.Title = value;\n                }\n            }\n        }\n\n        public bool ShowTabsOnTop\n        {\n            get => TabsPosition == TabsPosition.Top;\n        }\n\n        public bool ShowTabsOnBottom\n        {\n            get => TabsPosition == TabsPosition.Bottom;\n        }\n\n        public bool UseAcrylicBackground\n        {\n            get => _useAcrylicBackground;\n            set => SetProperty(ref _useAcrylicBackground, value);\n        }\n\n        public double BackgroundOpacity\n        {\n            get => _backgroundOpacity;\n            set => SetProperty(ref _backgroundOpacity, value);\n        }\n\n        public TerminalViewModel SelectedTerminal\n        {\n            get => _selectedTerminal;\n            set\n            {\n                var oldValue = _selectedTerminal;\n\n                if (SetProperty(ref _selectedTerminal, value))\n                {\n                    if (oldValue != null)\n                    {\n                        oldValue.IsSelected = false;\n                    }\n\n                    if (_selectedTerminal != null)\n                    {\n                        _selectedTerminal.IsSelected = true;\n                        _selectedTerminal.FocusTerminal();\n\n                        SetWindowTitle(_selectedTerminal);\n                    }\n                }\n            }\n        }\n\n        public TabsPosition TabsPosition\n        {\n            get => _tabsPosition;\n            set => SetProperty(ref _tabsPosition, value);\n        }\n\n        public ObservableCollection<TerminalViewModel> Terminals { get; } = new ObservableCollection<TerminalViewModel>();\n\n        public IApplicationView ApplicationView { get; }\n\n        #region Launching terminal sessions\n\n        public Task AddDefaultProfileAsync(NewTerminalLocation location)\n        {\n            var profile = _settingsService.GetDefaultShellProfile();\n\n            return AddProfileAsync(profile, location);\n        }\n\n        private async Task AddSshProfileAsync(NewTerminalLocation location)\n        {\n            var profile = await _dialogService.ShowSshConnectionInfoDialogAsync().ConfigureAwait(true);\n\n            await AddProfileAsync(profile, location).ConfigureAwait(false);\n        }\n\n        private async Task AddQuickLaunchProfileAsync(NewTerminalLocation location)\n        {\n            var profile = await _dialogService.ShowCustomCommandDialogAsync().ConfigureAwait(true);\n\n            await AddProfileAsync(profile, location).ConfigureAwait(false);\n        }\n\n        public Task AddProfileByGuidAsync(Guid profileId) =>\n            AddProfileByGuidAsync(profileId, _applicationSettings.NewTerminalLocation);\n\n        private async Task AddProfileByGuidAsync(Guid profileId, NewTerminalLocation location)\n        {\n            var profile = _settingsService.GetShellProfile(profileId) ?? _settingsService.GetSshProfile(profileId);\n\n            await AddProfileAsync(profile, location).ConfigureAwait(false);\n        }\n\n        // For serialization\n        public Task AddTabAsync(string terminalState, int position)\n        {\n            return AddTabAsync(new ShellProfile(), terminalState, position);\n        }\n\n        private Task AddProfileAsync(ShellProfile profile) =>\n            AddProfileAsync(profile, _applicationSettings.NewTerminalLocation);\n\n        private Task AddProfileAsync(ShellProfile profile, NewTerminalLocation location)\n        {\n            if (profile == null)\n            {\n                return Task.CompletedTask;\n            }\n\n            if (location == NewTerminalLocation.Tab)\n            {\n                return AddTabAsync(profile);\n            }\n\n            NewWindowRequested?.Invoke(this, new NewWindowRequestedEventArgs(profile));\n\n            return Task.CompletedTask;\n        }\n\n        public Task AddTabAsync(ShellProfile profile) => AddTabAsync(profile, string.Empty, Terminals.Count);\n\n        private Task AddTabAsync(ShellProfile profile, string terminalState, int position)\n        {\n            profile.Tag = new DelayedHistorySaver(() => _commandHistoryService.MarkUsed(profile));\n\n            return ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                var terminal = new TerminalViewModel(_settingsService, _trayProcessCommunicationService, _dialogService, _keyboardCommandService,\n                    _applicationSettings, profile, ApplicationView, _clipboardService, terminalState);\n\n                terminal.PropertyChanged += Terminal_PropertyChanged;\n                terminal.Closed += OnTerminalClosed;\n                terminal.CloseLeftTabsRequested += Terminal_CloseLeftTabsRequested;\n                terminal.CloseRightTabsRequested += Terminal_CloseRightTabsRequested;\n                terminal.CloseOtherTabsRequested += Terminal_CloseOtherTabsRequested;\n                terminal.DuplicateTabRequested += Terminal_DuplicateTabRequested;\n                Terminals.Insert(Math.Min(position, Terminals.Count), terminal);\n\n                SelectedTerminal = terminal;\n            });\n        }\n\n        #endregion Launching terminal sessions\n\n        private void Terminal_PropertyChanged(object sender, PropertyChangedEventArgs e)\n        {\n            if (!(sender is TerminalViewModel terminalViewModel))\n            {\n                return;\n            }\n\n            switch (e.PropertyName)\n            {\n                case nameof(TerminalViewModel.ShellTitle):\n                case nameof(TerminalViewModel.TabTitle):\n\n                    SetWindowTitle(terminalViewModel);\n\n                    break;\n            }\n        }\n\n        // ReSharper disable once UnusedMethodReturnValue.Local\n        private Task SetWindowTitle(TerminalViewModel terminalViewModel)\n        {\n            return ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                WindowTitle = !_applicationSettings.ShowCustomTitleInTitlebar ||\n                              string.IsNullOrEmpty(terminalViewModel?.TabTitle)\n                    ? terminalViewModel?.ShellTitle\n                    : terminalViewModel.TabTitle;\n            }, CoreDispatcherPriority.Low);\n        }\n\n        private async void Terminal_DuplicateTabRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                await AddTabAsync(terminal.ShellProfile.Clone()).ConfigureAwait(false);\n            }\n        }\n\n        private async void Terminal_CloseOtherTabsRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                await Task.WhenAll(Terminals.Where(t => t != terminal).Select(t =>\n                {\n                    Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", t.Terminal.Id);\n                    return t.CloseAsync();\n                })).ConfigureAwait(false);\n            }\n        }\n\n        private async void Terminal_CloseRightTabsRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                var toRemove = Terminals.Skip(Terminals.IndexOf(terminal) + 1).ToList();\n\n                await Task.WhenAll(toRemove.Select(t =>\n                {\n                    Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", t.Terminal.Id);\n                    return t.CloseAsync();\n                })).ConfigureAwait(false);\n            }\n        }\n\n        private async void Terminal_CloseLeftTabsRequested(object sender, EventArgs e)\n        {\n            if (sender is TerminalViewModel terminal)\n            {\n                var toRemove = Terminals.Take(Terminals.IndexOf(terminal)).ToList();\n\n                await Task.WhenAll(toRemove.Select(t =>\n                {\n                    Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", t.Terminal.Id);\n                    return t.CloseAsync();\n                })).ConfigureAwait(false);\n            }\n        }\n\n        private Task CloseAllTerminalsAsync()\n        {\n            return Task.WhenAll(Terminals.Select(terminal =>\n            {\n                terminal.PropertyChanged -= Terminal_PropertyChanged;\n                terminal.Closed -= OnTerminalClosed;\n                terminal.CloseLeftTabsRequested -= Terminal_CloseLeftTabsRequested;\n                terminal.CloseRightTabsRequested -= Terminal_CloseRightTabsRequested;\n                terminal.CloseOtherTabsRequested -= Terminal_CloseOtherTabsRequested;\n                terminal.DuplicateTabRequested -= Terminal_DuplicateTabRequested;\n                return terminal.CloseAsync();\n            }));\n        }\n\n        private void CloseCurrentTab()\n        {\n            SelectedTerminal?.CloseAsync();\n        }\n\n        private async Task OnCloseRequest(object sender, CancelableEventArgs e)\n        {\n            if (_applicationSettings.ConfirmClosingWindows)\n            {\n                var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmCloseWindow\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(false);\n\n                if (result == DialogButton.OK)\n                {\n                    await CloseAllTerminalsAsync().ConfigureAwait(false);\n                }\n                else\n                {\n                    e.Cancelled = true;\n                }\n            }\n            else\n            {\n                await CloseAllTerminalsAsync().ConfigureAwait(false);\n            }\n        }\n\n        private void OnTerminalClosed(object sender, EventArgs e)\n        {\n            if (!(sender is TerminalViewModel terminal))\n            {\n                return;\n            }\n\n            Logger.Instance.Debug(\"Terminal with Id: {@id} closed.\", terminal.Terminal.Id);\n\n            terminal.PropertyChanged -= Terminal_PropertyChanged;\n            terminal.Closed -= OnTerminalClosed;\n            terminal.CloseLeftTabsRequested -= Terminal_CloseLeftTabsRequested;\n            terminal.CloseRightTabsRequested -= Terminal_CloseRightTabsRequested;\n            terminal.CloseOtherTabsRequested -= Terminal_CloseOtherTabsRequested;\n            terminal.DuplicateTabRequested -= Terminal_DuplicateTabRequested;\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                var wasSelected = _selectedTerminal == terminal;\n\n                Terminals.Remove(terminal);\n\n                if (Terminals.Count == 0)\n                {\n                    ApplicationView.TryCloseAsync();\n                }\n                else if (wasSelected)\n                {\n                    SelectedTerminal = Terminals.LastOrDefault(t => t != terminal);\n                }\n            });\n        }\n\n        public void Receive(ShellProfileDeletedMessage message)\n        {\n            _keyboardCommandService.DeregisterCommandHandler(message.ProfileId.ToString());\n\n            UpdateDefaultShellProfile();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(ShellProfileChangedMessage message)\n        {\n            UpdateDefaultShellProfile();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(ShellProfileAddedMessage message)\n        {\n            _keyboardCommandService.RegisterCommandHandler(message.ShellProfile.Id.ToString(),\n                async () => await AddProfileByGuidAsync(message.ShellProfile.Id));\n\n            UpdateDefaultShellProfile();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(DefaultShellProfileChangedMessage message)\n        {\n            UpdateDefaultShellProfile();\n        }\n\n        public void Receive(ApplicationSettingsChangedMessage message)\n        {\n            var updateMenu = _applicationSettings != null &&\n                             (_applicationSettings.TabWindowCascadingAppMenu !=\n                              message.ApplicationSettings.TabWindowCascadingAppMenu ||\n                              !message.ApplicationSettings.TabWindowCascadingAppMenu &&\n                              _applicationSettings.NewTerminalLocation !=\n                              message.ApplicationSettings.NewTerminalLocation);\n\n            _applicationSettings = message.ApplicationSettings;\n\n            SetWindowTitle(SelectedTerminal);\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                TabsPosition = message.ApplicationSettings.TabsPosition;\n                OnPropertyChanged(nameof(ShowTabsOnTop));\n                OnPropertyChanged(nameof(ShowTabsOnBottom));\n            });\n\n            if (updateMenu)\n            {\n                ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n            }\n        }\n\n        public void Receive(TerminalOptionsChangedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                BackgroundOpacity = message.TerminalOptions.BackgroundOpacity;\n                UseAcrylicBackground = message.TerminalOptions.UseAcrylicBackground;\n            }, CoreDispatcherPriority.Low);\n        }\n\n        public void Receive(KeyBindingsChangedMessage message)\n        {\n            LoadKeyBindings();\n\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(CommandHistoryChangedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(CreateMenuViewModel, CoreDispatcherPriority.Low, true);\n        }\n\n        private void SelectTabNumber(int tabNumber)\n        {\n            if (tabNumber < Terminals.Count)\n            {\n                SelectedTerminal = Terminals[tabNumber];\n            }\n        }\n\n        private void SelectNextTab()\n        {\n            var currentIndex = Terminals.IndexOf(SelectedTerminal);\n            var nextIndex = (currentIndex + 1) % Terminals.Count;\n            SelectedTerminal = Terminals[nextIndex];\n        }\n\n        private void SelectPreviousTab()\n        {\n            var currentIndex = Terminals.IndexOf(SelectedTerminal);\n            var previousIndex = (currentIndex - 1 + Terminals.Count) % Terminals.Count;\n            SelectedTerminal = Terminals[previousIndex];\n        }\n\n        public void ShowSettings()\n        {\n            ShowSettingsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void ToggleFullScreen()\n        {\n            ApplicationView.ToggleFullScreen();\n        }\n\n        public void OnWindowKeyDown(int key, bool control, bool alt, bool shift, bool meta)\n        {\n            var binding = _keyBindings.Values.SelectMany(bs => bs).FirstOrDefault(b =>\n                b.Key == key && b.Ctrl == control && b.Alt == alt && b.Shift == shift && b.Meta == meta);\n\n            if (binding != null)\n            {\n                _keyboardCommandService.SendCommand(binding.Command);\n            }\n        }\n\n        #region App menu\n\n        private const int RecentItemsMaxCount = 10;\n\n        private MenuViewModel _menuViewModel;\n\n        private readonly ICommand _newDefaultTabCommand;\n        private readonly ICommand _newDefaultWindowCommand;\n        private readonly ICommand _newRemoteTabCommand;\n        private readonly ICommand _newRemoteWindowCommand;\n        private readonly ICommand _newQuickLaunchTabCommand;\n        private readonly ICommand _newQuickLaunchWindowCommand;\n        private readonly ICommand _settingsCommand;\n        private readonly ICommand _aboutCommand;\n        private readonly ICommand _quitCommand;\n\n        public MenuViewModel AppMenuViewModel\n        {\n            get => _menuViewModel;\n            private set => SetProperty(ref _menuViewModel, value);\n        }\n\n        private void CreateMenuViewModel()\n        {\n            var appMenuViewModel = new MenuViewModel();\n\n            if (_applicationSettings.TabWindowCascadingAppMenu)\n            {\n                var tabItem = new ExpandableMenuItemViewModel(\n                    I18N.TranslateWithFallback(\"MenuItem_NewTab_Text\", \"New Tab\"),\n                    description: I18N.TranslateWithFallback(\"MenuItem_NewTab_Text\", \"Launches a session in a new tab.\"),\n                    icon: Mdl2Icon.Add());\n\n                FillCoreItems(tabItem.SubItems, NewTerminalLocation.Tab);\n\n                appMenuViewModel.Items.Add(tabItem);\n\n                var windowItem = new ExpandableMenuItemViewModel(\n                    I18N.TranslateWithFallback(\"MenuItem_NewWindow_Text\", \"New Window\"),\n                    description: I18N.TranslateWithFallback(\"MenuItem_NewWindow_Description\", \"Launches a session in a new window.\"),\n                    icon: Mdl2Icon.NewWindow());\n\n                FillCoreItems(windowItem.SubItems, NewTerminalLocation.Window);\n\n                appMenuViewModel.Items.Add(windowItem);\n            }\n            else\n            {\n                FillCoreItems(appMenuViewModel.Items, _applicationSettings.NewTerminalLocation);\n            }\n\n            appMenuViewModel.Items.Add(new ExpandableMenuItemViewModel(I18N.TranslateWithFallback(\"Recent.Text\", \"Recent\"),\n                GetRecentMenuItems(), I18N.TranslateWithFallback(\"Recent_Description\", \"Recently opened sessions.\"),\n                icon: Mdl2Icon.History()));\n\n            appMenuViewModel.Items.Add(new SeparatorMenuItemViewModel());\n\n            var settingsItem = new MenuItemViewModel(I18N.TranslateWithFallback(\"Settings.Text\", \"Settings\"),\n                _settingsCommand, I18N.TranslateWithFallback(\"Settings_Description\", \"Opens settings window.\"),\n                icon: Mdl2Icon.Settings());\n\n            if (_keyBindings.TryGetValue(nameof(Command.ShowSettings), out var keyBindings) &&\n                keyBindings.FirstOrDefault() is KeyBinding settingsKeyBinding)\n            {\n                LoadKeyBindingsFromModel(settingsItem, settingsKeyBinding);\n            }\n            else\n            {\n                settingsItem.KeyBinding = null;\n            }\n\n            appMenuViewModel.Items.Add(settingsItem);\n\n            appMenuViewModel.Items.Add(new MenuItemViewModel(I18N.TranslateWithFallback(\"AboutDialog.Title\", \"About\"), _aboutCommand,\n                I18N.TranslateWithFallback(\"About_Description\", \"Basic info about the app.\"),\n                icon: Mdl2Icon.Info()));\n\n            appMenuViewModel.Items.Add(new SeparatorMenuItemViewModel());\n\n            var quitItem = new MenuItemViewModel(I18N.TranslateWithFallback(\"Quit.Text\", \"Quit\"), _quitCommand,\n                I18N.TranslateWithFallback(\"Quit.Description\", \"Quit Fluent Terminal\"),\n                icon: Mdl2Icon.Cancel());\n            appMenuViewModel.Items.Add(quitItem);\n\n            if (!appMenuViewModel.EquivalentTo(_menuViewModel))\n            {\n                AppMenuViewModel = appMenuViewModel;\n            }\n        }\n\n        private void FillCoreItems(ObservableCollection<MenuItemViewModelBase> items, NewTerminalLocation location)\n        {\n            var tab = location == NewTerminalLocation.Tab;\n\n            if (_defaultProfile?.Name is string defaultProfileName)\n            {\n                var defaultProfileItem = new MenuItemViewModel(\n                    defaultProfileName, tab ? _newDefaultTabCommand : _newDefaultWindowCommand,\n                    I18N.TranslateWithFallback(\"MenuItem_DefaultProfile_Description\",\n                        \"Starts new terminal session based on the default profile.\"), icon: Mdl2Icon.FavoriteStar());\n\n                var defaultProfileCommand = tab ? nameof(Command.NewTab) : nameof(Command.NewWindow);\n\n                if (_keyBindings.TryGetValue(defaultProfileCommand, out var kbs) &&\n                    kbs.FirstOrDefault() is KeyBinding tabKeyBindings)\n                {\n                    LoadKeyBindingsFromModel(defaultProfileItem, tabKeyBindings);\n                }\n                else\n                {\n                    defaultProfileItem.KeyBinding = null;\n                }\n\n                items.Add(defaultProfileItem);\n            }\n\n            var remoteConnectItem = new MenuItemViewModel(\n                I18N.TranslateWithFallback(\"MenuItem_Remote_Text\", \"Remote Connect...\"),\n                tab ? _newRemoteTabCommand : _newRemoteWindowCommand,\n                I18N.TranslateWithFallback(\"MenuItem_Remote_Description\",\n                    \"Opens a dialog for launching a new SSH or Mosh terminal session.\"),\n                icon: Mdl2Icon.Globe());\n\n            var command = tab ? nameof(Command.NewSshTab) : nameof(Command.NewSshWindow);\n\n            if (_keyBindings.TryGetValue(command, out var keyBindings) &&\n                keyBindings.FirstOrDefault() is KeyBinding remoteTabKeyBinding)\n            {\n                LoadKeyBindingsFromModel(remoteConnectItem, remoteTabKeyBinding);\n            }\n            else\n            {\n                remoteConnectItem.KeyBinding = null;\n            }\n\n            items.Add(remoteConnectItem);\n\n            var quickLaunchItem = new MenuItemViewModel(\n                I18N.TranslateWithFallback(\"MenuItem_QuickLaunch_Text\", \"Quick Launch...\"),\n                tab ? _newQuickLaunchTabCommand : _newQuickLaunchWindowCommand,\n                I18N.TranslateWithFallback(\"MenuItem_QuickLaunch_Description\",\n                    \"Opens a \\\"Quick Launch\\\" dialog for starting a new terminal session.\"),\n                icon: Mdl2Icon.Play());\n\n            command = tab ? nameof(Command.NewCustomCommandTab) : nameof(Command.NewCustomCommandWindow);\n\n            if (_keyBindings.TryGetValue(command, out keyBindings) &&\n                keyBindings.FirstOrDefault() is KeyBinding quickTabKeyBinding)\n            {\n                LoadKeyBindingsFromModel(quickLaunchItem, quickTabKeyBinding);\n            }\n            else\n            {\n                quickLaunchItem.KeyBinding = null;\n            }\n\n            items.Add(quickLaunchItem);\n\n            items.Add(new SeparatorMenuItemViewModel());\n\n            foreach (var profile in _settingsService.GetShellProfiles().Concat(_settingsService.GetSshProfiles()).OrderBy(x => x.Name))\n            {\n                items.Add(new MenuItemViewModel(profile.Name, new AsyncRelayCommand(() => AddProfileAsync(profile, location))));\n            }\n        }\n\n        private ObservableCollection<MenuItemViewModel> GetRecentMenuItems() =>\n            new ObservableCollection<MenuItemViewModel>(_commandHistoryService\n                .GetHistoryRecentFirst(top: RecentItemsMaxCount).Select(CommandToMenuItem));\n\n        private MenuItemViewModel CommandToMenuItem(ExecutedCommand command)\n        {\n            var itemCommand = new AsyncRelayCommand(() => AddProfileAsync(command.ShellProfile));\n            var keyBinding = command.ShellProfile.KeyBindings?.FirstOrDefault() is KeyBinding kb\n                ? new MenuItemKeyBindingViewModel(kb)\n                : null;\n\n            return new MenuItemViewModel(command.Value, itemCommand, keyBinding: keyBinding);\n        }\n\n        private void LoadKeyBindingsFromModel(MenuItemViewModel menuItemViewModel, KeyBinding keyBinding)\n        {\n            if (menuItemViewModel.KeyBinding == null)\n            {\n                menuItemViewModel.KeyBinding = new MenuItemKeyBindingViewModel(keyBinding);\n            }\n            else\n            {\n                menuItemViewModel.KeyBinding.Key = keyBinding.Key;\n                menuItemViewModel.KeyBinding.Ctrl = keyBinding.Ctrl;\n                menuItemViewModel.KeyBinding.Alt = keyBinding.Alt;\n                menuItemViewModel.KeyBinding.Shift = keyBinding.Shift;\n                menuItemViewModel.KeyBinding.Windows = keyBinding.Meta;\n            }\n        }\n\n        #endregion App menu\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/ExpandableMenuItemViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class ExpandableMenuItemViewModel : MenuItemViewModelBase\n    {\n        public ObservableCollection<MenuItemViewModelBase> SubItems { get; }\n\n        public ExpandableMenuItemViewModel(string text, IEnumerable<MenuItemViewModelBase> subItems = null,\n            string description = null, Mdl2Icon icon = null) : base(text, description, icon)\n        {\n            if (subItems == null)\n            {\n                SubItems = new ObservableCollection<MenuItemViewModelBase>();\n            }\n            else if (subItems is ObservableCollection<MenuItemViewModelBase> observableSubItems)\n            {\n                SubItems = observableSubItems;\n            }\n            else\n            {\n                SubItems = new ObservableCollection<MenuItemViewModelBase>(subItems);\n            }\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is ExpandableMenuItemViewModel otherExpandable) ||\n                SubItems.Count != otherExpandable.SubItems.Count)\n            {\n                return false;\n            }\n\n            return !SubItems.Where((t, i) => !t.EquivalentTo(otherExpandable.SubItems[i])).Any();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/Mdl2Icon.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels.Menu\n{\n    public sealed class Mdl2Icon\n    {\n        public string Color { get; }\n        public string Glyph { get; }\n\n        private Mdl2Icon(string glyph, string color = null)\n        {\n            Glyph = glyph;\n            Color = color;\n        }\n\n        public static Mdl2Icon Link(string color = null) => new Mdl2Icon(\"\\uE71B\", color);\n\n        public static Mdl2Icon Copy(string color = null) => new Mdl2Icon(\"\\uE8C8\", color);\n\n        public static Mdl2Icon Paste(string color = null) => new Mdl2Icon(\"\\uE77F\", color);\n\n        public static Mdl2Icon Edit(string color = null) => new Mdl2Icon(\"\\uE70F\", color);\n\n        public static Mdl2Icon Search(string color = null) => new Mdl2Icon(\"\\uE721\", color);\n\n        public static Mdl2Icon Add(string color = null) => new Mdl2Icon(\"\\uE710\", color);\n\n        public static Mdl2Icon Cancel(string color = null) => new Mdl2Icon(\"\\uE711\", color);\n\n        public static Mdl2Icon PaginationDotOutline10(string color = null) => new Mdl2Icon(\"\\uF126\", color);\n\n        public static Mdl2Icon PaginationDotSolid10(string color = null) => new Mdl2Icon(\"\\uF127\", color);\n\n        public static Mdl2Icon NewWindow(string color = null) => new Mdl2Icon(\"\\uE78B\", color);\n\n        public static Mdl2Icon History(string color = null) => new Mdl2Icon(\"\\uE81C\", color);\n\n        public static Mdl2Icon Settings(string color = null) => new Mdl2Icon(\"\\uE713\", color);\n\n        public static Mdl2Icon Info(string color = null) => new Mdl2Icon(\"\\uE946\", color);\n\n        public static Mdl2Icon FavoriteStar(string color = null) => new Mdl2Icon(\"\\uE734\", color);\n\n        public static Mdl2Icon Globe(string color = null) => new Mdl2Icon(\"\\uE774\", color);\n\n        public static Mdl2Icon Play(string color = null) => new Mdl2Icon(\"\\uE768\", color);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/MenuItemKeyBindingViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\nusing System.Collections.Generic;\nusing Windows.System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuItemKeyBindingViewModel : ObservableObject\n    {\n        private int _key;\n\n        public int Key\n        {\n            get => _key;\n            set => SetProperty(ref _key, value);\n        }\n\n        private int _keyModifiers;\n\n        // Corresponds to https://docs.microsoft.com/en-us/uwp/api/windows.system.virtualkeymodifiers\n        public int KeyModifiers\n        {\n            get => _keyModifiers;\n            private set => SetProperty(ref _keyModifiers, value);\n        }\n\n        private bool _ctrl;\n\n        public bool Ctrl\n        {\n            get => _ctrl;\n            set\n            {\n                if (SetProperty(ref _ctrl, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        private bool _alt;\n\n        public bool Alt\n        {\n            get => _alt;\n            set\n            {\n                if (SetProperty(ref _alt, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        private bool _shift;\n\n        public bool Shift\n        {\n            get => _shift;\n            set\n            {\n                if (SetProperty(ref _shift, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        private bool _windows;\n\n        public bool Windows\n        {\n            get => _windows;\n            set\n            {\n                if (SetProperty(ref _windows, value))\n                {\n                    SetKeyModifiers();\n                }\n            }\n        }\n\n        public bool IsExtendedVirtualKey => !Enum.IsDefined(typeof(VirtualKey), Key);\n\n        public string GetOverrideText()\n        {\n            var segments = new List<string>();\n\n            if (Ctrl) segments.Add(\"Ctrl\");\n            if (Alt) segments.Add(\"Alt\");\n            if (Windows) segments.Add(\"Windows\");\n            if (Shift) segments.Add(\"Shift\");\n\n            segments.Add(EnumHelper.GetEnumDescription((ExtendedVirtualKey)Key));\n\n            return string.Join(\"+\", segments);\n        }\n\n        public MenuItemKeyBindingViewModel(int key = 0, bool ctrl = false, bool alt = false, bool shift = false,\n            bool windows = false)\n        {\n            _key = key;\n            _ctrl = ctrl;\n            _alt = alt;\n            _shift = shift;\n            _windows = windows;\n\n            SetKeyModifiers();\n        }\n\n        public MenuItemKeyBindingViewModel(KeyBinding keyBinding) : this(keyBinding.Key, keyBinding.Ctrl,\n            keyBinding.Alt, keyBinding.Shift, keyBinding.Meta)\n        {\n        }\n\n\n\n        private void SetKeyModifiers()\n        {\n            // Based on VirtualKeyModifiers enum values (https://docs.microsoft.com/en-us/uwp/api/windows.system.virtualkeymodifiers)\n            var result = 0;\n\n            if (_ctrl)\n            {\n                result |= 1;\n            }\n\n            if (_alt)\n            {\n                result |= 2;\n            }\n\n            if (_shift)\n            {\n                result |= 4;\n            }\n\n            if (_windows)\n            {\n                result |= 8;\n            }\n\n            KeyModifiers = result;\n        }\n\n        public bool EquivalentTo(MenuItemKeyBindingViewModel other)\n        {\n            if (ReferenceEquals(this, other)) return true;\n\n            if (other == null) return false;\n\n            return _key == other._key && _keyModifiers == other._keyModifiers;\n        }\n\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/MenuItemViewModel.cs",
    "content": "﻿using System;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuItemViewModel : MenuItemViewModelBase\n    {\n        #region Properties\n\n        private MenuItemKeyBindingViewModel _keyBinding;\n\n        public MenuItemKeyBindingViewModel KeyBinding\n        {\n            get => _keyBinding;\n            set => SetProperty(ref _keyBinding, value);\n        }\n\n        public ICommand Command { get; }\n\n        #endregion Properties\n\n        #region Constructors\n\n        public MenuItemViewModel(string text, ICommand command, string description = null, Mdl2Icon icon = null,\n            MenuItemKeyBindingViewModel keyBinding = null) : base(text, description, icon)\n        {\n            _keyBinding = keyBinding;\n            Command = command ?? throw new ArgumentNullException(nameof(command));\n        }\n\n        #endregion Constructors\n\n        #region Methods\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is MenuItemViewModel menuItem)) return false;\n\n            return _keyBinding?.EquivalentTo(menuItem._keyBinding) ?? menuItem._keyBinding == null;\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/MenuItemViewModelBase.cs",
    "content": "﻿using FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuItemViewModelBase : ObservableObject\n    {\n        #region Properties\n\n        private string _text;\n\n        public string Text\n        {\n            get => _text;\n            set => SetProperty(ref _text, value);\n        }\n\n        private string _description;\n\n        public string Description\n        {\n            get => _description;\n            set => SetProperty(ref _description, value);\n        }\n\n        private Mdl2Icon _icon;\n\n        public Mdl2Icon Icon\n        {\n            get => _icon;\n            set => SetProperty(ref _icon, value);\n        }\n\n        #endregion Properties\n\n        #region Constructor\n\n        protected MenuItemViewModelBase(string text, string description, Mdl2Icon icon)\n        {\n            _text = text;\n            _description = description;\n            _icon = icon;\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        public virtual bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (ReferenceEquals(this, other)) return true;\n\n            if (other == null) return false;\n\n            return _text.NullableEqualTo(other._text) && _description.NullableEqualTo(other._description) &&\n                   (_icon?.Equals(other._icon) ?? other._icon == null);\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/MenuViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class MenuViewModel : ObservableObject\n    {\n        public ObservableCollection<MenuItemViewModelBase> Items { get; }\n\n        public MenuViewModel(IEnumerable<MenuItemViewModelBase> items = null)\n        {\n            if (items == null)\n            {\n                Items = new ObservableCollection<MenuItemViewModelBase>();\n            }\n            else if (items is ObservableCollection<MenuItemViewModelBase> observableItems)\n            {\n                Items = observableItems;\n            }\n            else\n            {\n                Items = new ObservableCollection<MenuItemViewModelBase>(items);\n            }\n        }\n\n        public bool EquivalentTo(MenuViewModel other)\n        {\n            if (ReferenceEquals(this, other)) return true;\n\n            if (other == null) return false;\n\n            if (Items.Count != other.Items.Count) return false;\n\n            return !Items.Where((t, i) => !t.EquivalentTo(other.Items[i])).Any();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/RadioMenuItemViewModel.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class RadioMenuItemViewModel : MenuItemViewModelBase\n    {\n        public object BindingSource { get; }\n        public string BindingPath { get; }\n        public string GroupName { get; }\n\n        public RadioMenuItemViewModel(string text, string groupName, object bindingSource, string bindingPath = null, string description = null, Mdl2Icon icon = null)\n            : base(text, description, icon)\n        {\n            GroupName = groupName ?? throw new ArgumentNullException(nameof(groupName));\n            BindingSource = bindingSource ?? throw new ArgumentNullException(nameof(bindingSource));\n            BindingPath = bindingPath;\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is RadioMenuItemViewModel radioMenuItem)) return false;\n\n            return GroupName == radioMenuItem.GroupName &&  BindingSource == radioMenuItem.BindingSource && BindingPath == radioMenuItem.BindingPath;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/SeparatorMenuItemViewModel.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels.Menu\n{\n    public class SeparatorMenuItemViewModel : MenuItemViewModelBase\n    {\n        public SeparatorMenuItemViewModel()\n            : base(string.Empty, string.Empty, null)\n        {\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            return other is SeparatorMenuItemViewModel;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Menu/ToggleMenuItemViewModel.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n    public class ToggleMenuItemViewModel : MenuItemViewModelBase\n    {\n        public object BindingSource { get; }\n        public string BindingPath { get; }\n\n        public ToggleMenuItemViewModel(string text, object bindingSource, string bindingPath = null, string description = null, Mdl2Icon icon = null)\n            : base(text, description, icon)\n        {\n            BindingSource = bindingSource ?? throw new ArgumentNullException(nameof(bindingSource));\n            BindingPath = bindingPath;\n        }\n\n        public override bool EquivalentTo(MenuItemViewModelBase other)\n        {\n            if (!base.EquivalentTo(other)) return false;\n\n            if (!(other is ToggleMenuItemViewModel toggleMenuItem)) return false;\n\n            return BindingSource == toggleMenuItem.BindingSource && BindingPath == toggleMenuItem.BindingPath;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/OverlayViewModel.cs",
    "content": "﻿using Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\nusing Windows.UI.Xaml;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class OverlayViewModel : ObservableObject\n    {\n        private readonly DispatcherTimer _overlayTimer;\n        private bool _showOverlay;\n        private string _overlayContent;\n\n        // Important! The constructor has to be called from the UI thread.\n        public OverlayViewModel()\n        {\n            _overlayTimer = new DispatcherTimer {Interval = new TimeSpan(0, 0, 2)};\n        }\n\n        public bool ShowOverlay\n        {\n            get => _showOverlay;\n            set => SetProperty(ref _showOverlay, value);\n        }\n\n        public string OverlayContent\n        {\n            get => _overlayContent;\n            set => SetProperty(ref _overlayContent, value);\n        }\n\n        public void Show(string message)\n        {\n            OverlayContent = message; \n            ShowOverlay = true;\n\n            if (_overlayTimer.IsEnabled)\n            {\n                _overlayTimer.Stop();\n                _overlayTimer.Tick -= OnResizeOverlayTimerFinished;\n            }\n            _overlayTimer.Start();\n            _overlayTimer.Tick += OnResizeOverlayTimerFinished;\n        }\n\n        private void OnResizeOverlayTimerFinished(object sender, object e)\n        {\n            _overlayTimer.Stop();\n            _overlayTimer.Tick -= OnResizeOverlayTimerFinished;\n            ShowOverlay = false;\n        }\n\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/ProfileViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing FluentTerminal.App.ViewModels.Settings;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    /// <summary>\n    /// Base class for all profile view models. Implements logic for saving, editing, resetting, etc.\n    /// </summary>\n    public abstract class ProfileViewModelBase<T> : ObservableObject where T : ProfileProviderViewModelBase\n    {\n        #region Fields\n\n        protected readonly IDialogService DialogService;\n        protected readonly ISettingsService SettingsService;\n\n        private List<KeyBinding> _bindingsBeforeEdit;\n        private Dictionary<string, string> _environmentVariablesBeforeEdit;\n        private string _nameBeforeEdit;\n\n        #endregion Fields\n\n        #region Properties\n\n        protected bool IsNew { get; private set; }\n\n        public Guid Id { get; private set; }\n\n        private bool _inEditMode;\n\n        public bool InEditMode\n        {\n            get => _inEditMode;\n            set => SetProperty(ref _inEditMode, value);\n        }\n\n        private string _name;\n\n        public string Name\n        {\n            get => _name;\n            set => SetProperty(ref _name, value);\n        }\n\n        public KeyBindingsViewModel KeyBindings { get; }\n\n        public ObservableCollection<EnvironmentVariableViewModel> EnvironmentVariables { get; } = new ObservableCollection<EnvironmentVariableViewModel>();\n\n        public T ProfileVm { get; protected set; }\n\n        #endregion Properties\n\n        #region Events\n\n        // Needs to be triggered from UI thread\n        public event EventHandler Deleted;\n\n        #endregion Events\n\n        #region Commands\n\n        public ICommand CancelEditCommand { get; }\n\n        public ICommand DeleteCommand { get; }\n\n        public ICommand EditCommand { get; }\n\n        public ICommand SaveChangesCommand { get; }\n\n        public ICommand AddKeyboardShortcutCommand { get; }\n\n        #endregion Commands\n\n        #region Constructor\n\n        protected ProfileViewModelBase(ShellProfile shellProfile, ISettingsService settingsService, IDialogService dialogService, bool isNew)\n        {\n            SettingsService = settingsService;\n            DialogService = dialogService;\n            IsNew = isNew;\n\n            KeyBindings = new KeyBindingsViewModel(shellProfile.Id.ToString(), dialogService, string.Empty, false);\n\n            foreach (var environmentVariable in shellProfile.EnvironmentVariables)\n            {\n                EnvironmentVariables.Add(new EnvironmentVariableViewModel\n                {\n                    Name = environmentVariable.Key,\n                    Value = environmentVariable.Value\n                });\n            }\n\n            Initialize(shellProfile);\n\n            DeleteCommand = new AsyncRelayCommand(DeleteAsync, CanDelete);\n            EditCommand = new RelayCommand(Edit);\n            CancelEditCommand = new AsyncRelayCommand(CancelEditAsync);\n            SaveChangesCommand = new AsyncRelayCommand(SaveChangesAsync);\n            AddKeyboardShortcutCommand = new AsyncRelayCommand(AddKeyboardShortcutAsync);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        // Requires UI thread\n        // Loads view model properties from the input shellProfile\n        protected void Initialize(ShellProfile shellProfile)\n        {\n            Id = shellProfile.Id;\n            Name = shellProfile.Name;\n\n            KeyBindings.Clear();\n            foreach (var keyBinding in shellProfile.KeyBindings.Select(x => new KeyBinding(x)).ToList())\n            {\n                KeyBindings.Add(keyBinding);\n            }\n        }\n\n        protected virtual bool HasChanges()\n        {\n            return ProfileVm.HasChanges()\n                || !_nameBeforeEdit.NullableEqualTo(_name)\n                || !(_bindingsBeforeEdit?.SequenceEqual(KeyBindings.KeyBindings.Select(x => x.Model).ToList()) ?? false)\n                || !(_environmentVariablesBeforeEdit?.SequenceEqual(EnvironmentVariables.ToDictionary(x => x.Name, x => x.Value)) ?? false);\n        }\n\n        // Requires UI thread\n        private async Task DeleteAsync()\n        {\n            // ConfigureAwait(true) because we need to trigger Deleted event from the calling (UI) thread.\n            var result = await DialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmDeleteProfile\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                Deleted?.Invoke(this, EventArgs.Empty);\n            }\n        }\n\n        protected abstract bool CanDelete();\n\n        private void Edit()\n        {\n            if (InEditMode)\n            {\n                return;\n            }\n\n            _bindingsBeforeEdit = KeyBindings.KeyBindings.Select(x => x.Model).ToList();\n            _environmentVariablesBeforeEdit = EnvironmentVariables.ToDictionary(x => x.Name, x => x.Value);\n            _nameBeforeEdit = _name;\n\n            KeyBindings.Editable = true;\n            InEditMode = true;\n        }\n\n        // Requires UI thread\n        private async Task CancelEditAsync()\n        {\n            if (IsNew)\n            {\n                await DeleteAsync().ConfigureAwait(false);\n\n                return;\n            }\n\n            if (!HasChanges())\n            {\n                KeyBindings.Editable = false;\n                InEditMode = false;\n\n                return;\n            }\n\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards\n            if (await DialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                        I18N.Translate(\"ConfirmDiscardChanges\"), DialogButton.OK, DialogButton.Cancel)\n                    .ConfigureAwait(true) == DialogButton.OK)\n            {\n                // Cancelled, so rollback\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards\n                await ProfileVm.RejectChangesAsync().ConfigureAwait(true);\n\n                KeyBindings.Editable = false;\n                InEditMode = false;\n            }\n        }\n\n        // Requires UI thread\n        private async Task SaveChangesAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var error = await ProfileVm.AcceptChangesAsync().ConfigureAwait(true);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                await DialogService.ShowMessageDialogAsync(I18N.Translate(\"InvalidInput\"), error, DialogButton.OK)\n                    .ConfigureAwait(false);\n\n                return;\n            }\n\n            if (EnvironmentVariables.Select(x => x.Name).Any(string.IsNullOrWhiteSpace))\n            {\n                await DialogService.ShowMessageDialogAsync(I18N.Translate(\"InvalidInput\"),\n                    I18N.Translate(\"EmptyEnvironmentVariableName\"), DialogButton.OK).ConfigureAwait(false);\n\n                return;\n            }\n\n            if (EnvironmentVariables.Select(x => x.Name).Distinct().Count() != EnvironmentVariables.Count)\n            {\n                await DialogService.ShowMessageDialogAsync(I18N.Translate(\"InvalidInput\"),\n                    I18N.Translate(\"DuplicateEnvironmentVariable\"), DialogButton.OK).ConfigureAwait(false);\n\n                return;\n            }\n\n            var profile = ProfileVm.Model;\n\n            profile.Id = Id;\n            profile.Name = _name;\n            profile.KeyBindings = KeyBindings.KeyBindings.Select(x => x.Model).ToList();\n            profile.EnvironmentVariables = EnvironmentVariables.ToDictionary(x => x.Name, x => x.Value);\n\n            if (profile is SshProfile sshProfile)\n            {\n                SettingsService.SaveSshProfile(sshProfile, IsNew);\n            }\n            else\n            {\n                SettingsService.SaveShellProfile(profile, IsNew);\n            }\n\n            KeyBindings.Editable = false;\n            InEditMode = false;\n            IsNew = false;\n        }\n\n        private Task AddKeyboardShortcutAsync()\n        {\n            return KeyBindings.ShowAddKeyBindingDialogAsync();\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Profiles/CommonProfileProviderViewModel.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows.Input;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    /// <summary>\n    /// Used for common profiles (PowerShell, CMD, WSL).\n    /// </summary>\n    public class CommonProfileProviderViewModel : ProfileProviderViewModelBase\n    {\n        #region Fields\n\n        private readonly IFileSystemService _fileSystemService;\n\n        #endregion Fields\n\n        #region Properties\n\n        public bool PreInstalled { get; private set; }\n\n        private string _location;\n\n        public string Location\n        {\n            get => _location;\n            set => SetProperty(ref _location, value);\n        }\n\n        private string _workingDirectory;\n\n        public string WorkingDirectory\n        {\n            get => _workingDirectory;\n            set => SetProperty(ref _workingDirectory, value);\n        }\n\n        private string _arguments;\n\n        public string Arguments\n        {\n            get => _arguments;\n            set => SetProperty(ref _arguments, value);\n        }\n\n        #endregion Properties\n\n        #region Commands\n\n        public ICommand BrowseForCustomShellCommand { get; }\n\n        public ICommand BrowseForWorkingDirectoryCommand { get; }\n\n        #endregion Commands\n\n        #region Constructor\n\n        public CommonProfileProviderViewModel(ISettingsService settingsService, IApplicationView applicationView,\n            IFileSystemService fileSystemService, ShellProfile original = null) : base(settingsService, applicationView,\n            true, original)\n        {\n            _fileSystemService = fileSystemService;\n\n            BrowseForCustomShellCommand = new AsyncRelayCommand(BrowseForCustomShell);\n            BrowseForWorkingDirectoryCommand = new AsyncRelayCommand(BrowseForWorkingDirectory);\n\n            Initialize(Model);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        private void Initialize(ShellProfile profile)\n        {\n            PreInstalled = profile.PreInstalled;\n            Location = profile.Location;\n            Arguments = profile.Arguments;\n            WorkingDirectory = profile.WorkingDirectory;\n        }\n\n        protected override void LoadFromProfile(ShellProfile profile)\n        {\n            base.LoadFromProfile(profile);\n\n            Initialize(profile);\n        }\n\n        protected override async Task CopyToProfileAsync(ShellProfile profile)\n        {\n            await base.CopyToProfileAsync(profile).ConfigureAwait(false);\n\n            profile.Location = _location;\n            profile.Arguments = _arguments;\n            profile.WorkingDirectory = _workingDirectory;\n        }\n\n        public override async Task<string> ValidateAsync()\n        {\n            var error = await base.ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return error;\n            }\n\n            if (!string.IsNullOrEmpty(_location))\n            {\n                return null;\n            }\n\n            error = I18N.Translate(\"LocationCantBeEmpty\");\n\n            return string.IsNullOrEmpty(error) ? \"Location cannot be empty.\" : error;\n        }\n\n        public override bool HasChanges()\n        {\n            return base.HasChanges() || !Model.Location.NullableEqualTo(_location) ||\n                   !Model.WorkingDirectory.NullableEqualTo(_workingDirectory) ||\n                   !Model.Arguments.NullableEqualTo(_arguments);\n        }\n\n        // Requires UI thread\n        private async Task BrowseForCustomShell()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var file = await _fileSystemService.OpenFileAsync(new[] { \".exe\" }).ConfigureAwait(true);\n            if (file != null)\n            {\n                Location = file.Path;\n            }\n        }\n\n        // Requires UI thread\n        private async Task BrowseForWorkingDirectory()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var directory = await _fileSystemService.BrowseForDirectoryAsync().ConfigureAwait(true);\n            if (directory != null)\n            {\n                WorkingDirectory = directory;\n            }\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Profiles/ProfileProviderViewModelBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Web;\nusing Windows.UI.Core;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Messages;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Messaging;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    /// <summary>\n    /// Base class for all profile view model classes. It contains properties shared by all other view models\n    /// (theme-related properties, line-ending translation, and WinPTY/ConPTY selection).\n    /// </summary>\n    public abstract class ProfileProviderViewModelBase : ObservableObject,\n        IRecipient<ThemeAddedMessage>,\n        IRecipient<ThemeDeletedMessage>\n    {\n        #region Fields\n\n        protected readonly ISettingsService SettingsService;\n        protected readonly IApplicationView ApplicationView;\n        private readonly bool _strictProfileType;\n\n        #endregion Fields\n\n        #region Properties\n\n        private ShellProfile _model;\n\n        public ShellProfile Model\n        {\n            get => _model;\n            set\n            {\n                if (value == null)\n                {\n                    throw new ArgumentNullException(nameof(value));\n                }\n\n                if (ReferenceEquals(_model, value))\n                {\n                    return;\n                }\n\n                if (_strictProfileType && _model != null && _model.GetType() != value.GetType())\n                {\n                    throw new ArgumentException($\"The value has to be of type {_model.GetType().Name}.\");\n                }\n\n                _model = value;\n\n                LoadFromProfile(value);\n            }\n        }\n\n        public ObservableCollection<TabTheme> TabThemes { get; }\n\n        public ObservableCollection<TerminalTheme> TerminalThemes { get; }\n\n        private TabTheme _selectedTabTheme;\n\n        public TabTheme SelectedTabTheme\n        {\n            get => _selectedTabTheme ?? (_selectedTabTheme = TabThemes.FirstOrDefault(t => t.Id.Equals(_tabThemeId)));\n            set\n            {\n                if (value == null)\n                {\n                    // Ignore attempt setting null.\n                    return;\n                }\n\n                // Ensure that it's from the list\n                var theme = TabThemes.Contains(value)\n                    ? value\n                    : TabThemes.FirstOrDefault(t => t.Id == value.Id) ?? TabThemes.First();\n\n                if (SetProperty(ref _selectedTabTheme, theme))\n                {\n                    _tabThemeId = theme.Id;\n                }\n            }\n        }\n\n        private int _tabThemeId;\n\n        public int TabThemeId\n        {\n            get => _tabThemeId;\n            set\n            {\n                if (SetProperty(ref _tabThemeId, value))\n                {\n                    SelectedTabTheme = TabThemes.FirstOrDefault(t => t.Id.Equals(value));\n                }\n            }\n        }\n\n        private TerminalTheme _selectedTerminalTheme;\n\n        public TerminalTheme SelectedTerminalTheme\n        {\n            get => _selectedTerminalTheme ??\n                   (_selectedTerminalTheme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(_terminalThemeId)));\n            set\n            {\n                TerminalTheme theme = value;\n\n                if (theme == null)\n                {\n                    return;\n                }\n                else if (!TerminalThemes.Contains(theme))\n                {\n                    // Ensure that it's from the list\n                    theme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(theme.Id)) ?? TerminalThemes.First();\n                }\n\n                if (SetProperty(ref _selectedTerminalTheme, theme))\n                {\n                    _terminalThemeId = theme.Id;\n                }\n            }\n        }\n\n        private Guid _terminalThemeId;\n\n        public Guid TerminalThemeId\n        {\n            get => _terminalThemeId;\n            set\n            {\n                if (SetProperty(ref _terminalThemeId, value))\n                {\n                    SelectedTerminalTheme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(value));\n                }\n            }\n        }\n\n        private bool _useConPty;\n\n        public bool UseConPty\n        {\n            get => _useConPty;\n            set => SetProperty(ref _useConPty, value);\n        }\n\n        private bool _useBuffer;\n\n        public bool UseBuffer\n        {\n            get => _useBuffer;\n            set => SetProperty(ref _useBuffer, value);\n        }\n\n        #endregion Properties\n\n        #region Constructor\n\n        protected ProfileProviderViewModelBase(ISettingsService settingsService, IApplicationView applicationView,\n            bool strictProfileType, ShellProfile original = null)\n        {\n            SettingsService = settingsService;\n            ApplicationView = applicationView;\n            _strictProfileType = strictProfileType;\n\n            _model = original ?? new ShellProfile();\n\n            TabThemes = new ObservableCollection<TabTheme>(settingsService.GetTabThemes());\n\n            SelectedTabTheme = TabThemes.First();\n\n            TerminalThemes = new ObservableCollection<TerminalTheme>(settingsService.GetThemes());\n\n            TerminalThemes.Insert(0, new TerminalTheme {Id = Guid.Empty, Name = \"Default\"});\n\n            SelectedTerminalTheme = TerminalThemes.First();\n\n            Initialize(Model);\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        public void Receive(ThemeDeletedMessage message)\n        {\n            var theme = TerminalThemes.FirstOrDefault(t => t.Id.Equals(message.ThemeId));\n\n            if (theme == null)\n            {\n                return;\n            }\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                TerminalThemes.Remove(theme);\n\n                if (_terminalThemeId.Equals(message.ThemeId))\n                {\n                    SelectedTerminalTheme = TerminalThemes.First();\n                }\n            }, CoreDispatcherPriority.Low, true);\n        }\n\n        public void Receive(ThemeAddedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() => TerminalThemes.Add(message.Theme), CoreDispatcherPriority.Low);\n        }\n\n        private void Initialize(ShellProfile profile)\n        {\n            UseConPty = profile.UseConPty;\n            UseBuffer = profile.UseBuffer;\n            TerminalThemeId = profile.TerminalThemeId;\n            TabThemeId = profile.TabThemeId;\n        }\n\n        protected virtual void LoadFromProfile(ShellProfile profile)\n        {\n            Initialize(profile);\n        }\n\n        protected virtual Task CopyToProfileAsync(ShellProfile profile)\n        {\n            profile.UseConPty = _useConPty;\n            profile.UseBuffer = _useBuffer;\n            profile.TerminalThemeId = _terminalThemeId;\n            profile.TabThemeId = _tabThemeId;\n            return Task.CompletedTask;\n        }\n\n        public virtual Task<string> ValidateAsync()\n        {\n            return Task.FromResult<string>(null);\n        }\n\n        /// <summary>\n        /// Returns <c>true</c> if view model values aren't equal to the corresponding values of the\n        /// underlying <see cref=\"ShellProfile\"/>.\n        /// </summary>\n        public virtual bool HasChanges()\n        {\n            return Model.UseConPty != _useConPty ||\n                   Model.UseBuffer != _useBuffer ||\n                   !Model.TerminalThemeId.Equals(_terminalThemeId) ||\n                   Model.TabThemeId != _tabThemeId;\n        }\n\n        /// <summary>\n        /// Copies values from the view model to the underlying <see cref=\"ShellProfile\"/>.\n        /// </summary>\n        /// <param name=\"acceptIfInvalid\">Defines what will happen if the view model data is invalid (if\n        /// <see cref=\"ValidateAsync\"/> returns non-empty string). If this parameter is set to <c>true</c>, the\n        /// data will be copied to the underlying <see cref=\"ShellProfile\"/> anyway. If it's set to <c>false</c>,\n        /// (default) the underlying <see cref=\"ShellProfile\"/> won't be changed at all.</param>\n        /// <returns><c>null</c> or empty string if the operation was successful (the data is valid), or an error\n        /// message returned by <see cref=\"ValidateAsync\"/> method.</returns>\n        public async Task<string> AcceptChangesAsync(bool acceptIfInvalid = false)\n        {\n            var error = await ValidateAsync().ConfigureAwait(false);\n\n            if (acceptIfInvalid || string.IsNullOrEmpty(error))\n            {\n                await CopyToProfileAsync(Model).ConfigureAwait(false);\n            }\n\n            return error;\n        }\n\n        public Task RejectChangesAsync()\n        {\n            return ApplicationView.ExecuteOnUiThreadAsync(() => LoadFromProfile(Model));\n        }\n\n        #endregion Methods\n\n        #region Links/shortcuts related\n\n        private const string UseConPtyQueryStringName = \"conpty\";\n        private const string UseBufferQueryStringName = \"buffer\";\n        private const string TerminalThemeIdQueryStringName = \"theme\";\n        private const string TabThemeIdQueryStringName = \"tab\";\n\n        private const string ShortcutFileFormat = @\"[{{000214A0-0000-0000-C000-000000000046}}]\nProp3=19,0\n[InternetShortcut]\nIDList=\nURL={0}\n\";\n\n        public static string GetShortcutFileContent(string url) => string.Format(ShortcutFileFormat, url);\n\n        public static IEnumerable<Tuple<string, string>> ParseParams(string uriOpts, char separator) =>\n            uriOpts.Split(separator).Select(ParseSshOptionFromUri).Where(p => p != null);\n\n        private static Tuple<string, string> ParseSshOptionFromUri(string option)\n        {\n            string[] nv = option.Split('=');\n\n            if (nv.Length != 2 || string.IsNullOrEmpty(nv[0]))\n            {\n                // For now simply ignore invalid options\n                return null;\n                //throw new FormatException($\"Invalid SSH option '{option}'.\");\n            }\n\n            return Tuple.Create(HttpUtility.UrlDecode(nv[0]), HttpUtility.UrlDecode(nv[1]));\n        }\n\n        /// <summary>\n        /// Generates URL.\n        /// </summary>\n        /// <returns><see cref=\"Tuple\"/> whose first item represents success. If the first item is <c>true</c>,\n        /// the second contains the URL. If the first item is <c>false</c>, the second contains error message.</returns>\n        public virtual Task<Tuple<bool, string>> GetUrlAsync() =>\n            Task.FromResult(Tuple.Create(false, \"Not supported.\"));\n\n        public string GetBaseQueryString()\n        {\n            var queryString = $\"{UseConPtyQueryStringName}={_useConPty}&{UseBufferQueryStringName}={_useBuffer}\";\n\n            if (_tabThemeId != TabThemes.First().Id)\n            {\n                queryString += $\"&{TabThemeIdQueryStringName}={_tabThemeId:##########}\";\n            }\n\n            if (!_terminalThemeId.Equals(TerminalThemes.First().Id))\n            {\n                queryString += $\"&{TerminalThemeIdQueryStringName}={_terminalThemeId}\";\n            }\n\n            return queryString;\n        }\n\n        public void LoadBaseFromQueryString(IList<Tuple<string, string>> queryStringParams)\n        {\n            if (queryStringParams == null)\n            {\n                return;\n            }\n\n            var keyValue = queryStringParams.FirstOrDefault(t =>\n                UseConPtyQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && bool.TryParse(keyValue.Item2?.ToLower(), out bool useConPty))\n            {\n                UseConPty = useConPty;\n            }\n\n            keyValue = queryStringParams.FirstOrDefault(t =>\n                UseBufferQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && bool.TryParse(keyValue.Item2?.ToLower(), out bool useBuffer))\n            {\n                UseConPty = useBuffer;\n            }\n\n            keyValue = queryStringParams.FirstOrDefault(t =>\n                TabThemeIdQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && int.TryParse(keyValue.Item2, out int tabThemeId))\n            {\n                TabThemeId = tabThemeId;\n            }\n\n            keyValue = queryStringParams.FirstOrDefault(t =>\n                TerminalThemeIdQueryStringName.Equals(t.Item1, StringComparison.OrdinalIgnoreCase));\n\n            if (!string.IsNullOrEmpty(keyValue?.Item2) && Guid.TryParse(keyValue.Item2, out Guid terminalThemeId))\n            {\n                TerminalThemeId = terminalThemeId;\n            }\n        }\n\n        #endregion Links/shortcuts related\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Profiles/SshConnectViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing System.Web;\nusing System.Windows.Input;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    /// <summary>\n    /// View-model for rich-UI based SSH profiles.\n    /// </summary>\n    public class SshConnectViewModel : ProfileProviderViewModelBase\n    {\n        #region Static\n\n        public static string GetErrorString(SshConnectionInfoValidationResult result, string separator = \"; \") =>\n            string.Join(separator, GetErrors(result));\n\n        public static IEnumerable<string> GetErrors(SshConnectionInfoValidationResult result)\n        {\n            if (result == SshConnectionInfoValidationResult.Valid)\n            {\n                yield break;\n            }\n\n            foreach (var value in Enum.GetValues(typeof(SshConnectionInfoValidationResult))\n                .Cast<SshConnectionInfoValidationResult>().Where(r => r != SshConnectionInfoValidationResult.Valid))\n            {\n                if ((value & result) == value)\n                {\n                    yield return I18N.Translate($\"{nameof(SshConnectionInfoValidationResult)}.{value}\");\n                }\n            }\n        }\n\n        #endregion Static\n\n        #region Fields\n\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly IFileSystemService _fileSystemService;\n\n        // To prevent validating the existence of the same file multiple times because it's kinda expensive\n        private string _validatedIdentityFile;\n\n        #endregion Fields\n\n        #region Properties\n\n        private string _host;\n\n        public string Host\n        {\n            get => _host;\n            set => SetProperty(ref _host, value);\n        }\n\n        private ushort _sshPort;\n\n        public ushort SshPort\n        {\n            get => _sshPort;\n            set => SetProperty(ref _sshPort, value);\n        }\n\n        private string _username;\n\n        public string Username\n        {\n            get => _username;\n            set => SetProperty(ref _username, value);\n        }\n\n        private string _identityFile;\n\n        public string IdentityFile\n        {\n            get => _identityFile;\n            set => SetProperty(ref _identityFile, value);\n        }\n\n        private bool _useMosh;\n\n        public bool UseMosh\n        {\n            get => _useMosh;\n            set => SetProperty(ref _useMosh, value);\n        }\n\n        private ushort _moshPortFrom;\n\n        public ushort MoshPortFrom\n        {\n            get => _moshPortFrom;\n            set => SetProperty(ref _moshPortFrom, value);\n        }\n\n        private ushort _moshPortTo;\n\n        public ushort MoshPortTo\n        {\n            get => _moshPortTo;\n            set => SetProperty(ref _moshPortTo, value);\n        }\n\n        #endregion Properties\n\n        #region Commands\n\n        public ICommand BrowseForIdentityFileCommand { get; }\n\n        #endregion Commands\n\n        #region Constructor\n\n        public SshConnectViewModel(ISettingsService settingsService, IApplicationView applicationView,\n            ITrayProcessCommunicationService trayProcessCommunicationService, IFileSystemService fileSystemService,\n            SshProfile original = null) : base(settingsService, applicationView, true,\n            original ?? new SshProfile { UseMosh = settingsService.GetApplicationSettings().UseMoshByDefault,\n                RequestConPty = settingsService.GetApplicationSettings().UseConPty\n            })\n        {\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _fileSystemService = fileSystemService;\n\n            Initialize((SshProfile)Model);\n\n            BrowseForIdentityFileCommand = new AsyncRelayCommand(BrowseForIdentityFileAsync);\n        }\n\n        #endregion Constructor\n\n        #region Methods\n\n        // Fills the view model properties from the input sshProfile\n        private void Initialize(SshProfile sshProfile)\n        {\n            Host = sshProfile.Host;\n            SshPort = sshProfile.SshPort;\n\n            Username = sshProfile.Username;\n\n            if (string.IsNullOrEmpty(Username))\n            {\n                _trayProcessCommunicationService.GetUserNameAsync().ContinueWith(t =>\n                {\n                    var username = t.Result;\n\n                    if (string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(username))\n                    {\n                        ApplicationView.ExecuteOnUiThreadAsync(() => Username = username);\n                    }\n                }, TaskContinuationOptions.OnlyOnRanToCompletion);\n            }\n\n            IdentityFile = sshProfile.IdentityFile;\n            UseMosh = sshProfile.UseMosh;\n            MoshPortFrom = sshProfile.MoshPortFrom;\n            MoshPortTo = sshProfile.MoshPortTo;\n        }\n\n        // Requires UI thread\n        private async Task BrowseForIdentityFileAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var file = await _fileSystemService.OpenFileAsync(new[] { \"*\" }).ConfigureAwait(true);\n            if (file != null)\n            {\n                IdentityFile = file.Path;\n            }\n        }\n\n        private string GetArgumentsString()\n        {\n            var sshArguments = GetSshArguments();\n\n            if (!_useMosh)\n            {\n                return string.IsNullOrWhiteSpace(sshArguments) ? $\"{_username}@{_host}\" : $\"{sshArguments} {_username}@{_host}\";\n            }\n\n            return string.IsNullOrEmpty(sshArguments)\n                ? $\"-p {_moshPortFrom}:{_moshPortTo} {_username}@{_host}\"\n                : $\"-p {_moshPortFrom}:{_moshPortTo} --ssh=\\\"ssh {sshArguments}\\\" {_username}@{_host}\";\n        }\n\n        private string GetSshArguments()\n        {\n            if (string.IsNullOrEmpty(_identityFile))\n            {\n                return _sshPort == SshProfile.DefaultSshPort ? null : $\"-p {_sshPort:#####}\";\n            }\n\n            return _sshPort == SshProfile.DefaultSshPort\n                ? $\"-i \\\"{_identityFile}\\\"\"\n                : $\"-p {_sshPort:#####} -i \\\"{_identityFile}\\\"\";\n        }\n\n        protected override void LoadFromProfile(ShellProfile profile)\n        {\n            base.LoadFromProfile(profile);\n\n            Initialize((SshProfile)profile);\n        }\n\n        protected override async Task CopyToProfileAsync(ShellProfile profile)\n        {\n            await base.CopyToProfileAsync(profile).ConfigureAwait(false);\n\n            var sshProfile = (SshProfile) profile;\n\n            sshProfile.Location = _useMosh ? Constants.MoshCommandName : Constants.SshCommandName;\n            sshProfile.Arguments = GetArgumentsString();\n\n            sshProfile.WorkingDirectory = null;\n\n            sshProfile.Host = _host;\n            sshProfile.SshPort = _sshPort;\n            sshProfile.Username = _username;\n            sshProfile.IdentityFile = _identityFile;\n            sshProfile.UseMosh = _useMosh;\n            sshProfile.MoshPortFrom = _moshPortFrom;\n            sshProfile.MoshPortTo = _moshPortTo;\n        }\n\n        public override async Task<string> ValidateAsync()\n        {\n            var error = await base.ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return error;\n            }\n\n            var result = await GetSshInfoValidationResultAsync().ConfigureAwait(false);\n\n            if (result == SshConnectionInfoValidationResult.Valid)\n            {\n                return null;\n            }\n\n            error = GetErrorString(result, Environment.NewLine);\n\n            if (string.IsNullOrEmpty(error))\n            {\n                error = \"Invalid input.\";\n            }\n\n            return error;\n        }\n\n        public override bool HasChanges()\n        {\n            var original = (SshProfile)Model;\n\n            return base.HasChanges() || !original.Host.NullableEqualTo(_host) || original.SshPort != _sshPort ||\n                   !original.Username.NullableEqualTo(_username) ||\n                   !original.IdentityFile.NullableEqualTo(_identityFile) || original.UseMosh != _useMosh ||\n                   original.MoshPortFrom != _moshPortFrom || original.MoshPortTo != _moshPortTo;\n        }\n\n        private async Task<SshConnectionInfoValidationResult> GetSshInfoValidationResultAsync()\n        {\n            var result = SshConnectionInfoValidationResult.Valid;\n\n            if (string.IsNullOrEmpty(_username))\n            {\n                result |= SshConnectionInfoValidationResult.UsernameEmpty;\n            }\n\n            if (string.IsNullOrEmpty(_host))\n            {\n                result |= SshConnectionInfoValidationResult.HostEmpty;\n            }\n\n            if (_sshPort < 1)\n            {\n                result |= SshConnectionInfoValidationResult.SshPortZeroOrNegative;\n            }\n\n            if (!await CheckIdentityFileExistsAsync().ConfigureAwait(false))\n            {\n                result |= SshConnectionInfoValidationResult.IdentityFileDoesNotExist;\n            }\n\n            if (!_useMosh)\n            {\n                return result;\n            }\n\n            if (_moshPortFrom < 1)\n            {\n                result |= SshConnectionInfoValidationResult.MoshPortZeroOrNegative;\n            }\n\n            if (_moshPortFrom > _moshPortTo)\n            {\n                result |= SshConnectionInfoValidationResult.MoshPortRangeInvalid;\n            }\n\n            return result;\n        }\n\n        // Requires UI thread\n        private async Task<bool> CheckIdentityFileExistsAsync()\n        {\n            var identityFile = _identityFile;\n\n            if (string.IsNullOrEmpty(identityFile) ||\n                identityFile.Equals(_validatedIdentityFile, StringComparison.OrdinalIgnoreCase))\n            {\n                return true;\n            }\n\n            // Here we need to take into account that files from ssh config dir can be provided by name, without full path.\n            string fullPath;\n\n            if (Path.IsPathRooted(identityFile))\n            {\n                fullPath = identityFile;\n            }\n            else\n            {\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n                var sshConfigDir = await _trayProcessCommunicationService.GetSshConfigDirAsync().ConfigureAwait(true);\n\n                if (string.IsNullOrEmpty(sshConfigDir))\n                {\n                    return false;\n                }\n\n                fullPath = Path.Combine(sshConfigDir, identityFile);\n            }\n\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            if (await _trayProcessCommunicationService.CheckFileExistsAsync(fullPath).ConfigureAwait(true))\n            {\n                _validatedIdentityFile = identityFile;\n\n                IdentityFile = fullPath;\n\n                return true;\n            }\n\n            return false;\n        }\n\n        public void SetValidatedIdentityFile(string identityFile)\n        {\n            _validatedIdentityFile = identityFile;\n            IdentityFile = identityFile;\n        }\n\n        #endregion Methods\n\n        #region Links/shortcuts related\n\n        // Resources:\n        // https://tools.ietf.org/html/draft-ietf-secsh-scp-sftp-ssh-uri-04#section-3\n        // https://man.openbsd.org/ssh\n\n        private const string SshUriScheme = \"ssh\";\n        private const string MoshUriScheme = \"mosh\";\n\n        // Constant derived from https://man.openbsd.org/ssh\n        private const string IdentityFileOptionName = \"IdentityFile\";\n\n        private static readonly string[] ValidMoshPortsNames = { \"mosh_ports\", \"mosh-ports\" };\n\n        private static readonly Regex MoshRangeRx =\n            new Regex(@\"^(?<from>\\d{1,5})[:-](?<to>\\d{1,5})$\", RegexOptions.Compiled);\n\n        public static bool CheckScheme(Uri uri) =>\n            SshUriScheme.Equals(uri?.Scheme, StringComparison.OrdinalIgnoreCase) ||\n            MoshUriScheme.Equals(uri?.Scheme, StringComparison.OrdinalIgnoreCase);\n\n        public static SshConnectViewModel ParseUri(Uri uri, ISettingsService settingsService,\n            IApplicationView applicationView, ITrayProcessCommunicationService trayProcessCommunicationService,\n            IFileSystemService fileSystemService, IApplicationDataContainer historyContainer)\n        {\n            var vm = new SshConnectViewModel(settingsService, applicationView, trayProcessCommunicationService,\n                fileSystemService)\n            {\n                Host = uri.Host,\n                UseMosh = MoshUriScheme.Equals(uri.Scheme, StringComparison.OrdinalIgnoreCase)\n            };\n\n            if (uri.Port >= 0)\n                vm.SshPort = (ushort)uri.Port;\n\n            if (!string.IsNullOrEmpty(uri.UserInfo))\n            {\n                string[] parts = uri.UserInfo.Split(';');\n\n                if (parts.Length > 2)\n                    throw new FormatException($\"UserInfo part contains {parts.Length} elements.\");\n\n                vm.Username = HttpUtility.UrlDecode(parts[0]);\n\n                if (parts.Length > 1)\n                {\n                    // For now we are only interested in IdentityFile option\n                    Tuple<string, string> identityFileOption = ParseParams(parts[1], ',').FirstOrDefault(p =>\n                        string.Equals(p.Item1, IdentityFileOptionName, StringComparison.OrdinalIgnoreCase));\n\n                    vm.IdentityFile = identityFileOption?.Item2;\n                }\n            }\n\n            // ReSharper disable once ConstantConditionalAccessQualifier\n            string queryString = uri.Query?.Trim();\n\n            if (string.IsNullOrEmpty(queryString))\n            {\n                return vm;\n            }\n\n            if (queryString.StartsWith(\"?\", StringComparison.Ordinal))\n            {\n                queryString = queryString.Substring(1);\n            }\n\n            var queryStringParams = ParseParams(queryString, '&').ToList();\n\n            var moshPorts = queryStringParams.FirstOrDefault(p =>\n                ValidMoshPortsNames.Any(n => string.Equals(p.Item1, n, StringComparison.OrdinalIgnoreCase)));\n\n            if (moshPorts != null)\n            {\n                Match match = MoshRangeRx.Match(moshPorts.Item2);\n\n                if (match.Success)\n                {\n                    vm.MoshPortFrom = ushort.Parse(match.Groups[\"from\"].Value);\n                    vm.MoshPortTo = ushort.Parse(match.Groups[\"to\"].Value);\n                }\n            }\n\n            vm.LoadBaseFromQueryString(queryStringParams);\n\n            return vm;\n        }\n\n        public override async Task<Tuple<bool, string>> GetUrlAsync()\n        {\n            var error = await base.ValidateAsync().ConfigureAwait(false);\n\n            if (!string.IsNullOrEmpty(error))\n            {\n                return Tuple.Create(false, error);\n            }\n\n            var result = await GetSshInfoValidationResultAsync().ConfigureAwait(false);\n\n            if (result != SshConnectionInfoValidationResult.Valid &&\n                // For links we can ignore missing username\n                result != SshConnectionInfoValidationResult.UsernameEmpty)\n            {\n\n                error = GetErrorString(result, Environment.NewLine);\n\n                if (string.IsNullOrEmpty(error))\n                {\n                    error = \"Invalid input.\";\n                }\n\n                return Tuple.Create(false, error);\n            }\n\n            var sb = new StringBuilder(_useMosh ? MoshUriScheme : SshUriScheme);\n\n            sb.Append(\"://\");\n\n            bool containsUserInfo = false;\n\n            if (!string.IsNullOrEmpty(_username))\n            {\n                sb.Append(HttpUtility.UrlEncode(_username));\n\n                containsUserInfo = true;\n            }\n\n            if (!string.IsNullOrEmpty(_identityFile))\n            {\n                sb.Append(\";\");\n\n                if (!string.IsNullOrEmpty(_identityFile))\n                {\n                    sb.Append($\"{IdentityFileOptionName}={HttpUtility.UrlEncode(_identityFile)}\");\n                }\n\n                containsUserInfo = true;\n            }\n\n            if (containsUserInfo)\n                sb.Append(\"@\");\n\n            sb.Append(_host);\n\n            if (_sshPort != SshProfile.DefaultSshPort)\n            {\n                sb.Append($\":{_sshPort:#####}\");\n            }\n\n            sb.Append(\"/\");\n\n            bool queryStringAdded = false;\n\n            if (_useMosh)\n            {\n                sb.Append(\n                    $\"?{ValidMoshPortsNames[0]}={_moshPortFrom:#####}-{_moshPortTo:#####}\");\n\n                queryStringAdded = true;\n            }\n\n            var terminalInfoQueryString = GetBaseQueryString();\n\n            if (!string.IsNullOrEmpty(terminalInfoQueryString))\n            {\n                sb.Append($\"{(queryStringAdded ? \"&\" : \"?\")}{terminalInfoQueryString}\");\n            }\n\n            return Tuple.Create(true, sb.ToString());\n        }\n\n        #endregion Links/shortcuts related\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Profiles/SshConnectionInfoValidationResult.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n    [Flags]\n    public enum SshConnectionInfoValidationResult\n    {\n        Valid = 0, \n        UsernameEmpty = 1,\n        HostEmpty = 2,\n        SshPortZeroOrNegative = 4,\n        MoshPortZeroOrNegative = 8,\n        MoshPortRangeInvalid = 16, \n        IdentityFileDoesNotExist = 32\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/AboutPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class AboutPageViewModel : ObservableObject\n    {\n        private const string BaseUrl = \"https://github.com/felixse/FluentTerminal/releases/tag/\";\n        private readonly IUpdateService _updateService;\n        private string _latestVersion;\n        private readonly IApplicationView _applicationView;\n\n        public AboutPageViewModel(IUpdateService updateService, IApplicationView applicationView)\n        {\n            _updateService = updateService;\n            _applicationView = applicationView;\n\n            CheckForUpdatesCommand = new AsyncRelayCommand(() => CheckForUpdateAsync(true));\n        }\n\n        public ICommand CheckForUpdatesCommand { get; }\n\n        public string CurrentVersion\n        {\n            get\n            {\n                var version = _updateService.GetCurrentVersion();\n                return $\"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}\";\n            }\n        }\n\n        public string CurrentVersionReleaseNotesURL => BaseUrl + CurrentVersion;\n\n        public string LatestVersion\n        {\n            get => _latestVersion;\n            set\n            {\n                if (SetProperty(ref _latestVersion, value))\n                {\n                    OnPropertyChanged(nameof(LatestVersionFound));\n                    OnPropertyChanged(nameof(LatestVersionLoading));\n                    OnPropertyChanged(nameof(LatestVersionNotFound));\n                    OnPropertyChanged(nameof(LatestVersionReleaseNotesURL));\n                }\n            }\n        }\n\n        public bool LatestVersionFound => !LatestVersionNotFound && !LatestVersionLoading;\n\n        public bool LatestVersionLoading => LatestVersion == null;\n\n        public bool LatestVersionNotFound => LatestVersion == \"0.0.0.0\";\n\n        public string LatestVersionReleaseNotesURL => BaseUrl + LatestVersion;\n\n        public Task OnNavigatedTo()\n        {\n            return CheckForUpdateAsync(false);\n        }\n\n        private async Task CheckForUpdateAsync(bool notifyNoUpdate)\n        {\n            var version = await _updateService.GetLatestVersionAsync().ConfigureAwait(false);\n            await _applicationView.ExecuteOnUiThreadAsync(() =>\n                    LatestVersion = $\"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}\")\n                .ConfigureAwait(false);\n            await _updateService.CheckForUpdateAsync(notifyNoUpdate).ConfigureAwait(false);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/GeneralPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class GeneralPageViewModel : ObservableObject\n    {\n        private readonly ApplicationSettings _applicationSettings;\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private readonly IStartupTaskService _startupTaskService;\n        private bool _canEnableStartupTask;\n        private bool _startupTaskEnabled;\n        private bool _shouldRestartForTrayMessage;\n        private string _startupTaskErrorMessage;\n        private bool _needsToRestart;\n        private readonly IApplicationLanguageService _applicationLanguageService;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n        private readonly IFileSystemService _fileSystemService;\n\n        public GeneralPageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider,\n            IStartupTaskService startupTaskService, IApplicationLanguageService applicationLanguageService,\n            ITrayProcessCommunicationService trayProcessCommunicationService, IFileSystemService fileSystemService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _startupTaskService = startupTaskService;\n            _applicationLanguageService = applicationLanguageService;\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            _fileSystemService = fileSystemService;\n\n            _applicationSettings = _settingsService.GetApplicationSettings();\n\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n            BrowseLogDirectoryCommand = new AsyncRelayCommand(BrowseLogDirectoryAsync);\n        }\n\n        public IEnumerable<string> Languages => _applicationLanguageService.Languages;\n\n        public bool NeedsToRestart\n        {\n            get => _needsToRestart;\n            set => SetProperty(ref _needsToRestart, value);\n        }\n\n        public string SelectedLanguage\n        {\n            get => _applicationLanguageService.GetCurrentLanguage();\n            set\n            {\n                _applicationLanguageService.SetLanguage(value);\n                NeedsToRestart = true;\n            }\n        }\n\n        // Requires UI thread\n        public async Task OnNavigatedToAsync()\n        {\n            // ConfigureAwait(true) because we want to execute SetStartupTaskPropertiesForStatus from the calling (UI) thread.\n            var startupTaskStatus = await _startupTaskService.GetStatusAsync().ConfigureAwait(true);\n            SetStartupTaskPropertiesForStatus(startupTaskStatus);\n        }\n\n        public bool ShowCustomTitleInTitlebar\n        {\n            get => _applicationSettings.ShowCustomTitleInTitlebar;\n            set\n            {\n                if (_applicationSettings.ShowCustomTitleInTitlebar != value)\n                {\n                    _applicationSettings.ShowCustomTitleInTitlebar = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool EnableTrayIcon\n        {\n            get => _applicationSettings.EnableTrayIcon;\n            set\n            {\n                if (_applicationSettings.EnableTrayIcon != value)\n                {\n                    _applicationSettings.EnableTrayIcon = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n\n                    // Toggle message telling user to restart the program\n                    ShouldRestartForTrayMessage = !ShouldRestartForTrayMessage;\n                }\n            }\n        }\n\n        public bool ShouldRestartForTrayMessage\n        {\n            get => _shouldRestartForTrayMessage;\n            set => SetProperty(ref _shouldRestartForTrayMessage, value);\n        }\n\n        public bool ShowNewOutputIndicator\n        {\n            get => _applicationSettings.ShowNewOutputIndicator;\n            set\n            {\n                if (_applicationSettings.ShowNewOutputIndicator != value)\n                {\n                    _applicationSettings.ShowNewOutputIndicator = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool UseMoshByDefault\n        {\n            get => _applicationSettings.UseMoshByDefault;\n            set\n            {\n                if (_applicationSettings.UseMoshByDefault != value)\n                {\n                    _applicationSettings.UseMoshByDefault = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool AutoFallbackToWindowsUsernameInLinks\n        {\n            get => _applicationSettings.AutoFallbackToWindowsUsernameInLinks;\n            set\n            {\n                if (_applicationSettings.AutoFallbackToWindowsUsernameInLinks != value)\n                {\n                    _applicationSettings.AutoFallbackToWindowsUsernameInLinks = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool RTrimCopiedLines\n        {\n            get => _applicationSettings.RTrimCopiedLines;\n            set\n            {\n                if (_applicationSettings.RTrimCopiedLines != value)\n                {\n                    _applicationSettings.RTrimCopiedLines = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool MuteTerminalBeeps\n        {\n            get => _applicationSettings.MuteTerminalBeeps;\n            set\n            {\n                if (_applicationSettings.MuteTerminalBeeps != value)\n                {\n                    _applicationSettings.MuteTerminalBeeps = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n\n                    _trayProcessCommunicationService.MuteTerminalAsync(value);\n                }\n            }\n        }\n        public bool EnableLogging\n        {\n            get => _applicationSettings.EnableLogging;\n            set\n            {\n                if (_applicationSettings.EnableLogging != value)\n                {\n                    _applicationSettings.EnableLogging = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool PrintableOutputOnly\n        {\n            get => _applicationSettings.PrintableOutputOnly;\n            set\n            {\n                if (_applicationSettings.PrintableOutputOnly != value)\n                {\n                    _applicationSettings.PrintableOutputOnly = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string LogDirectoryPath\n        {\n            get => _applicationSettings.LogDirectoryPath;\n            set\n            {\n                if (_applicationSettings.LogDirectoryPath != value)\n                {\n                    _applicationSettings.LogDirectoryPath = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool UseConPty\n        {\n            get => _applicationSettings.UseConPty;\n            set\n            {\n                if (_applicationSettings.UseConPty != value)\n                {\n                    _applicationSettings.UseConPty = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool BottomIsSelected\n        {\n            get => TabsPosition == TabsPosition.Bottom;\n            set { if (value) TabsPosition = TabsPosition.Bottom; }\n        }\n\n        public bool CanEnableStartupTask\n        {\n            get => _canEnableStartupTask;\n            set => SetProperty(ref _canEnableStartupTask, value);\n        }\n\n        public bool ConfirmClosingTabs\n        {\n            get => _applicationSettings.ConfirmClosingTabs;\n            set\n            {\n                if (_applicationSettings.ConfirmClosingTabs != value)\n                {\n                    _applicationSettings.ConfirmClosingTabs = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool ConfirmClosingWindows\n        {\n            get => _applicationSettings.ConfirmClosingWindows;\n            set\n            {\n                if (_applicationSettings.ConfirmClosingWindows != value)\n                {\n                    _applicationSettings.ConfirmClosingWindows = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public NewTerminalLocation NewTerminalLocation\n        {\n            get => _applicationSettings.NewTerminalLocation;\n            set\n            {\n                if (_applicationSettings.NewTerminalLocation != value)\n                {\n                    _applicationSettings.NewTerminalLocation = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                    OnPropertyChanged(nameof(TabIsSelected));\n                }\n            }\n        }\n\n        public bool TabWindowCascadingAppMenu\n        {\n            get => _applicationSettings.TabWindowCascadingAppMenu;\n            set\n            {\n                if (_applicationSettings.TabWindowCascadingAppMenu != value)\n                {\n                    _applicationSettings.TabWindowCascadingAppMenu = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        public ICommand BrowseLogDirectoryCommand { get; }\n\n        public bool StartupTaskEnabled\n        {\n            get => _startupTaskEnabled;\n            set\n            {\n                if (SetProperty(ref _startupTaskEnabled, value))\n                {\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = SetStartupTaskStateAsync(value);\n                }\n            }\n        }\n\n        public string StartupTaskErrorMessage\n        {\n            get => _startupTaskErrorMessage;\n            set => SetProperty(ref _startupTaskErrorMessage, value);\n        }\n\n        public bool TabIsSelected\n        {\n            get => NewTerminalLocation == NewTerminalLocation.Tab;\n            set => NewTerminalLocation = value ? NewTerminalLocation.Tab : NewTerminalLocation.Window;\n        }\n\n        public TabsPosition TabsPosition\n        {\n            get => _applicationSettings.TabsPosition;\n            set\n            {\n                if (_applicationSettings.TabsPosition != value)\n                {\n                    _applicationSettings.TabsPosition = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool TopIsSelected\n        {\n            get => TabsPosition == TabsPosition.Top;\n            set { if (value) TabsPosition = TabsPosition.Top; }\n        }\n\n        public bool UnderlineSelectedTab\n        {\n            get => _applicationSettings.UnderlineSelectedTab;\n            set\n            {\n                if (_applicationSettings.UnderlineSelectedTab != value)\n                {\n                    _applicationSettings.UnderlineSelectedTab = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool BackgroundIsSelected\n        {\n            get => InactiveTabColorMode == InactiveTabColorMode.Background;\n            set { if (value) InactiveTabColorMode = InactiveTabColorMode.Background; }\n        }\n\n        public bool UnderlinedIsSelected\n        {\n            get => InactiveTabColorMode == InactiveTabColorMode.Underlined;\n            set { if (value) InactiveTabColorMode = InactiveTabColorMode.Underlined; }\n        }\n\n        public InactiveTabColorMode InactiveTabColorMode\n        {\n            get => _applicationSettings.InactiveTabColorMode;\n            set\n            {\n                if (_applicationSettings.InactiveTabColorMode != value)\n                {\n                    _applicationSettings.InactiveTabColorMode = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool ShowTextCopied\n        {\n            get => _applicationSettings.ShowTextCopied;\n            set\n            {\n                if (_applicationSettings.ShowTextCopied != value)\n                {\n                    _applicationSettings.ShowTextCopied = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmRestoreGeneralSettings\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var defaults = _defaultValueProvider.GetDefaultApplicationSettings();\n                ConfirmClosingWindows = defaults.ConfirmClosingWindows;\n                ConfirmClosingTabs = defaults.ConfirmClosingTabs;\n                UnderlineSelectedTab = defaults.UnderlineSelectedTab;\n                InactiveTabColorMode = defaults.InactiveTabColorMode;\n                NewTerminalLocation = defaults.NewTerminalLocation;\n                ShowNewOutputIndicator = defaults.ShowNewOutputIndicator;\n                EnableTrayIcon = defaults.EnableTrayIcon;\n                ShowCustomTitleInTitlebar = defaults.ShowCustomTitleInTitlebar;\n                UseMoshByDefault = defaults.UseMoshByDefault;\n                AutoFallbackToWindowsUsernameInLinks = defaults.AutoFallbackToWindowsUsernameInLinks;\n                RTrimCopiedLines = defaults.RTrimCopiedLines;\n                MuteTerminalBeeps = defaults.MuteTerminalBeeps;\n                EnableLogging = defaults.EnableLogging;\n                PrintableOutputOnly = defaults.PrintableOutputOnly;\n                LogDirectoryPath = defaults.LogDirectoryPath;\n                UseConPty = defaults.UseConPty;\n                ShowTextCopied = defaults.ShowTextCopied;\n            }\n        }\n\n        // Requires UI thread\n        private void SetStartupTaskPropertiesForStatus(StartupTaskStatus startupTaskStatus)\n        {\n            switch (startupTaskStatus)\n            {\n                case StartupTaskStatus.Enabled:\n                    StartupTaskEnabled = true;\n                    StartupTaskErrorMessage = string.Empty;\n                    CanEnableStartupTask = true;\n                    break;\n\n                case StartupTaskStatus.Disabled:\n                    StartupTaskEnabled = false;\n                    StartupTaskErrorMessage = string.Empty;\n                    CanEnableStartupTask = true;\n                    break;\n\n                case StartupTaskStatus.DisabledByUser:\n                    StartupTaskEnabled = false;\n                    StartupTaskErrorMessage = I18N.Translate(\"DisabledByUser\");\n                    CanEnableStartupTask = false;\n                    break;\n\n                case StartupTaskStatus.DisabledByPolicy:\n                    StartupTaskEnabled = false;\n                    StartupTaskErrorMessage = I18N.Translate(\"DisabledByPolicy\");\n                    CanEnableStartupTask = false;\n                    break;\n\n                case StartupTaskStatus.EnabledByPolicy:\n                    StartupTaskEnabled = true;\n                    StartupTaskErrorMessage = I18N.TranslateWithFallback(\"EnabledByPolicy\", \"Enabled by policy.\");\n                    CanEnableStartupTask = false;\n                    break;\n            }\n        }\n\n        // Requires UI thread\n        private async Task SetStartupTaskStateAsync(bool enabled)\n        {\n            StartupTaskStatus status;\n            if (enabled)\n            {\n                // ConfigureAwait(true) because we need to execute SetStartupTaskPropertiesForStatus in the calling (UI) thread.\n                status = await _startupTaskService.EnableStartupTaskAsync().ConfigureAwait(true);\n            }\n            else\n            {\n                // ConfigureAwait(true) because we need to execute SetStartupTaskPropertiesForStatus in the calling (UI) thread.\n                await _startupTaskService.DisableStartupTaskAsync().ConfigureAwait(true);\n                // ConfigureAwait(true) because we need to execute SetStartupTaskPropertiesForStatus in the calling (UI) thread.\n                status = await _startupTaskService.GetStatusAsync().ConfigureAwait(true);\n            }\n            SetStartupTaskPropertiesForStatus(status);\n        }\n\n        // Requires UI thread\n        private async Task BrowseLogDirectoryAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var folder = await _fileSystemService.BrowseForDirectoryAsync().ConfigureAwait(true);\n\n            if (folder != null)\n            {\n                LogDirectoryPath = folder;\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/KeyBindingViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class KeyBindingViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n\n        public KeyBindingViewModel(KeyBinding keyBinding, IDialogService dialogService, KeyBindingsViewModel parent)\n        {\n            Model = keyBinding;\n            Parent = parent;\n            _dialogService = dialogService;\n            EditCommand = new AsyncRelayCommand(EditAsync);\n            DeleteCommand = new AsyncRelayCommand(DeleteAsync);\n        }\n\n        // Needs to be triggered from the UI thread\n        public event EventHandler Deleted;\n\n        public event EventHandler Edited;\n\n        public KeyBindingsViewModel Parent { get; }\n\n        public bool Meta\n        {\n            get => Model.Meta;\n            set\n            {\n                if (Model.Meta != value)\n                {\n                    Model.Meta = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool Alt\n        {\n            get => Model.Alt;\n            set\n            {\n                if (Model.Alt != value)\n                {\n                    Model.Alt = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool Ctrl\n        {\n            get => Model.Ctrl;\n            set\n            {\n                if (Model.Ctrl != value)\n                {\n                    Model.Ctrl = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public ICommand DeleteCommand { get; }\n        public ICommand EditCommand { get; }\n\n        public int Key\n        {\n            get => Model.Key;\n            set\n            {\n                if (Model.Key != value)\n                {\n                    Model.Key = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public KeyBinding Model { get; }\n\n        public bool Shift\n        {\n            get => Model.Shift;\n            set\n            {\n                if (Model.Shift != value)\n                {\n                    Model.Shift = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        // Requires UI thread\n        public async Task<bool> EditAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var keyBinding = await _dialogService.ShowCreateKeyBindingDialog().ConfigureAwait(true);\n\n            if (keyBinding != null)\n            {\n                Alt = keyBinding.Alt;\n                Ctrl = keyBinding.Ctrl;\n                Shift = keyBinding.Shift;\n                Meta = keyBinding.Meta;\n                Key = keyBinding.Key;\n\n                Edited?.Invoke(this, EventArgs.Empty);\n\n                return true;\n            }\n\n            return false;\n        }\n\n        // Requires UI thread\n        private async Task DeleteAsync()\n        {\n            // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmDeleteKeybindings\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                Deleted?.Invoke(this, EventArgs.Empty);\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/KeyBindingsPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class KeyBindingsPageViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\n\n        public KeyBindingsPageViewModel(ISettingsService settingsService, IDialogService dialogService, ITrayProcessCommunicationService trayProcessCommunicationService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _trayProcessCommunicationService = trayProcessCommunicationService;\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n            AddCommand = new AsyncRelayCommand<string>(AddAsync);\n\n            Initialize(_settingsService.GetCommandKeyBindings());\n        }\n\n        public ICommand AddCommand { get; }\n        public ObservableCollection<KeyBindingsViewModel> KeyBindings { get; } = new ObservableCollection<KeyBindingsViewModel>();\n        public ICommand RestoreDefaultsCommand { get; }\n\n        private Task AddAsync(string command)\n        {\n            return KeyBindings.First(k => k.Command == command).ShowAddKeyBindingDialogAsync();\n        }\n\n        // Requires UI thread\n        private void ClearKeyBindings()\n        {\n            foreach (var keyBinding in KeyBindings)\n            {\n                keyBinding.Edited -= OnEdited;\n            }\n\n            KeyBindings.Clear();\n        }\n\n        // Requires UI thread\n        private void Initialize(IDictionary<string, ICollection<KeyBinding>> keyBindings)\n        {\n            ClearKeyBindings();\n\n            foreach (var value in Enum.GetValues(typeof(Command)))\n            {\n                var command = (Command)value;\n                var viewModel = new KeyBindingsViewModel(command.ToString(), _dialogService, I18N.Translate($\"{nameof(Command)}.{command}\"), true);\n                foreach (var keyBinding in keyBindings[command.ToString()])\n                {\n                    viewModel.Add(keyBinding);\n                }\n                viewModel.Edited += OnEdited;\n                KeyBindings.Add(viewModel);\n            }\n        }\n\n        private void OnEdited(string command, ICollection<KeyBinding> keyBindings)\n        {\n            _settingsService.SaveKeyBindings(command, keyBindings);\n            _trayProcessCommunicationService.UpdateToggleWindowKeyBindingsAsync();\n        }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we need to execute Initialize in the calling (UI) thread.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmRestoreKeybindings\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                _settingsService.ResetKeyBindings();\n                Initialize(_settingsService.GetCommandKeyBindings());\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/KeyBindingsViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class KeyBindingsViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n        private bool _editable;\n\n        public KeyBindingsViewModel(string command, IDialogService dialogService, string commandName, bool editable)\n        {\n            _dialogService = dialogService;\n\n            Command = command;\n            CommandName = commandName;\n            Editable = editable;\n        }\n\n        public delegate void EditedEvent(string command, ICollection<KeyBinding> keyBindings);\n\n        public event EditedEvent Edited;\n\n        public string Command { get; }\n\n        public string CommandName { get; }\n\n        /// <summary>\n        ///  Whether or not the \"Edit\" and \"Delete\" links appear next to the key binding list.\n        /// </summary>\n        public bool Editable\n        {\n            get => _editable;\n            set => SetProperty(ref _editable, value);\n        }\n\n        public ObservableCollection<KeyBindingViewModel> KeyBindings { get; } = new ObservableCollection<KeyBindingViewModel>();\n\n        // Requires UI thread\n        public async Task ShowAddKeyBindingDialogAsync()\n        {\n            var newKeyBinding = new KeyBindingViewModel(new KeyBinding { Command = Command }, _dialogService, this);\n\n            // ConfigureAwait(true) because we need to execute Add method in the calling (UI) thread.\n            if (await newKeyBinding.EditAsync().ConfigureAwait(true))\n            {\n                Add(newKeyBinding.Model);\n            }\n        }\n\n        // Requires UI thread\n        public void Clear()\n        {\n            KeyBindings.Clear();\n        }\n\n        // Requires UI thread\n        public void Add(KeyBinding keyBinding)\n        {\n            var viewModel = new KeyBindingViewModel(keyBinding, _dialogService, this);\n\n            viewModel.Deleted += ViewModel_Deleted;\n            viewModel.Edited += ViewModel_Edited;\n            KeyBindings.Add(viewModel);\n            Edited?.Invoke(Command, KeyBindings.Select(x => x.Model).ToList());\n        }\n\n        private void ViewModel_Deleted(object sender, EventArgs e)\n        {\n            if (sender is KeyBindingViewModel keyBinding)\n            {\n                KeyBindings.Remove(keyBinding);\n                Edited?.Invoke(Command, KeyBindings.Select(x => x.Model).ToList());\n            }\n        }\n\n        private void ViewModel_Edited(object sender, EventArgs e)\n        {\n            Edited?.Invoke(Command, KeyBindings.Select(x => x.Model).ToList());\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/MousePageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class MousePageViewModel : ObservableObject\n    {\n        private readonly ISettingsService _settingsService;\n        private readonly IDialogService _dialogService;\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly ApplicationSettings _applicationSettings;\n\n        public MousePageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _applicationSettings = _settingsService.GetApplicationSettings();\n\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n        }\n\n        public bool CopyOnSelect\n        {\n            get => _applicationSettings.CopyOnSelect;\n            set\n            {\n                if (_applicationSettings.CopyOnSelect != value)\n                {\n                    _applicationSettings.CopyOnSelect = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public MouseAction MouseRightClickAction\n        {\n            get => _applicationSettings.MouseRightClickAction;\n            set\n            {\n                if (_applicationSettings.MouseRightClickAction != value)\n                {\n                    _applicationSettings.MouseRightClickAction = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool MouseRightClickNoneIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.None;\n            set { if (value) MouseRightClickAction = MouseAction.None; }\n        }\n\n        public bool MouseRightClickContextMenuIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.ContextMenu;\n            set { if (value) MouseRightClickAction = MouseAction.ContextMenu; }\n        }\n\n        public bool MouseRightClickPasteIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.Paste;\n            set { if (value) MouseRightClickAction = MouseAction.Paste; }\n        }\n\n        public bool MouseRightClickCopySelectionOrPasteIsSelected\n        {\n            get => MouseRightClickAction == MouseAction.CopySelectionOrPaste;\n            set { if (value) MouseRightClickAction = MouseAction.CopySelectionOrPaste; }\n        }\n\n        public MouseAction MouseMiddleClickAction\n        {\n            get => _applicationSettings.MouseMiddleClickAction;\n            set\n            {\n                if (_applicationSettings.MouseMiddleClickAction != value)\n                {\n                    _applicationSettings.MouseMiddleClickAction = value;\n                    _settingsService.SaveApplicationSettings(_applicationSettings);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool MouseMiddleClickNoneIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.None;\n            set { if (value) MouseMiddleClickAction = MouseAction.None; }\n        }\n\n        public bool MouseMiddleClickContextMenuIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.ContextMenu;\n            set { if (value) MouseMiddleClickAction = MouseAction.ContextMenu; }\n        }\n\n        public bool MouseMiddleClickPasteIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.Paste;\n            set { if (value) MouseMiddleClickAction = MouseAction.Paste; }\n        }\n\n        public bool MouseMiddleClickCopySelectionOrPasteIsSelected\n        {\n            get => MouseMiddleClickAction == MouseAction.CopySelectionOrPaste;\n            set { if (value) MouseMiddleClickAction = MouseAction.CopySelectionOrPaste; }\n        }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmRestoreMouseSettings\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var defaults = _defaultValueProvider.GetDefaultApplicationSettings();\n                CopyOnSelect = defaults.CopyOnSelect;\n                MouseMiddleClickAction = defaults.MouseMiddleClickAction;\n                MouseRightClickAction = defaults.MouseRightClickAction;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/ProfilesPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class ProfilesPageViewModel : ObservableObject\n    {\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private readonly IFileSystemService _fileSystemService;\n        private ShellProfileViewModel _selectedShellProfile;\n        private readonly IApplicationView _applicationView;\n\n        public ProfilesPageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider, IFileSystemService fileSystemService, IApplicationView applicationView)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _fileSystemService = fileSystemService;\n            _applicationView = applicationView;\n\n            CreateShellProfileCommand = new RelayCommand(CreateShellProfile);\n            CloneCommand = new RelayCommand<ShellProfileViewModel>(Clone);\n\n            var defaultShellProfileId = _settingsService.GetDefaultShellProfileId();\n            foreach (var shellProfile in _settingsService.GetShellProfiles())\n            {\n                var viewModel = new ShellProfileViewModel(shellProfile, settingsService, dialogService, fileSystemService, applicationView, defaultValueProvider, false);\n                viewModel.Deleted += OnShellProfileDeleted;\n                viewModel.SetAsDefault += OnShellProfileSetAsDefault;\n\n                if (shellProfile.Id == defaultShellProfileId)\n                {\n                    viewModel.IsDefault = true;\n                }\n                ShellProfiles.Add(viewModel);\n            }\n\n            SelectedShellProfile = ShellProfiles.First(p => p.IsDefault);\n            \n        }\n\n        private void OnShellProfileSetAsDefault(object sender, EventArgs e)\n        {\n            if (sender is ShellProfileViewModel defaultShellProfile)\n            {\n                _settingsService.SaveDefaultShellProfileId(defaultShellProfile.Id);\n\n                foreach (var shellProfile in ShellProfiles)\n                {\n                    shellProfile.IsDefault = shellProfile.Id == defaultShellProfile.Id;\n                }\n            }\n        }\n\n        private void OnShellProfileDeleted(object sender, EventArgs e)\n        {\n            if (sender is ShellProfileViewModel shellProfile)\n            {\n                if (SelectedShellProfile == shellProfile)\n                {\n                    SelectedShellProfile = ShellProfiles.First();\n                }\n                ShellProfiles.Remove(shellProfile);\n\n                if (shellProfile.IsDefault)\n                {\n                    ShellProfiles.First().IsDefault = true;\n                    _settingsService.SaveDefaultShellProfileId(ShellProfiles.First().Id);\n                }\n                _settingsService.DeleteShellProfile(shellProfile.Id);\n            }\n        }\n\n        public ICommand CreateShellProfileCommand { get; }\n\n        public ICommand CloneCommand { get; }\n\n        private void CreateShellProfile()\n        {\n            var shellProfile = new ShellProfile\n            {\n                Id = Guid.NewGuid(),\n                PreInstalled = false,\n                Name = \"New profile\",\n                KeyBindings = new List<KeyBinding>(),\n                UseConPty = _settingsService.GetApplicationSettings().UseConPty\n            };\n\n            AddShellProfile(shellProfile);\n        }\n\n        private void Clone(ShellProfileViewModel shellProfile)\n        {\n            var cloned = shellProfile.ProfileVm.Model.Clone();\n\n            cloned.Id = Guid.NewGuid();\n            cloned.PreInstalled = false;\n            cloned.Name = $\"Copy of {shellProfile.Name}\";\n            cloned.KeyBindings = new List<KeyBinding>();\n\n            AddShellProfile(cloned);\n        }\n\n        private void AddShellProfile(ShellProfile shellProfile)\n        {\n            var viewModel = new ShellProfileViewModel(shellProfile, _settingsService, _dialogService, _fileSystemService, _applicationView, _defaultValueProvider, true);\n            viewModel.EditCommand.Execute(null);\n            viewModel.SetAsDefault += OnShellProfileSetAsDefault;\n            viewModel.Deleted += OnShellProfileDeleted;\n            ShellProfiles.Add(viewModel);\n            SelectedShellProfile = viewModel;\n        }\n\n        public ShellProfileViewModel SelectedShellProfile\n        {\n            get => _selectedShellProfile;\n            set => SetProperty(ref _selectedShellProfile, value);\n        }\n\n        public ObservableCollection<ShellProfileViewModel> ShellProfiles { get; } = new ObservableCollection<ShellProfileViewModel>();\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/SshProfilesPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\r\nusing FluentTerminal.Models;\r\nusing System;\r\nusing System.Collections.ObjectModel;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\r\nusing Microsoft.Toolkit.Mvvm.Input;\r\nusing System.Windows.Input;\r\n\r\nnamespace FluentTerminal.App.ViewModels.Settings\r\n{\r\n    public class SshProfilesPageViewModel: ObservableObject\r\n    {\r\n        private readonly IDialogService _dialogService;\r\n        private readonly ISettingsService _settingsService;\r\n        private readonly IFileSystemService _fileSystemService;\r\n        private SshProfileViewModel _selectedShellProfile;\r\n        private readonly IApplicationView _applicationView;\r\n        private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;\r\n        private readonly IApplicationDataContainer _historyContainer;\r\n\r\n        public SshProfilesPageViewModel(ISettingsService settingsService, IDialogService dialogService,\r\n            IFileSystemService fileSystemService, IApplicationView applicationView,\r\n            ITrayProcessCommunicationService trayProcessCommunicationService,\r\n            IApplicationDataContainer historyContainer)\r\n        {\r\n            _settingsService = settingsService;\r\n            _dialogService = dialogService;\r\n            _fileSystemService = fileSystemService;\r\n            _applicationView = applicationView;\r\n            _trayProcessCommunicationService = trayProcessCommunicationService;\r\n            _historyContainer = historyContainer;\r\n\r\n            CreateSshProfileCommand = new RelayCommand(CreateSshProfile);\r\n            CloneCommand = new RelayCommand<SshProfileViewModel>(Clone);\r\n\r\n            foreach (var sshProfile in _settingsService.GetSshProfiles())\r\n            {\r\n                var viewModel = new SshProfileViewModel(sshProfile, settingsService, dialogService, fileSystemService,\r\n                    applicationView, _trayProcessCommunicationService, historyContainer, false);\r\n                viewModel.Deleted += OnSshProfileDeleted;\r\n                SshProfiles.Add(viewModel);\r\n            }\r\n\r\n            if (SshProfiles.Count == 0)\r\n            {\r\n                CreateSshProfile();\r\n            }\r\n\r\n            SelectedSshProfile = SshProfiles.First();\r\n        }\r\n\r\n        private void OnSshProfileDeleted(object sender, EventArgs e)\r\n        {\r\n            if (sender is SshProfileViewModel sshProfile)\r\n            {\r\n                if (SelectedSshProfile == sshProfile)\r\n                {\r\n                    SelectedSshProfile = SshProfiles.First();\r\n                }\r\n                SshProfiles.Remove(sshProfile);\r\n                _settingsService.DeleteSshProfile(sshProfile.Id);\r\n            }\r\n        }\r\n\r\n        public ICommand CreateSshProfileCommand { get; }\r\n\r\n        public ICommand CloneCommand { get; }\r\n\r\n        public void CreateSshProfile()\r\n        {\r\n            var shellProfile = new SshProfile\r\n            {\r\n                Id = Guid.NewGuid(),\r\n                PreInstalled = false,\r\n                Name = \"New SSH profile\",\r\n                KeyBindings = new List<KeyBinding>(),\r\n                UseMosh = _settingsService.GetApplicationSettings().UseMoshByDefault,\r\n                RequestConPty = _settingsService.GetApplicationSettings().UseConPty\r\n            };\r\n\r\n            AddSshProfile(shellProfile);\r\n        }\r\n\r\n        private void Clone(SshProfileViewModel shellProfile)\r\n        {\r\n            var cloned = (SshProfile) shellProfile.ProfileVm.Model.Clone();\r\n\r\n            cloned.Id = Guid.NewGuid();\r\n            cloned.PreInstalled = false;\r\n            cloned.Name = $\"Copy of {shellProfile.Name}\";\r\n            cloned.KeyBindings = new List<KeyBinding>();\r\n\r\n            foreach (KeyBinding keyBinding in cloned.KeyBindings)\r\n            {\r\n                keyBinding.Command = cloned.Id.ToString();\r\n            }\r\n            AddSshProfile(cloned);\r\n        }\r\n\r\n        private void AddSshProfile(SshProfile sshProfile)\r\n        {\r\n            var viewModel = new SshProfileViewModel(sshProfile, _settingsService, _dialogService, _fileSystemService,\r\n                _applicationView, _trayProcessCommunicationService, _historyContainer, true);\r\n\r\n            viewModel.EditCommand.Execute(null);\r\n            viewModel.Deleted += OnSshProfileDeleted;\r\n            SshProfiles.Add(viewModel);\r\n            SelectedSshProfile = viewModel;\r\n        }\r\n\r\n        public SshProfileViewModel SelectedSshProfile\r\n        {\r\n            get => _selectedShellProfile;\r\n            set => SetProperty(ref _selectedShellProfile, value);\r\n        }\r\n\r\n        public ObservableCollection<SshProfileViewModel> SshProfiles { get; } = new ObservableCollection<SshProfileViewModel>();\r\n    }\r\n}\r\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/TerminalPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class TerminalPageViewModel : ObservableObject\n    {\n        private readonly TerminalOptions _terminalOptions;\n        private readonly ISettingsService _settingsService;\n        private readonly IDialogService _dialogService;\n        private readonly IDefaultValueProvider _defaultValueProvider;\n\n        public bool BarIsSelected\n        {\n            get => CursorStyle == CursorStyle.Bar;\n            set { if (value) CursorStyle = CursorStyle.Bar; }\n        }\n\n        public bool BlockIsSelected\n        {\n            get => CursorStyle == CursorStyle.Block;\n            set { if (value) CursorStyle = CursorStyle.Block; }\n        }\n\n        public bool UnderlineIsSelected\n        {\n            get => CursorStyle == CursorStyle.Underline;\n            set { if (value) CursorStyle = CursorStyle.Underline; }\n        }\n\n        public bool HiddenIsSelected\n        {\n            get => ScrollBarStyle == ScrollBarStyle.Hidden;\n            set { if (value) ScrollBarStyle = ScrollBarStyle.Hidden; }\n        }\n\n        public bool AutoHidingIsSelected\n        {\n            get => ScrollBarStyle == ScrollBarStyle.AutoHiding;\n            set { if (value) ScrollBarStyle = ScrollBarStyle.AutoHiding; }\n        }\n\n        public bool VisibleIsSelected\n        {\n            get => ScrollBarStyle == ScrollBarStyle.Visible;\n            set { if (value) ScrollBarStyle = ScrollBarStyle.Visible; }\n        }\n\n        public bool CursorBlink\n        {\n            get => _terminalOptions.CursorBlink;\n            set\n            {\n                if (_terminalOptions.CursorBlink != value)\n                {\n                    _terminalOptions.CursorBlink = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public bool UseAcrylicBackground\n        {\n            get => _terminalOptions.UseAcrylicBackground;\n            set\n            {\n                if (_terminalOptions.UseAcrylicBackground != value)\n                {\n                    _terminalOptions.UseAcrylicBackground = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string FontFamily\n        {\n            get => _terminalOptions.FontFamily;\n            set\n            {\n                if (_terminalOptions.FontFamily != value)\n                {\n                    _terminalOptions.FontFamily = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public int FontWeight\n        {\n            get => _terminalOptions.FontWeight;\n            set\n            {\n                if (_terminalOptions.FontWeight != value)\n                {\n                    _terminalOptions.FontWeight = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public double BackgroundOpacity\n        {\n            get => _terminalOptions.BackgroundOpacity;\n            set\n            {\n                if (_terminalOptions.BackgroundOpacity != value)\n                {\n                    _terminalOptions.BackgroundOpacity = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public int Padding\n        {\n            get => _terminalOptions.Padding;\n            set\n            {\n                if (_terminalOptions.Padding != value)\n                {\n                    _terminalOptions.Padding = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string ScrollBackLimit\n        {\n            get => _terminalOptions.ScrollBackLimit.ToString();\n            set\n            {\n                if (uint.TryParse(value, out uint intValue))\n                {\n                    if (intValue == uint.MinValue)\n                    {\n                        intValue = uint.MaxValue;\n                    }\n                    if (_terminalOptions.ScrollBackLimit != intValue)\n                    {\n                        _terminalOptions.ScrollBackLimit = intValue;\n                        _settingsService.SaveTerminalOptions(_terminalOptions);\n                        OnPropertyChanged();\n                    }\n                }\n                else\n                {\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public string WordSeparator\n        {\n            get => WebViewSpecialCharEncoder.Decode(_terminalOptions.WordSeparator);\n            set\n            {\n                value = WebViewSpecialCharEncoder.Encode(value);\n                if (_terminalOptions.WordSeparator != value)\n                {\n                    _terminalOptions.WordSeparator = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public IEnumerable<string> Fonts { get; }\n\n        public int FontSize\n        {\n            get => _terminalOptions.FontSize;\n            set\n            {\n                if (_terminalOptions.FontSize != value)\n                {\n                    _terminalOptions.FontSize = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        public IEnumerable<int> Sizes { get; }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        private CursorStyle CursorStyle\n        {\n            get => _terminalOptions.CursorStyle;\n            set\n            {\n                if (_terminalOptions.CursorStyle != value)\n                {\n                    _terminalOptions.CursorStyle = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        private ScrollBarStyle ScrollBarStyle\n        {\n            get => _terminalOptions.ScrollBarStyle;\n            set\n            {\n                if (_terminalOptions.ScrollBarStyle != value)\n                {\n                    _terminalOptions.ScrollBarStyle = value;\n                    _settingsService.SaveTerminalOptions(_terminalOptions);\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmRestoreTerminalOptions\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var defaults = _defaultValueProvider.GetDefaultTerminalOptions();\n                CursorBlink = defaults.CursorBlink;\n                CursorStyle = defaults.CursorStyle;\n                ScrollBarStyle = defaults.ScrollBarStyle;\n                FontFamily = defaults.FontFamily;\n                FontSize = defaults.FontSize;\n                FontWeight = defaults.FontWeight;\n                BackgroundOpacity = defaults.BackgroundOpacity;\n                ScrollBackLimit = defaults.ScrollBackLimit.ToString();\n                WordSeparator = defaults.WordSeparator;\n            }\n        }\n\n        public TerminalPageViewModel(ISettingsService settingsService, IDialogService dialogService, IDefaultValueProvider defaultValueProvider, ISystemFontService systemFontService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n\n            Fonts = systemFontService.GetSystemFontFamilies().OrderBy(s => s);\n            Sizes = Enumerable.Range(2, 72);\n\n            _terminalOptions = _settingsService.GetTerminalOptions();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Settings/ThemesPageViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing FluentTerminal.Models.Messages;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing Microsoft.Toolkit.Mvvm.Messaging;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Settings\n{\n    public class ThemesPageViewModel : ObservableObject,\n        IRecipient<TerminalOptionsChangedMessage>\n    {\n        private readonly IDefaultValueProvider _defaultValueProvider;\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private ThemeViewModel _selectedTheme;\n        private double _backgroundOpacity;\n        private readonly IThemeParserFactory _themeParserFactory;\n        private readonly IFileSystemService _fileSystemService;\n        private readonly IImageFileSystemService _imageFileSystemService;\n\n        public event EventHandler<string> SelectedThemeBackgroundColorChanged;\n        public event EventHandler<ImageFile> SelectedThemeBackgroundImageChanged;\n        public event EventHandler<ThemeViewModel> SelectedThemeChanged;\n\n        public ThemesPageViewModel(ISettingsService settingsService,\n                                   IDialogService dialogService,\n                                   IDefaultValueProvider defaultValueProvider,\n                                   IThemeParserFactory themeParserFactory,\n                                   IFileSystemService fileSystemService,\n                                   IImageFileSystemService imageFileSystemService)\n        {\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _defaultValueProvider = defaultValueProvider;\n            _themeParserFactory = themeParserFactory;\n            _fileSystemService = fileSystemService;\n            _imageFileSystemService = imageFileSystemService;\n\n            CreateThemeCommand = new RelayCommand(CreateTheme);\n            ImportThemeCommand = new AsyncRelayCommand(ImportThemeAsync);\n            CloneCommand = new RelayCommand<ThemeViewModel>(CloneTheme);\n\n            BackgroundOpacity = _settingsService.GetTerminalOptions().BackgroundOpacity;\n\n            var activeThemeId = _settingsService.GetCurrentThemeId();\n            foreach (var theme in _settingsService.GetThemes())\n            {\n                var viewModel = new ThemeViewModel(theme, _settingsService, _dialogService, _fileSystemService, _imageFileSystemService, false);\n                viewModel.Activated += OnThemeActivated;\n                viewModel.Deleted += OnThemeDeleted;\n\n                if (theme.Id == activeThemeId)\n                {\n                    viewModel.IsActive = true;\n                }\n                Themes.Add(viewModel);\n            }\n\n            SelectedTheme = Themes.First(t => t.IsActive);\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        public ICommand CreateThemeCommand { get; }\n        public ICommand ImportThemeCommand { get; }\n        public ICommand CloneCommand { get; set; }\n\n        public double BackgroundOpacity\n        {\n            get => _backgroundOpacity;\n            set => SetProperty(ref _backgroundOpacity, value);\n        }\n\n        public ThemeViewModel SelectedTheme\n        {\n            get => _selectedTheme;\n            set\n            {\n                if (_selectedTheme != null)\n                {\n                    _selectedTheme.BackgroundChanged -= OnSelectedThemeBackgroundChanged;\n                    _selectedTheme.BackgroundImageChanged -= OnSelectedThemeBackgroundImageChanged;\n                }\n\n                SetProperty(ref _selectedTheme, value);\n                SelectedThemeChanged?.Invoke(this, _selectedTheme);\n\n                if (value != null)\n                {\n                    _selectedTheme.BackgroundOpacity = BackgroundOpacity;\n                    value.BackgroundChanged += OnSelectedThemeBackgroundChanged;\n                    value.BackgroundImageChanged += OnSelectedThemeBackgroundImageChanged;\n                }\n            }\n        }\n\n        public ObservableCollection<ThemeViewModel> Themes { get; } = new ObservableCollection<ThemeViewModel>();\n\n        private void CloneTheme(ThemeViewModel theme)\n        {\n            var cloned = new TerminalTheme(theme.Model)\n            {\n                Id = Guid.NewGuid(),\n                PreInstalled = false,\n                Name = $\"Copy of {theme.Name}\"\n            };\n\n            AddTheme(cloned);\n        }\n\n        private void CreateTheme()\n        {\n            var defaultTheme = _settingsService.GetTheme(_defaultValueProvider.GetDefaultThemeId());\n            var theme = new TerminalTheme\n            {\n                Id = Guid.NewGuid(),\n                PreInstalled = false,\n                Name = \"New Theme\",\n                Colors = new TerminalColors(defaultTheme.Colors)\n            };\n\n            AddTheme(theme);\n        }\n\n        // Requires UI thread\n        private async Task ImportThemeAsync()\n        {\n            // ConfigureAwait(true) because we need to execute AddTheme method in the calling (UI) thread.\n            var file = await _fileSystemService.OpenFileAsync(_themeParserFactory.SupportedFileTypes)\n                .ConfigureAwait(true);\n\n            if (file != null)\n            {\n                var parser = _themeParserFactory.GetParser(file.FileType);\n\n                if (parser == null)\n                {\n                    await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"ImportThemeFailed\"),\n                        I18N.Translate(\"NoSuitableParserFound\"), DialogButton.OK).ConfigureAwait(false);\n\n                    return;\n                }\n\n                try\n                {\n                    // ConfigureAwait(true) because we need to execute AddTheme method in the calling (UI) thread.\n                    var exportedTheme = await parser.Import(file.Name, file.Content).ConfigureAwait(true);\n\n                    if (!string.IsNullOrWhiteSpace(exportedTheme.EncodedImage))\n                    {\n                        // ConfigureAwait(true) because we need to execute AddTheme method in the calling (UI) thread.\n                        var importedImage = await _imageFileSystemService\n                            .ImportThemeImageAsync(exportedTheme.BackgroundImage, exportedTheme.EncodedImage)\n                            .ConfigureAwait(true);\n\n                        exportedTheme.BackgroundImage = importedImage;\n                    }\n\n                    var terminalTheme = new TerminalTheme(exportedTheme);\n\n                    AddTheme(terminalTheme);\n                }\n                catch (Exception exception)\n                {\n                    await _dialogService\n                        .ShowMessageDialogAsync(I18N.Translate(\"ImportThemeFailed\"), exception.Message, DialogButton.OK)\n                        .ConfigureAwait(false);\n                }\n            }\n        }\n\n        private void AddTheme(TerminalTheme theme)\n        {\n            _settingsService.SaveTheme(theme, true);\n\n            var viewModel = new ThemeViewModel(theme, _settingsService, _dialogService, _fileSystemService, _imageFileSystemService, true);\n            viewModel.EditCommand.Execute(null);\n            viewModel.Activated += OnThemeActivated;\n            viewModel.Deleted += OnThemeDeleted;\n            Themes.Add(viewModel);\n            SelectedTheme = viewModel;\n        }\n\n        private void OnThemeActivated(object sender, EventArgs e)\n        {\n            if (sender is ThemeViewModel activatedTheme)\n            {\n                _settingsService.SaveCurrentThemeId(activatedTheme.Id);\n\n                foreach (var theme in Themes)\n                {\n                    theme.IsActive = theme.Id == activatedTheme.Id;\n                }\n            }\n        }\n\n        private void OnThemeDeleted(object sender, EventArgs e)\n        {\n            if (sender is ThemeViewModel theme)\n            {\n                if (SelectedTheme == theme)\n                {\n                    SelectedTheme = Themes.First();\n                }\n                Themes.Remove(theme);\n\n                if (theme.IsActive)\n                {\n                    Themes.First().IsActive = true;\n                    _settingsService.SaveCurrentThemeId(Themes.First().Id);\n                }\n                _settingsService.DeleteTheme(theme.Id);\n            }\n        }\n\n        public void Receive(TerminalOptionsChangedMessage message)\n        {\n            BackgroundOpacity = message.TerminalOptions.BackgroundOpacity;\n        }\n\n        private void OnSelectedThemeBackgroundChanged(object sender, string e)\n        {\n            SelectedThemeBackgroundColorChanged?.Invoke(this, e);\n        }\n\n        private void OnSelectedThemeBackgroundImageChanged(object sender, ImageFile e)\n        {\n            SelectedThemeBackgroundImageChanged?.Invoke(this, e);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/SettingsViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.ViewModels.Settings;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class SettingsViewModel : ObservableObject\n    {\n        public SettingsViewModel(ISettingsService settingsService, IDefaultValueProvider defaultValueProvider, IDialogService dialogService,\n            ITrayProcessCommunicationService trayProcessCommunicationService, IThemeParserFactory themeParserFactory, ISystemFontService systemFontService,\n            IFileSystemService fileSystemService, IStartupTaskService startupTaskService, IApplicationView applicationView,\n            IApplicationLanguageService applicationLanguageService, ApplicationDataContainers containers,\n            IImageFileSystemService imageFileSystemService)\n        {\n            KeyBindings = new KeyBindingsPageViewModel(settingsService, dialogService, trayProcessCommunicationService);\n            General = new GeneralPageViewModel(settingsService, dialogService, defaultValueProvider, startupTaskService, applicationLanguageService, trayProcessCommunicationService, fileSystemService);\n            Profiles = new ProfilesPageViewModel(settingsService, dialogService, defaultValueProvider, fileSystemService, applicationView);\n            Terminal = new TerminalPageViewModel(settingsService, dialogService, defaultValueProvider, systemFontService);\n            Themes = new ThemesPageViewModel(settingsService, dialogService, defaultValueProvider, themeParserFactory, fileSystemService, imageFileSystemService);\n            Mouse = new MousePageViewModel(settingsService, dialogService, defaultValueProvider);\n            SshProfiles = new SshProfilesPageViewModel(settingsService, dialogService, fileSystemService,\n                applicationView, trayProcessCommunicationService, containers.HistoryContainer);\n        }\n\n        public event EventHandler Closed;\n\n        public GeneralPageViewModel General { get; }\n        public KeyBindingsPageViewModel KeyBindings { get; }\n        public ProfilesPageViewModel Profiles { get; }\n        public TerminalPageViewModel Terminal { get; }\n        public ThemesPageViewModel Themes { get; }\n        public MousePageViewModel Mouse { get; }\n        public SshProfilesPageViewModel SshProfiles { get; }\n\n        public void Close()\n        {\n            Closed?.Invoke(this, EventArgs.Empty);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/ShellProfileViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing System.Windows.Input;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    /// <summary>\n    /// Extends <see cref=\"ProfileViewModelBase{T}\"/>, and implements only \"Set as default\" logic.\n    /// </summary>\n    public class ShellProfileViewModel : ProfileViewModelBase<CommonProfileProviderViewModel>\n    {\n        #region Fields\n\n        private readonly IDefaultValueProvider _defaultValueProvider;\n\n        #endregion Fields\n\n        #region Properties\n\n        private bool _isDefault;\n\n        public bool IsDefault\n        {\n            get => _isDefault;\n            set => SetProperty(ref _isDefault, value);\n        }\n\n        #endregion Properties\n\n        #region Events\n\n        public event EventHandler SetAsDefault;\n\n        #endregion Events\n\n        #region Commands\n\n        public ICommand SetDefaultCommand { get; }\n\n        public ICommand RestoreDefaultsCommand { get; }\n\n        #endregion Commands\n\n        #region Constrcutor\n\n        public ShellProfileViewModel(ShellProfile shellProfile, ISettingsService settingsService,\n            IDialogService dialogService, IFileSystemService fileSystemService, IApplicationView applicationView,\n            IDefaultValueProvider defaultValueProvider, bool isNew) : base(shellProfile, settingsService, dialogService,\n            isNew)\n        {\n            _defaultValueProvider = defaultValueProvider;\n\n            ProfileVm = new CommonProfileProviderViewModel(settingsService, applicationView, fileSystemService,\n                shellProfile);\n\n            SetDefaultCommand = new RelayCommand(SetDefault);\n            RestoreDefaultsCommand = new AsyncRelayCommand(RestoreDefaultsAsync);\n        }\n\n        #endregion Constrcutor\n\n        #region Methods\n\n        // Requires UI thread\n        private async Task RestoreDefaultsAsync()\n        {\n            if (InEditMode || !ProfileVm.PreInstalled)\n            {\n                throw new InvalidOperationException();\n            }\n\n            // ConfigureAwait(true) because we need to execute Initialize method in the calling (UI) thread.\n            var result = await DialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmRestoreProfile\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                var profile = _defaultValueProvider.GetPreinstalledShellProfiles().FirstOrDefault(x => x.Id.Equals(Id));\n\n                if (profile == null)\n                {\n                    // Should not happen ever, but...\n                    return;\n                }\n\n                ProfileVm.Model = profile;\n                Initialize(profile);\n\n                SettingsService.SaveShellProfile(profile);\n            }\n        }\n\n        protected override bool CanDelete()\n        {\n            return !ProfileVm.PreInstalled;\n        }\n\n        private void SetDefault()\n        {\n            SetAsDefault?.Invoke(this, EventArgs.Empty);\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/SshProfileViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    /// <summary>\r\n    /// Extends <see cref=\"ProfileViewModelBase{T}\"/>, and doesn't implement any additional logic because in\n    /// case of SSH profiles no additional logic is needed.\r\n    /// </summary>\n    public class SshProfileViewModel : ProfileViewModelBase<SshConnectViewModel>\n    {\r\n        #region Constructor\n\n        public SshProfileViewModel(SshProfile sshProfile, ISettingsService settingsService,\n            IDialogService dialogService, IFileSystemService fileSystemService, IApplicationView applicationView,\n            ITrayProcessCommunicationService trayProcessCommunicationService,\n            IApplicationDataContainer historyContainer, bool isNew) : base(sshProfile, settingsService, dialogService,\n            isNew)\n        {\n            ProfileVm = new SshConnectViewModel(settingsService, applicationView, trayProcessCommunicationService,\n                fileSystemService, sshProfile);\n        }\n\n        #endregion Constructor\n\r\n        #region Methods\n\n        protected override bool CanDelete()\n        {\n            return true;\n        }\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/TabThemeViewModel.cs",
    "content": "﻿using FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class TabThemeViewModel : ObservableObject\n    {\n        private bool _isSelected;\n\n        public TabThemeViewModel(TabTheme theme, TerminalViewModel terminal)\n        {\n            Theme = theme;\n            Terminal = terminal;\n        }\n\n        public bool IsSelected\n        {\n            get => _isSelected;\n            set\n            {\n                if (SetProperty(ref _isSelected, value) && value)\n                {\n                    Terminal.TabTheme = this;\n                }\n            }\n        }\n\n        public TabTheme Theme { get; }\n        public TerminalViewModel Terminal { get; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/TerminalViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\nusing FluentTerminal.Models.Messages;\nusing System.Windows.Input;\nusing FluentTerminal.App.ViewModels.Menu;\nusing System.Collections.Generic;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Messaging;\nusing Microsoft.Toolkit.Mvvm.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class TerminalViewModel : ObservableObject,\n        IRecipient<ApplicationSettingsChangedMessage>,\n        IRecipient<CurrentThemeChangedMessage>,\n        IRecipient<TerminalOptionsChangedMessage>,\n        IRecipient<KeyBindingsChangedMessage>\n    {\n        #region Static\n\n        private static readonly Regex SshTitleRx = new Regex(@\"^\\w+@\\S+:\", RegexOptions.Compiled);\n\n        #endregion Static\n\n        #region Serialize terminal state\n\n        private class TerminalState\n        {\n            public bool HasCustomTitle { get; set; }\n            public string ShellTitle { get; set; }\n            public string TabTitle { get; set; }\n            public TerminalTheme TerminalTheme { get; set; }\n            public int TabThemeId { get; set; }\n            public bool ShowSearchPanel { get; set; }\n            public string SearchText { get; set; }\n            public bool SearchMatchCase { get; set; }\n            public bool SearchWholeWord { get; set; }\n            public bool SearchWithRegex { get; set; }\n            public string XtermBufferState { get; set; }\n            public byte TerminalId { get; set; }\n            public ShellProfile ShellProfile { get; set; }\n            public int FontSize { get; set; }\n        }\n\n        public async Task<string> SerializeAsync()\n        {\n            TerminalState state = new TerminalState\n            {\n                HasCustomTitle = _hasCustomTitle,\n                ShellTitle = ShellTitle,\n                TabTitle = TabTitle,\n                TerminalTheme = TerminalTheme,\n                TabThemeId = TabTheme.Theme.Id,\n                ShowSearchPanel = ShowSearchPanel,\n                SearchText = SearchText,\n                SearchMatchCase = SearchMatchCase,\n                SearchWholeWord = SearchWholeWord,\n                SearchWithRegex = SearchWithRegex,\n                XtermBufferState = await SerializeXtermStateAsync().ConfigureAwait(false),\n                TerminalId = Terminal.Id,\n                ShellProfile = ShellProfile,\n                FontSize = FontSize\n            };\n\n            return JsonConvert.SerializeObject(state);\n        }\n\n        public void Restore(string data)\n        {\n            TerminalState state = JsonConvert.DeserializeObject<TerminalState>(data);\n            if (state != null)\n            {\n                _hasCustomTitle = state.HasCustomTitle;\n                ShellTitle = state.ShellTitle;\n                TabTitle = state.TabTitle;\n                TerminalTheme = state.TerminalTheme;\n                TabTheme = TabThemes.FirstOrDefault(t => t.Theme.Id == state.TabThemeId);\n                ShowSearchPanel = state.ShowSearchPanel;\n                SearchText = state.SearchText;\n                SearchMatchCase = state.SearchMatchCase;\n                SearchWholeWord = state.SearchWholeWord;\n                SearchWithRegex = state.SearchWithRegex;\n                XtermBufferState = state.XtermBufferState;\n                _terminalId = state.TerminalId;\n                ShellProfile = state.ShellProfile;\n                FontSize = state.FontSize;\n                TabTheme.IsSelected = true;\n            }\n        }\n\n        #endregion Serialize terminal state\n\n        private readonly IKeyboardCommandService _keyboardCommandService;\n        private bool _isSelected;\n        private bool _isHovered;\n        private bool _hasNewOutput;\n        private bool _hasExitedWithError;\n        private string _searchText;\n        private bool _showSearchPanel;\n        private bool _searchMatchCase;\n        private bool _searchWholeWord;\n        private bool _searchWithRegex;\n        private TabThemeViewModel _tabTheme;\n        private TerminalTheme _terminalTheme;\n        private TerminalOptions _terminalOptions;\n        private string _tabTitle;\n        private string _shellTitle;\n        private bool _hasCustomTitle;\n        private byte? _terminalId;\n        private bool _hasSelection;\n        private string _hoveredUri;\n        private MenuViewModel _contextMenu;\n        private MenuViewModel _tabContextMenu;\n        private readonly TabThemeViewModel _transparentTabThemeViewModel;\n        private int _fontSize;\n\n        public TerminalViewModel(ISettingsService settingsService, ITrayProcessCommunicationService trayProcessCommunicationService, IDialogService dialogService,\n            IKeyboardCommandService keyboardCommandService, ApplicationSettings applicationSettings, ShellProfile shellProfile,\n            IApplicationView applicationView, IClipboardService clipboardService, string terminalState = null)\n        {\n            SettingsService = settingsService;\n\n            _terminalOptions = SettingsService.GetTerminalOptions();\n\n            TrayProcessCommunicationService = trayProcessCommunicationService;\n\n            DialogService = dialogService;\n            _keyboardCommandService = keyboardCommandService;\n            ApplicationSettings = applicationSettings;\n            ApplicationView = applicationView;\n            ClipboardService = clipboardService;\n\n            ShellProfile = shellProfile;\n            TerminalTheme = shellProfile.TerminalThemeId == Guid.Empty ? SettingsService.GetCurrentTheme() : SettingsService.GetTheme(shellProfile.TerminalThemeId);\n\n            TabThemes = new ObservableCollection<TabThemeViewModel>(SettingsService.GetTabThemes().Select(theme => new TabThemeViewModel(theme, this)));\n            CloseCommand = new AsyncRelayCommand(TryCloseAsync, CanExecuteCommand);\n            CloseLeftTabsCommand = new RelayCommand(CloseLeftTabs, CanExecuteCommand);\n            CloseRightTabsCommand = new RelayCommand(CloseRightTabs, CanExecuteCommand);\n            CloseOtherTabsCommand = new RelayCommand(CloseOtherTabs, CanExecuteCommand);\n            FindNextCommand = new RelayCommand(FindNext, CanExecuteCommand);\n            FindPreviousCommand = new RelayCommand(FindPrevious, CanExecuteCommand);\n            CloseSearchPanelCommand = new RelayCommand(CloseSearchPanel, CanExecuteCommand);\n            EditTitleCommand = new AsyncRelayCommand(EditTitleAsync, CanExecuteCommand);\n            DuplicateTabCommand = new RelayCommand(DuplicateTab, CanExecuteCommand);\n            ReconnectTabCommand = new AsyncRelayCommand(ReconnectTabAsync, () => CanExecuteCommand() && HasExitedWithError);\n            CopyCommand = new AsyncRelayCommand(Copy, () => HasSelection);\n            PasteCommand = new AsyncRelayCommand(Paste);\n            CopyLinkCommand = new AsyncRelayCommand(() => CopyTextAsync(HoveredUri), () => !string.IsNullOrWhiteSpace(HoveredUri));\n            ShowSearchPanelCommand = new RelayCommand(() => ShowSearchPanel = true, () => !ShowSearchPanel);\n\n            FontSize = _terminalOptions.FontSize;\n\n            if (!string.IsNullOrEmpty(terminalState))\n            {\n                Restore(terminalState);\n            }\n            else\n            {\n                var defaultTabTheme = TabThemes.FirstOrDefault(t => t.Theme.Id == ShellProfile.TabThemeId);\n                defaultTabTheme.IsSelected = true;\n            }\n\n            _transparentTabThemeViewModel = TabThemes.FirstOrDefault(t => t.Theme.Id == 0);\n\n            Terminal = new Terminal(TrayProcessCommunicationService, _terminalId);\n            Terminal.KeyboardCommandReceived += Terminal_KeyboardCommandReceived;\n            Terminal.OutputReceived += Terminal_OutputReceived;\n            Terminal.SizeChanged += Terminal_SizeChanged;\n            Terminal.TitleChanged += Terminal_TitleChanged;\n            Terminal.Exited += Terminal_Exited;\n            Terminal.Closed += Terminal_Closed;\n\n            ContextMenu = BuidContextMenu();\n            TabContextMenu = BuildTabContextMenu();\n\n            WeakReferenceMessenger.Default.RegisterAll(this);\n        }\n\n        public MenuViewModel ContextMenu\n        {\n            get => _contextMenu;\n            set => SetProperty(ref _contextMenu, value);\n        }\n\n        public MenuViewModel TabContextMenu\n        {\n            get => _tabContextMenu;\n            set => SetProperty(ref _tabContextMenu, value);\n        }\n\n        private bool _disposalRequested;\n\n        public void DisposalPrepare()\n        {\n            _disposalRequested = true;\n            CloseCommand = null;\n            TerminalView.DisposalPrepare();\n            TerminalView = null;\n            Terminal = null;\n            Overlay = null;\n        }\n\n        public event EventHandler Activated;\n        public event EventHandler Closed;\n        public event EventHandler<SearchRequest> FindNextRequested;\n        public event EventHandler<SearchRequest> FindPreviousRequested;\n        public event EventHandler SearchStarted;\n        public event EventHandler<TerminalTheme> ThemeChanged;\n        public event EventHandler CloseLeftTabsRequested;\n        public event EventHandler CloseRightTabsRequested;\n        public event EventHandler CloseOtherTabsRequested;\n        public event EventHandler DuplicateTabRequested;\n        public event EventHandler<int> FontSizeChanged;\n\n        public ApplicationSettings ApplicationSettings { get; private set; }\n\n        public IApplicationView ApplicationView { get; }\n\n        public TabThemeViewModel BackgroundTabTheme\n        {\n            // The effective background theme depends on whether it is selected (use the theme), or if it is inactive\n            // (if we're set to underline inactive tabs, use the null theme).\n            get => IsSelected || (!IsSelected && ApplicationSettings.InactiveTabColorMode == InactiveTabColorMode.Background) ?\n                TabTheme :\n                _transparentTabThemeViewModel;\n        }\n\n        public IClipboardService ClipboardService { get; }\n\n        public string XtermBufferState { get; private set; }\n\n        public ICommand CloseCommand { get; private set; }\n\n        public ICommand CloseRightTabsCommand { get; }\n\n        public ICommand CloseLeftTabsCommand { get; }\n\n        public ICommand CloseOtherTabsCommand { get; }\n\n        public ICommand CloseSearchPanelCommand { get; }\n\n        public IDialogService DialogService { get; }\n\n        public ICommand EditTitleCommand { get; }\n\n        public ICommand FindNextCommand { get; }\n\n        public ICommand FindPreviousCommand { get; }\n\n        public ICommand DuplicateTabCommand { get; }\n\n        public AsyncRelayCommand ReconnectTabCommand { get; }\n\n        public ICommand CopyLinkCommand { get; private set; }\n\n        public ICommand CopyCommand { get; private set; }\n\n        public ICommand PasteCommand { get; private set; }\n\n        public ICommand ShowSearchPanelCommand { get; private set; }\n\n        public double BackgroundOpacity => _terminalOptions?.BackgroundOpacity ?? 1.0;\n\n        public bool IsSelected\n        {\n            get => _isSelected;\n            set\n            {\n                if (SetProperty(ref _isSelected, value))\n                {\n                    if (IsSelected)\n                    {\n                        _keyboardCommandService.RegisterCommandHandler(nameof(Command.Search), () => ShowSearchPanel = true);\n                        _keyboardCommandService.RegisterCommandHandler(nameof(Command.CloseSearch), () => CloseSearchPanel());\n                        HasNewOutput = false;\n                    }\n                    else\n                    {\n                        _keyboardCommandService.DeregisterCommandHandler(nameof(Command.Search));\n                        _keyboardCommandService.DeregisterCommandHandler(nameof(Command.CloseSearch));\n                    }\n                    OnPropertyChanged(nameof(IsUnderlined));\n                    OnPropertyChanged(nameof(BackgroundTabTheme));\n                    OnPropertyChanged(nameof(ShowCloseButton));\n                }\n            }\n        }\n\n        public bool HasSelection\n        {\n            get => _hasSelection;\n            set => SetProperty(ref _hasSelection, value);\n        }\n\n        public string HoveredUri\n        {\n            get => _hoveredUri;\n            set\n            {\n                if (SetProperty(ref _hoveredUri, value))\n                {\n                    ContextMenu = BuidContextMenu();\n                }\n            }\n        }\n\n        public bool IsHovered\n        {\n            get => _isHovered;\n            set\n            {\n                if (SetProperty(ref _isHovered, value))\n                {\n                    OnPropertyChanged(nameof(ShowCloseButton));\n                }\n            }\n        }\n\n        public bool ShowCloseButton\n        {\n            get => IsHovered || IsSelected;\n        }\n\n        public bool IsUnderlined => (IsSelected && ApplicationSettings.UnderlineSelectedTab) ||\n            (!IsSelected && ApplicationSettings.InactiveTabColorMode == InactiveTabColorMode.Underlined && TabTheme.Theme.Color != null);\n\n        public bool HasNewOutput\n        {\n            get => _hasNewOutput;\n            set => SetProperty(ref _hasNewOutput, value);\n        }\n\n        public bool HasExitedWithError\n        {\n            get => _hasExitedWithError;\n            set\n            {\n                if (SetProperty(ref _hasExitedWithError, value) && value)\n                {\n                    HasNewOutput = false;\n                }\n                ReconnectTabCommand.NotifyCanExecuteChanged();\n            }\n        }\n\n        public string SearchText\n        {\n            get => _searchText;\n            set => SetProperty(ref _searchText, value);\n        }\n\n        public bool SearchMatchCase\n        {\n            get => _searchMatchCase;\n            set => SetProperty(ref _searchMatchCase, value);\n        }\n\n        public bool SearchWholeWord\n        {\n            get => _searchWholeWord;\n            set => SetProperty(ref _searchWholeWord, value);\n        }\n\n        public bool SearchWithRegex\n        {\n            get => _searchWithRegex;\n            set => SetProperty(ref _searchWithRegex, value);\n        }\n\n        public ISettingsService SettingsService { get; }\n\n        public ShellProfile ShellProfile { get; private set; }\n\n        public bool ShowSearchPanel\n        {\n            get => _showSearchPanel;\n            set => SetProperty(ref _showSearchPanel, value);\n        }\n\n        public bool SearchHasFocus { get; set; }\n\n        public TabThemeViewModel TabTheme\n        {\n            get => _tabTheme;\n            set\n            {\n                SetProperty(ref _tabTheme, value);\n                OnPropertyChanged(nameof(IsUnderlined));\n                OnPropertyChanged(nameof(BackgroundTabTheme));\n\n                // necessary to update this constantly so that duplicated tabs will also carry over the color\n                ShellProfile.TabThemeId = value.Theme.Id;\n            }\n        }\n\n        public ObservableCollection<TabThemeViewModel> TabThemes { get; }\n\n        public Terminal Terminal { get; private set; }\n\n        public OverlayViewModel Overlay { get; set; }\n\n        public TerminalTheme TerminalTheme\n        {\n            get => _terminalTheme;\n            set => SetProperty(ref _terminalTheme, value);\n        }\n\n        public bool Initialized { get; set; }\n\n        public string TabTitle\n        {\n            get => _tabTitle;\n            set\n            {\n                var title = value?.Trim() ?? string.Empty;\n\n                if (ShellProfile is SshProfile)\n                {\n                    // For SshProfile we are adjusting title.\n                    if (title.Equals(\"ssh\", StringComparison.OrdinalIgnoreCase) ||\n                        title.EndsWith(\"\\\\ssh.exe\", StringComparison.OrdinalIgnoreCase))\n                    {\n                        title = $\"[ssh] {I18N.Translate(\"Authenticate\")}\";\n                    }\n                    else if (title.Equals(\"mosh\", StringComparison.OrdinalIgnoreCase) ||\n                             title.EndsWith(\"\\\\mosh.exe\", StringComparison.OrdinalIgnoreCase))\n                    {\n                        title = $\"[mosh] {I18N.Translate(\"Authenticate\")}\";\n                    }\n                    else if (SshTitleRx.IsMatch(title))\n                    {\n                        title = $\"[ssh] {title}\";\n                    }\n                }\n\n                SetProperty(ref _tabTitle, title);\n                ShellProfile.Name = title;\n            }\n        }\n\n        public string ShellTitle\n        {\n            get => _shellTitle;\n            set\n            {\n                if (SetProperty(ref _shellTitle, value) && !_hasCustomTitle)\n                {\n                    TabTitle = value;\n                }\n            }\n        }\n\n        public int FontSize\n        {\n            get => _fontSize;\n            set\n            {\n                _fontSize = value > 0 ? value : 1;\n            }\n        }\n\n        public ITrayProcessCommunicationService TrayProcessCommunicationService { get; }\n\n        public Task CloseAsync()\n        {\n            //MessengerInstance.Unregister(this); // todo necessary?\n\n            return Terminal.CloseAsync();\n        }\n\n        public Task CopyTextAsync(string text)\n        {\n            return ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                ClipboardService.SetText(text);\n\n                if (ApplicationSettings.ShowTextCopied)\n                {\n                    Overlay.Show(I18N.Translate(\"TextCopied\"));\n                }\n            });\n        }\n\n        // Requires UI thread\n        public async Task EditTitleAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await DialogService.ShowInputDialogAsync(I18N.Translate(\"EditTitleString\"))\n                .ConfigureAwait(true);\n            if (result != null)\n            {\n                if (string.IsNullOrWhiteSpace(result))\n                {\n                    _hasCustomTitle = false;\n                    TabTitle = ShellTitle;\n                }\n                else\n                {\n                    _hasCustomTitle = true;\n                    TabTitle = result;\n                }\n            }\n        }\n\n        public void FocusTerminal()\n        {\n            Activated?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void CloseSearchPanel()\n        {\n            SearchText = string.Empty;\n            ShowSearchPanel = false;\n            FocusTerminal();\n        }\n\n        private bool CanExecuteCommand<T>(T a)\n        {\n            return CanExecuteCommand();\n        }\n\n        private bool CanExecuteCommand()\n        {\n            return Initialized && !_disposalRequested;\n        }\n\n        private void CloseLeftTabs()\n        {\n            CloseLeftTabsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void CloseRightTabs()\n        {\n            CloseRightTabsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void CloseOtherTabs()\n        {\n            CloseOtherTabsRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        private void FindNext()\n        {\n            FindNextRequested?.Invoke(this, new SearchRequest { MatchCase = SearchMatchCase, Regex = SearchWithRegex, Term = SearchText, WholeWord = SearchWholeWord });\n        }\n\n        public ITerminalView TerminalView { get; set; }\n\n        private Task<string> SerializeXtermStateAsync()\n        {\n            return TerminalView?.SerializeXtermStateAsync() ?? Task.FromResult(string.Empty);\n        }\n\n        private void FindPrevious()\n        {\n            FindPreviousRequested?.Invoke(this, new SearchRequest { MatchCase = SearchMatchCase, Regex = SearchWithRegex, Term = SearchText, WholeWord = SearchWholeWord });\n        }\n\n        private void DuplicateTab()\n        {\n            DuplicateTabRequested?.Invoke(this, EventArgs.Empty);\n        }\n\n        public async Task ReconnectTabAsync()\n        {\n            HasExitedWithError = false;\n            await TerminalView?.ReconnectAsync();\n        }\n\n        public void Receive(ApplicationSettingsChangedMessage message)\n        {\n            ApplicationSettings = message.ApplicationSettings;\n\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                OnPropertyChanged(nameof(IsUnderlined));\n                OnPropertyChanged(nameof(BackgroundTabTheme));\n            });\n        }\n\n        public void Receive(CurrentThemeChangedMessage message)\n        {\n            // only change theme if not overwritten by profile\n            if (ShellProfile.TerminalThemeId == Guid.Empty)\n            {\n                var currentTheme = SettingsService.GetTheme(message.ThemeId);\n\n                ApplicationView.ExecuteOnUiThreadAsync(() =>\n                {\n                    TerminalTheme = currentTheme;\n                    ThemeChanged?.Invoke(this, currentTheme);\n                });\n            }\n        }\n\n        public void Receive(TerminalOptionsChangedMessage message)\n        {\n            _terminalOptions = message.TerminalOptions;\n            ApplicationView.ExecuteOnUiThreadAsync(() => OnPropertyChanged(nameof(BackgroundOpacity)), CoreDispatcherPriority.Low);\n        }\n\n        public void Receive(KeyBindingsChangedMessage message)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() =>\n            {\n                var contextMenu = BuidContextMenu();\n                if (!contextMenu.EquivalentTo(ContextMenu))\n                {\n                    ContextMenu = contextMenu;\n                }\n\n                var tabContextMenu = BuildTabContextMenu();\n                if (!tabContextMenu.EquivalentTo(TabContextMenu))\n                {\n                    TabContextMenu = tabContextMenu;\n                }\n\n            }, CoreDispatcherPriority.Low, true);\n        }\n\n        private void Terminal_Exited(object sender, int exitCode)\n        {\n            if (ShellProfile?.Tag is ISessionSuccessTracker tracker && exitCode != 0)\n            {\n                tracker.SetInvalid();\n            }\n\n            ApplicationView.ExecuteOnUiThreadAsync(() => HasExitedWithError = exitCode > 0);\n        }\n\n        private void Terminal_Closed(object sender, EventArgs e)\n        {\n            Closed?.Invoke(this, EventArgs.Empty);\n            Terminal.KeyboardCommandReceived -= Terminal_KeyboardCommandReceived;\n            Terminal.OutputReceived -= Terminal_OutputReceived;\n            Terminal.SizeChanged -= Terminal_SizeChanged;\n            Terminal.TitleChanged -= Terminal_TitleChanged;\n            Terminal.Exited -= Terminal_Exited;\n            Terminal.Closed -= Terminal_Closed;\n        }\n\n        private async void Terminal_KeyboardCommandReceived(object sender, string e)\n        {\n            switch (e)\n            {\n                case nameof(Command.Copy):\n                    {\n                        await Copy().ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.Paste):\n                    {\n                        await Paste().ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.PasteWithoutNewlines):\n                    {\n                        string content = await ClipboardService.GetTextAsync().ConfigureAwait(false);\n                        if (content != null)\n                        {\n                            content = ShellProfile.NewlinePattern.Replace(content, string.Empty);\n                            TerminalView.Paste(content);\n                        }\n                        return;\n                    }\n                case nameof(Command.Search):\n                    {\n                        await ApplicationView.ExecuteOnUiThreadAsync(() =>\n                        {\n                            ShowSearchPanel = true;\n                            SearchStarted?.Invoke(this, EventArgs.Empty);\n                        }).ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.CloseSearch):\n                    {\n                        await ApplicationView.ExecuteOnUiThreadAsync(() =>\n                        {\n                            CloseSearchPanel();\n                        }).ConfigureAwait(false);\n                        return;\n                    }\n                case nameof(Command.IncreaseFontSize):\n                    {\n                        FontSize++;\n                        FontSizeChanged?.Invoke(this, FontSize);\n                        return;\n                    }\n                case nameof(Command.DecreaseFontSize):\n                    {\n                        if (FontSize > 2)\n                        {\n                            FontSize--;\n                            FontSizeChanged?.Invoke(this, FontSize);\n                        }\n\n                        return;\n                    }\n                case nameof(Command.ResetFontSize):\n                    {\n                        FontSize = _terminalOptions.FontSize;\n                        FontSizeChanged?.Invoke(this, FontSize);\n                        return;\n                    }\n                default:\n                    {\n                        await ApplicationView.ExecuteOnUiThreadAsync(() => _keyboardCommandService.SendCommand(e))\n                            .ConfigureAwait(false);\n                        return;\n                    }\n            }\n        }\n\n        private void Terminal_OutputReceived(object sender, byte[] e)\n        {\n            if (ShellProfile?.Tag is ISessionSuccessTracker tracker)\n            {\n                tracker.SetOutputReceived();\n            }\n\n            if (!IsSelected && ApplicationSettings.ShowNewOutputIndicator)\n            {\n                ApplicationView.ExecuteOnUiThreadAsync(() => HasNewOutput = true);\n            }\n        }\n\n        private void Terminal_SizeChanged(object sender, TerminalSize e)\n        {\n            ApplicationView.ExecuteOnUiThreadAsync(() => Overlay.Show($\"{e.Columns} x {e.Rows}\"));\n        }\n\n        private void Terminal_TitleChanged(object sender, string e)\n        {\n            if (e == Terminal.Profile.Location) return;\n            ApplicationView.ExecuteOnUiThreadAsync(() => ShellTitle = e);\n        }\n\n        private async Task TryCloseAsync()\n        {\n            if (ShellProfile?.Tag is ISessionSuccessTracker tracker)\n            {\n                tracker.SetInvalid();\n            }\n\n            if (!ApplicationSettings.ConfirmClosingTabs || await DialogService\n                    .ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                        string.Format(I18N.Translate(\"ConfirmCloseTab\"), ShellTitle), DialogButton.OK,\n                        DialogButton.Cancel).ConfigureAwait(false) == DialogButton.OK)\n            {\n                await CloseAsync().ConfigureAwait(false);\n            }\n        }\n\n        private async Task Copy()\n        {\n            var selection = await Terminal.GetSelectedText().ConfigureAwait(false);\n            await CopyTextAsync(selection).ConfigureAwait(false);\n        }\n\n        private async Task Paste()\n        {\n            // prevent from pasting something into the terminal window when the actual command is executed\n            // while being in the search box\n            if (!SearchHasFocus)\n            {\n                var content = await ClipboardService.GetTextAsync().ConfigureAwait(false);\n                if (content != null)\n                {\n                    TerminalView.Paste(content);\n                }\n            }\n        }\n\n        private MenuViewModel BuidContextMenu()\n        {\n            var commandKeyBindings = SettingsService.GetCommandKeyBindings();\n            var contextMenu = new MenuViewModel();\n\n            if (!string.IsNullOrWhiteSpace(HoveredUri))\n            {\n                var copyLink = new MenuItemViewModel(I18N.Translate(\"CopyLink\"), CopyLinkCommand, icon: Mdl2Icon.Link());\n                contextMenu.Items.Add(copyLink);\n                contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n            }\n\n            var copy = new MenuItemViewModel(I18N.Translate(\"Command.Copy\"), CopyCommand, icon: Mdl2Icon.Copy());\n            AddKeyBindings(copy, Command.Copy, commandKeyBindings);\n            contextMenu.Items.Add(copy);\n\n            var paste = new MenuItemViewModel(I18N.Translate(\"Command.Paste\"), PasteCommand, icon: Mdl2Icon.Paste());\n            AddKeyBindings(paste, Command.Paste, commandKeyBindings);\n            contextMenu.Items.Add(paste);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var editTitle = new MenuItemViewModel(I18N.Translate(\"EditTitle.Text\"), EditTitleCommand, icon: Mdl2Icon.Edit());\n            AddKeyBindings(editTitle, Command.ChangeTabTitle, commandKeyBindings);\n            contextMenu.Items.Add(editTitle);\n\n            var search = new MenuItemViewModel(I18N.Translate(\"Search.Text\"), ShowSearchPanelCommand, icon: Mdl2Icon.Search());\n            AddKeyBindings(search, Command.Search, commandKeyBindings);\n            contextMenu.Items.Add(search);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var duplicate = new MenuItemViewModel(I18N.Translate(\"Command.DuplicateTab\"), DuplicateTabCommand);\n            AddKeyBindings(duplicate, Command.DuplicateTab, commandKeyBindings);\n            contextMenu.Items.Add(duplicate);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var close = new MenuItemViewModel(I18N.Translate(\"Close\"), CloseCommand, icon: Mdl2Icon.Cancel());\n            AddKeyBindings(close, Command.CloseTab, commandKeyBindings);\n            contextMenu.Items.Add(close);\n\n            return contextMenu;\n        }\n\n        private MenuViewModel BuildTabContextMenu()\n        {\n            var commandKeyBindings = SettingsService.GetCommandKeyBindings();\n            var contextMenu = new MenuViewModel();\n\n            RadioMenuItemViewModel createTabColorItem(TabThemeViewModel tabTheme)\n            {\n                //todo localise name\n                var icon = tabTheme.Theme.Id == 0 ? Mdl2Icon.PaginationDotOutline10() : Mdl2Icon.PaginationDotSolid10(tabTheme.Theme.Color);\n                return new RadioMenuItemViewModel(I18N.Translate($\"{tabTheme.Theme.Name}\"),  $\"{Terminal.Id}_tabTheme\", tabTheme, bindingPath: nameof(TabThemeViewModel.IsSelected) , icon: icon);\n            }\n\n            var tabColor = new ExpandableMenuItemViewModel(I18N.Translate(\"Color.Text\"));\n\n            foreach (var tabTheme in TabThemes)\n            {\n                tabColor.SubItems.Add(createTabColorItem(tabTheme));\n            }\n\n            contextMenu.Items.Add(tabColor);\n\n            var editTitle = new MenuItemViewModel(I18N.Translate(\"EditTitle.Text\"), EditTitleCommand, icon: Mdl2Icon.Edit());\n            AddKeyBindings(editTitle, Command.ChangeTabTitle, commandKeyBindings);\n            contextMenu.Items.Add(editTitle);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var duplicate = new MenuItemViewModel(I18N.Translate(\"Command.DuplicateTab\"), DuplicateTabCommand);\n            AddKeyBindings(duplicate, Command.DuplicateTab, commandKeyBindings);\n            contextMenu.Items.Add(duplicate);\n\n            contextMenu.Items.Add(new SeparatorMenuItemViewModel());\n\n            var closeLeft = new MenuItemViewModel(I18N.Translate(\"CloseLeft.Text\"), CloseLeftTabsCommand);\n            contextMenu.Items.Add(closeLeft);\n\n            var closeRight = new MenuItemViewModel(I18N.Translate(\"CloseRight.Text\"), CloseRightTabsCommand);\n            contextMenu.Items.Add(closeRight);\n\n            var closeOther = new MenuItemViewModel(I18N.Translate(\"CloseOther.Text\"), CloseOtherTabsCommand);\n            contextMenu.Items.Add(closeOther);\n\n            var close = new MenuItemViewModel(I18N.Translate(\"Close\"), CloseCommand, icon: Mdl2Icon.Cancel());\n            AddKeyBindings(close, Command.CloseTab, commandKeyBindings);\n            contextMenu.Items.Add(close);\n\n            return contextMenu;\n        }\n\n        private void AddKeyBindings(MenuItemViewModel menuItem, Command command, IDictionary<string, ICollection<KeyBinding>> commandKeyBindings)\n        {\n            var keyBindings = commandKeyBindings[command.ToString()];\n            if (keyBindings?.Any() == true)\n            {\n                menuItem.KeyBinding = new MenuItemKeyBindingViewModel(keyBindings.First());\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/ThemeViewModel.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusing Newtonsoft.Json;\nusing System;\nusing System.Threading.Tasks;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels\n{\n    public class ThemeViewModel : ObservableObject\n    {\n        private readonly IDialogService _dialogService;\n        private readonly ISettingsService _settingsService;\n        private string _author;\n        private string _background;\n        private double _backgroundOpacity;\n        private string _black;\n        private string _blue;\n        private string _brightBlack;\n        private string _brightBlue;\n        private string _brightCyan;\n        private string _brightGreen;\n        private string _brightMagenta;\n        private string _brightRed;\n        private string _brightWhite;\n        private string _brightYellow;\n        private string _cursor;\n        private string _cursorAccent;\n        private string _cyan;\n        private TerminalTheme _fallbackTheme;\n        private string _foreground;\n        private string _green;\n        private bool _inEditMode;\n        private bool _isActive;\n        private string _magenta;\n        private string _name;\n        private bool _isNew;\n        private string _red;\n        private string _selection;\n        private string _white;\n        private string _yellow;\n        private ImageFile _backgroundThemeFile;\n        private readonly IFileSystemService _fileSystemService;\n        private readonly IImageFileSystemService _imageFileSystemService;\n\n        public event EventHandler<string> BackgroundChanged;\n        public event EventHandler<ImageFile> BackgroundImageChanged;\n\n        public ThemeViewModel(TerminalTheme theme,\n                              ISettingsService settingsService,\n                              IDialogService dialogService,\n                              IFileSystemService fileSystemService,\n                              IImageFileSystemService imageFileSystemService,\n                              bool isNew)\n        {\n            Model = theme;\n            _settingsService = settingsService;\n            _dialogService = dialogService;\n            _fileSystemService = fileSystemService;\n            _imageFileSystemService = imageFileSystemService;\n            _isNew = isNew;\n\n            Name = Model.Name;\n            Author = Model.Author;\n            Id = Model.Id;\n\n            Black = Model.Colors.Black;\n            Red = Model.Colors.Red;\n            Green = Model.Colors.Green;\n            Yellow = Model.Colors.Yellow;\n            Blue = Model.Colors.Blue;\n            Magenta = Model.Colors.Magenta;\n            Cyan = Model.Colors.Cyan;\n            White = Model.Colors.White;\n\n            BrightBlack = Model.Colors.BrightBlack;\n            BrightRed = Model.Colors.BrightRed;\n            BrightGreen = Model.Colors.BrightGreen;\n            BrightYellow = Model.Colors.BrightYellow;\n            BrightBlue = Model.Colors.BrightBlue;\n            BrightMagenta = Model.Colors.BrightMagenta;\n            BrightCyan = Model.Colors.BrightCyan;\n            BrightWhite = Model.Colors.BrightWhite;\n\n            Background = Model.Colors.Background;\n            Foreground = Model.Colors.Foreground;\n            Cursor = Model.Colors.Cursor;\n            CursorAccent = Model.Colors.CursorAccent;\n            Selection = Model.Colors.Selection;\n\n            BackgroundThemeFile = Model.BackgroundImage;\n\n            SetActiveCommand = new RelayCommand(SetActive);\n            DeleteCommand = new AsyncRelayCommand(DeleteAsync, NotPreInstalled);\n            EditCommand = new RelayCommand(Edit, NotPreInstalled);\n            CancelEditCommand = new AsyncRelayCommand(CancelEditAsync);\n            SaveChangesCommand = new AsyncRelayCommand(SaveChangesAsync);\n            ExportCommand = new AsyncRelayCommand(Export, NotPreInstalled);\n            ChooseBackgroundImageCommand = new AsyncRelayCommand(ChooseBackgroundImageAsync, NotPreInstalled);\n            DeleteBackgroundImageCommand = new AsyncRelayCommand(DeleteBackgroundImageAsync, NotPreInstalled);\n        }\n\n        public event EventHandler Activated;\n\n        public event EventHandler Deleted;\n\n        public TerminalTheme Model { get; }\n\n        public string Author\n        {\n            get => _author;\n            set => SetProperty(ref _author, value);\n        }\n\n        public string Background\n        {\n            get => _background;\n            set\n            {\n                SetProperty(ref _background, value);\n                BackgroundChanged?.Invoke(this, value);\n            }\n        }\n\n        public double BackgroundOpacity\n        {\n            get => _backgroundOpacity;\n            set => SetProperty(ref _backgroundOpacity, value);\n        }\n\n        public string Black\n        {\n            get => _black;\n            set => SetProperty(ref _black, value);\n        }\n\n        public string Blue\n        {\n            get => _blue;\n            set => SetProperty(ref _blue, value);\n        }\n\n        public string BrightBlack\n        {\n            get => _brightBlack;\n            set => SetProperty(ref _brightBlack, value);\n        }\n\n        public string BrightBlue\n        {\n            get => _brightBlue;\n            set => SetProperty(ref _brightBlue, value);\n        }\n\n        public string BrightCyan\n        {\n            get => _brightCyan;\n            set => SetProperty(ref _brightCyan, value);\n        }\n\n        public string BrightGreen\n        {\n            get => _brightGreen;\n            set => SetProperty(ref _brightGreen, value);\n        }\n\n        public string BrightMagenta\n        {\n            get => _brightMagenta;\n            set => SetProperty(ref _brightMagenta, value);\n        }\n\n        public string BrightRed\n        {\n            get => _brightRed;\n            set => SetProperty(ref _brightRed, value);\n        }\n\n        public string BrightWhite\n        {\n            get => _brightWhite;\n            set => SetProperty(ref _brightWhite, value);\n        }\n\n        public string BrightYellow\n        {\n            get => _brightYellow;\n            set => SetProperty(ref _brightYellow, value);\n        }\n\n        public ICommand CancelEditCommand { get; }\n\n        public string Cursor\n        {\n            get => _cursor;\n            set => SetProperty(ref _cursor, value);\n        }\n\n        public string CursorAccent\n        {\n            get => _cursorAccent;\n            set => SetProperty(ref _cursorAccent, value);\n        }\n\n        public string Cyan\n        {\n            get => _cyan;\n            set => SetProperty(ref _cyan, value);\n        }\n\n        public ICommand DeleteCommand { get; }\n        public ICommand EditCommand { get; }\n        public ICommand ExportCommand { get; }\n\n        public string Foreground\n        {\n            get => _foreground;\n            set => SetProperty(ref _foreground, value);\n        }\n\n        public string Green\n        {\n            get => _green;\n            set => SetProperty(ref _green, value);\n        }\n\n        public Guid Id { get; }\n\n        public bool InEditMode\n        {\n            get => _inEditMode;\n            set => SetProperty(ref _inEditMode, value);\n        }\n\n        public bool IsActive\n        {\n            get => _isActive;\n            set => SetProperty(ref _isActive, value);\n        }\n\n        public string Magenta\n        {\n            get => _magenta;\n            set => SetProperty(ref _magenta, value);\n        }\n\n        public string Name\n        {\n            get => _name;\n            set => SetProperty(ref _name, value);\n        }\n\n        public string Red\n        {\n            get => _red;\n            set => SetProperty(ref _red, value);\n        }\n\n        public ICommand SaveChangesCommand { get; }\n\n        public string Selection\n        {\n            get => _selection;\n            set => SetProperty(ref _selection, value);\n        }\n\n        public ICommand SetActiveCommand { get; }\n\n        public string White\n        {\n            get => _white;\n            set => SetProperty(ref _white, value);\n        }\n\n        public string Yellow\n        {\n            get => _yellow;\n            set => SetProperty(ref _yellow, value);\n        }\n\n        public ImageFile BackgroundThemeFile\n        {\n            get => _backgroundThemeFile;\n            set\n            {\n                SetProperty(ref _backgroundThemeFile, value);\n                BackgroundImageChanged?.Invoke(this, value);\n            }\n        }\n\n        public ICommand ChooseBackgroundImageCommand { get; }\n\n        public ICommand DeleteBackgroundImageCommand { get; }\n\n        // Requires UI thread\n        private async Task SaveChangesAsync()\n        {\n            Model.Name = Name;\n            Model.Author = Author;\n\n            Model.Colors.Black = Black;\n            Model.Colors.Red = Red;\n            Model.Colors.Green = Green;\n            Model.Colors.Yellow = Yellow;\n            Model.Colors.Blue = Blue;\n            Model.Colors.Magenta = Magenta;\n            Model.Colors.Cyan = Cyan;\n            Model.Colors.White = White;\n\n            Model.Colors.BrightBlack = BrightBlack;\n            Model.Colors.BrightRed = BrightRed;\n            Model.Colors.BrightGreen = BrightGreen;\n            Model.Colors.BrightYellow = BrightYellow;\n            Model.Colors.BrightBlue = BrightBlue;\n            Model.Colors.BrightMagenta = BrightMagenta;\n            Model.Colors.BrightCyan = BrightCyan;\n            Model.Colors.BrightWhite = BrightWhite;\n\n            Model.Colors.Background = Background;\n            Model.Colors.Foreground = Foreground;\n            Model.Colors.Cursor = Cursor;\n            Model.Colors.CursorAccent = CursorAccent;\n            Model.Colors.Selection = Selection;\n\n            if (Model.BackgroundImage != null &&\n               BackgroundThemeFile != Model?.BackgroundImage)\n            {\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n                await _imageFileSystemService\n                    .RemoveImportedImageAsync($\"{Model.BackgroundImage?.Name}{Model.BackgroundImage?.FileType}\")\n                    .ConfigureAwait(true);\n            }\n\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            BackgroundThemeFile = await SaveBackgroundImageAsync().ConfigureAwait(true);\n\n            Model.BackgroundImage = BackgroundThemeFile;\n\n            _settingsService.SaveTheme(Model);\n\n            InEditMode = false;\n            _isNew = false;\n        }\n\n        // Requires UI thread\n        private async Task CancelEditAsync()\n        {\n            if (_isNew)\n            {\n                await DeleteAsync().ConfigureAwait(false);\n\n                return;\n            }\n\n            TerminalTheme changedTheme = new TerminalTheme()\n            {\n                Name = Name,\n                Author = Author,\n                BackgroundImage = BackgroundThemeFile,\n                Colors = new TerminalColors()\n                {\n                    Black = Black,\n                    Red = Red,\n                    Green = Green,\n                    Yellow = Yellow,\n                    Blue = Blue,\n                    Magenta = Magenta,\n                    Cyan = Cyan,\n                    White = White,\n\n                    BrightBlack = BrightBlack,\n                    BrightRed = BrightRed,\n                    BrightGreen = BrightGreen,\n                    BrightYellow = BrightYellow,\n                    BrightBlue = BrightBlue,\n                    BrightMagenta = BrightMagenta,\n                    BrightCyan = BrightCyan,\n                    BrightWhite = BrightWhite,\n\n                    Background = Background,\n                    Foreground = Foreground,\n                    Cursor = Cursor,\n                    CursorAccent = CursorAccent,\n                    Selection = Selection\n                }\n            };\n\n            if (!_fallbackTheme.Equals(changedTheme))\n            {\n                // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n                var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmDiscardChanges\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n                if (result == DialogButton.OK)\n                {\n                    Black = _fallbackTheme.Colors.Black;\n                    Red = _fallbackTheme.Colors.Red;\n                    Green = _fallbackTheme.Colors.Green;\n                    Yellow = _fallbackTheme.Colors.Yellow;\n                    Blue = _fallbackTheme.Colors.Blue;\n                    Magenta = _fallbackTheme.Colors.Magenta;\n                    Cyan = _fallbackTheme.Colors.Cyan;\n                    White = _fallbackTheme.Colors.White;\n\n                    BrightBlack = _fallbackTheme.Colors.BrightBlack;\n                    BrightRed = _fallbackTheme.Colors.BrightRed;\n                    BrightGreen = _fallbackTheme.Colors.BrightGreen;\n                    BrightYellow = _fallbackTheme.Colors.BrightYellow;\n                    BrightBlue = _fallbackTheme.Colors.BrightBlue;\n                    BrightMagenta = _fallbackTheme.Colors.BrightMagenta;\n                    BrightCyan = _fallbackTheme.Colors.BrightCyan;\n                    BrightWhite = _fallbackTheme.Colors.BrightWhite;\n\n                    Background = _fallbackTheme.Colors.Background;\n                    Foreground = _fallbackTheme.Colors.Foreground;\n                    Cursor = _fallbackTheme.Colors.Cursor;\n                    CursorAccent = _fallbackTheme.Colors.CursorAccent;\n                    Selection = _fallbackTheme.Colors.Selection;\n\n                    Name = _fallbackTheme.Name;\n                    Author = _fallbackTheme.Author;\n\n                    BackgroundThemeFile = _fallbackTheme.BackgroundImage;\n\n                    InEditMode = false;\n\n                    await _imageFileSystemService.RemoveTemporaryBackgroundThemeImageAsync().ConfigureAwait(false);\n                }\n            }\n            else\n            {\n                InEditMode = false;\n            }\n        }\n\n        private bool NotPreInstalled()\n        {\n            return !Model.PreInstalled;\n        }\n\n        // Requires UI thread\n        private async Task DeleteAsync()\n        {\n            // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                I18N.Translate(\"ConfirmDeleteTheme\"), DialogButton.OK, DialogButton.Cancel).ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n                await DeleteBackgroundImageIfExistsAsync().ConfigureAwait(true);\n                // ConfigureAwait(true) because we need to trigger Deleted event in the calling (UI) thread.\n                await _imageFileSystemService.RemoveTemporaryBackgroundThemeImageAsync().ConfigureAwait(true);\n\n                Deleted?.Invoke(this, EventArgs.Empty);\n            }\n        }\n\n        // Requires UI thread\n        private async Task DeleteBackgroundImageAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var result = await _dialogService.ShowMessageDialogAsync(I18N.Translate(\"PleaseConfirm\"),\n                    I18N.Translate(\"ConfirmDeleteBackgroundImage\"), DialogButton.OK, DialogButton.Cancel)\n                .ConfigureAwait(true);\n\n            if (result == DialogButton.OK)\n            {\n                BackgroundThemeFile = null;\n            }\n        }\n\n        private void Edit()\n        {\n            _fallbackTheme = new TerminalTheme(Model);\n            InEditMode = true;\n        }\n\n        private void SetActive()\n        {\n            Activated?.Invoke(this, EventArgs.Empty);\n        }\n\n        private Task Export()\n        {\n            var encodedImage = _imageFileSystemService.EncodeImage(BackgroundThemeFile);\n            var exportedTheme = new ExportedTerminalTheme(Model, encodedImage);\n            var content = JsonConvert.SerializeObject(exportedTheme, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new TerminalThemeContractResolver() });\n            return _fileSystemService.SaveTextFileAsync(Name, \"Fluent Terminal Theme\", \".flutecolors\", content);\n        }\n\n        private async Task<ImageFile> SaveBackgroundImageAsync()\n        {\n            if (BackgroundThemeFile == null)\n            {\n                return BackgroundThemeFile;\n            }\n\n            if (BackgroundThemeFile == Model.BackgroundImage)\n            {\n                return BackgroundThemeFile;\n            }\n\n            var importedBackgroundThemeFile =\n                await _fileSystemService.SaveImageInRoamingAsync(BackgroundThemeFile).ConfigureAwait(false);\n\n            await _imageFileSystemService.RemoveTemporaryBackgroundThemeImageAsync().ConfigureAwait(false);\n\n            return importedBackgroundThemeFile;\n        }\n\n        // Requires UI thread\n        private async Task ChooseBackgroundImageAsync()\n        {\n            // ConfigureAwait(true) because we're setting some view-model properties afterwards.\n            var chosenImage = await _imageFileSystemService\n                .ImportTemporaryImageFileAsync(new[] {\".jpeg\", \".png\", \".jpg\"}).ConfigureAwait(true);\n\n            if(chosenImage != null)\n            {\n                BackgroundThemeFile = chosenImage;\n            }\n        }\n\n        // Requires UI thread\n        private async Task DeleteBackgroundImageIfExistsAsync()\n        {\n            if (BackgroundThemeFile != null)\n            {\n                var imageFile = Model.BackgroundImage;\n\n                BackgroundThemeFile = null;\n\n                if (imageFile != null)\n                {\n                    await _imageFileSystemService.RemoveImportedImageAsync($\"{imageFile.Name}{imageFile.FileType}\")\n                        .ConfigureAwait(false);\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Utilities/TaskUtilities.cs",
    "content": "﻿using FluentTerminal.App.ViewModels.Infrastructure;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels.Utilities\n{\n    public static class TaskUtilities\n    {\n        #pragma warning disable RECS0165 // Asynchronous methods should return a Task instead of void\n        public static async void FireAndForgetSafeAsync(this Task task, IErrorHandler handler = null)\n        #pragma warning restore RECS0165 // Asynchronous methods should return a Task instead of void\n        {\n            try\n            {\n                await task;\n            }\n            catch (Exception ex)\n            {\n                handler?.HandleError(ex);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.App.ViewModels/Utilities/WebViewSpecialCharEncoder.cs",
    "content": "﻿namespace FluentTerminal.App.ViewModels.Utilities\n{\n    public static class WebViewSpecialCharEncoder\n    {\n        public static string Encode(string value)\n        {\n            return value.Replace(\"\\\"\", \"&quot;\").Replace(\"'\", \"&squo;\").Replace(\"\\\\\", \"&bsol;\");\n        }\n\n        public static string Decode(string value)\n        {\n            return value.Replace(\"&quot;\", \"\\\"\").Replace(\"&squo;\", \"'\").Replace(\"&bsol;\", \"\\\\\");\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Client/.gitignore",
    "content": "node_modules/\ndist/"
  },
  {
    "path": "FluentTerminal.Client/package.json",
    "content": "{\n  \"name\": \"fluent-terminal-client\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"src/index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"build\": \"xcopy /y /s node_modules\\\\xterm\\\\css\\\\xterm.css dist\\\\ && xcopy /y /s src\\\\style.css dist\\\\ && xcopy /y /s src\\\\index.html dist\\\\ && npx webpack --config webpack.config.js\"\n  },\n  \"author\": \"FS Apps\",\n  \"license\": \"GPL-3.0\",\n  \"devDependencies\": {\n    \"ts-loader\": \"^8.0.7\",\n    \"typescript\": \"^4.0.5\",\n    \"webpack\": \"^5.76.0\",\n    \"webpack-cli\": \"^4.9.2\"\n  },\n  \"dependencies\": {\n    \"xterm\": \"^4.18.0\",\n    \"xterm-addon-fit\": \"^0.5.0\",\n    \"xterm-addon-search\": \"^0.8.0\",\n    \"xterm-addon-serialize\": \"^0.6.2\",\n    \"xterm-addon-unicode11\": \"^0.3.0\",\n    \"xterm-addon-web-links\": \"^0.5.1\"\n  }\n}\n"
  },
  {
    "path": "FluentTerminal.Client/src/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n    <meta charset=\"UTF-8\">\n    <link rel=\"stylesheet\" href=\"xterm.css\" />\n    <link rel=\"stylesheet\" href=\"style.css\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">\n</head>\n\n<body>\n    <div id=\"terminal-container\"></div>\n    <script src=\"bundle.js\"></script>\n</body>\n\n</html>"
  },
  {
    "path": "FluentTerminal.Client/src/index.ts",
    "content": "import { Terminal, ITerminalOptions, ILinkMatcherOptions, FontWeight } from 'xterm';\nimport { FitAddon } from 'xterm-addon-fit';\nimport { SearchAddon } from 'xterm-addon-search';\nimport { WebLinksAddon } from 'xterm-addon-web-links';\nimport { SerializeAddon } from \"xterm-addon-serialize\";\nimport { Unicode11Addon } from \"xterm-addon-unicode11\";\n\ninterface ExtendedWindow extends Window {\n  keyBindings: any[];\n  term: Terminal;\n  terminalBridge: any;\n  hoveredUri: string;\n\n  createTerminal(options: any, theme: any, keyBindings: any): void;\n  connectToWebSocket(url: string): void;\n  changeTheme(theme: any): void;\n  changeOptions(options: any): void;\n  changeKeyBindings(keyBindings: any): void;\n  findNext(content: string, caseSensitive: boolean, wholeWord: boolean, regex: boolean): void;\n  findPrevious(content: string, caseSensitive: boolean, wholeWord: boolean, regex: boolean): void;\n  serializeTerminal() : void;\n  setFontSize(fontSize: number): void;\n}\n\ndeclare var window: ExtendedWindow;\n\nlet term: Terminal;\nlet fitAddon: FitAddon;\nlet searchAddon: SearchAddon;\nlet serializeAddon: SerializeAddon;\nlet webLinksAddon: WebLinksAddon;\nlet unicode11Addon: Unicode11Addon;\nlet altGrPressed = false;\nlet filterOutOpenSSHOutput = false;\n\nconst terminalContainer = document.getElementById('terminal-container');\n\nfunction replaceAll(searchString, replaceString, str) {\n  return str.split(searchString).join(replaceString);\n}\n\nfunction DecodeSpecialChars(data: string) {\n  data = replaceAll(\"&quot;\", \"\\\"\", data);\n  data = replaceAll(\"&squo;\", \"'\", data);\n  return replaceAll(\"&bsol;\", \"\\\\\", data);\n}\n\nwindow.setFontSize = (fontSize: number) => {\n  if (fontSize > 0) {\n    term.setOption('fontSize', fontSize);\n    fitAddon.fit();\n  }\n}\n\nwindow.serializeTerminal = () => {\n  let serialized = serializeAddon.serialize();\n  return serialized;\n}\n\nwindow.createTerminal = (options, theme, keyBindings) => {\n  while (terminalContainer.children.length) {\n    terminalContainer.removeChild(terminalContainer.children[0]);\n  }\n\n  theme = JSON.parse(theme);\n\n  window.keyBindings = JSON.parse(keyBindings);\n  window.hoveredUri = \"\";\n\n  options = JSON.parse(options);\n\n  setScrollBarStyle(options.scrollBarStyle);\n\n  var terminalOptions: ITerminalOptions = {\n    fontFamily: options.fontFamily,\n    fontSize: options.fontSize,\n    fontWeight: options.fontWeight,\n    fontWeightBold: convertBoldText(options.fontWeight),\n    cursorStyle: options.cursorStyle,\n    cursorBlink: options.cursorBlink,\n    bellStyle: options.bellStyle,\n    scrollback: options.scrollBackLimit,\n    allowTransparency: true,\n    theme: theme,\n    windowsMode: true,\n    wordSeparator: DecodeSpecialChars(options.wordSeparator)\n  };\n\n  term = new Terminal(terminalOptions);\n\n  const linkMatcherOptions: ILinkMatcherOptions = {\n    leaveCallback: () => {\n      window.hoveredUri = \"\";\n    },\n    tooltipCallback: (event: MouseEvent, uri: string) => {\n      window.hoveredUri = uri;\n    }\n  };\n\n  searchAddon = new SearchAddon();\n  term.loadAddon(searchAddon);\n  fitAddon = new FitAddon();\n  term.loadAddon(fitAddon);\n  serializeAddon = new SerializeAddon();\n  term.loadAddon(serializeAddon);\n  webLinksAddon = new WebLinksAddon((_, u) => window.open(u), linkMatcherOptions);\n  term.loadAddon(webLinksAddon);\n  unicode11Addon = new Unicode11Addon();\n  term.loadAddon(unicode11Addon);\n  term.unicode.activeVersion = '11';\n\n  window.term = term;\n\n  function stringToUint8Array(param: string) {\n    var str = unescape(encodeURIComponent(param));\n    var charList = str.split('');\n    var output = [];\n    for (var i = 0; i < charList.length; i++) {\n      output.push(charList[i].charCodeAt(0));\n    }\n    return new Uint8Array(output);\n  }\n\n  function uint8ArrayToString(param: Uint8Array) {\n    var encodedString = String.fromCharCode.apply(null, param);\n    return decodeURIComponent(escape(encodedString));\n  }\n\n  window.terminalBridge.onsessionrestart = ((param: string) => {\n    if (filterOutOpenSSHOutput == false) {\n      filterOutOpenSSHOutput = true;\n    }\n  });\n\n  window.terminalBridge.onoutput = (data => {\n    if (filterOutOpenSSHOutput == true) {\n      var str = uint8ArrayToString(data);\n      var sessionStarted = str.search(/(\\x1b\\[H\\x1b\\[\\?25h)|(\\x1b\\[2;1H\\x1b\\]0;OpenSSH SSH client)/u);\n\n      if (sessionStarted != -1) {\n        filterOutOpenSSHOutput = false;\n      }\n\n      // Filter out new line characters following by cursor movement CSIs X and C\n      str = replaceAll(/\\n\\x1b\\[\\d*X\\x1b\\[\\d*C/u, \"\", str);\n      // Filter out J (clear screen) CSIs and H (set cursor position) CSIs\n      str = replaceAll(/\\x1b\\[\\d*J/u, \"\", str);\n      // Filter out H (set cursor position) CSIs\n      str = replaceAll(/\\x1b\\[\\d*;?\\d*H/u, \"\", str);\n\n      data = stringToUint8Array(str);\n    }\n\n    term.writeUtf8(data);\n  });\n\n  window.terminalBridge.onpaste = (text => {\n    term.paste(text);\n  });\n\n  term.onData(data => {\n    window.terminalBridge.inputReceived(data);\n  });\n\n  term.onBinary(binary => {\n    window.terminalBridge.binaryReceived(binary);\n  });\n\n  term.onResize(({ cols, rows }) => {\n    window.terminalBridge.notifySizeChanged(cols, rows);\n  });\n\n  term.onTitleChange((title: string) => {\n    window.terminalBridge.notifyTitleChanged(title);\n  });\n\n  term.onSelectionChange(() => {\n    window.terminalBridge.notifySelectionChanged(term.getSelection());\n  });\n\n  term.open(terminalContainer);\n  fitAddon.fit();\n  term.focus();\n\n  setPadding(options.padding);\n\n  let resizeTimeout: NodeJS.Timeout;\n  window.onresize = function () {\n    clearTimeout(resizeTimeout);\n    resizeTimeout = setTimeout(() => fitAddon.fit(), 500);\n  }\n\n  window.onmouseup = (e) => {\n    if (e.button == 1) {\n      window.terminalBridge.notifyMiddleClick(e.clientX, e.clientY, term.hasSelection(), window.hoveredUri);\n    } else if (e.button == 2) {\n      window.terminalBridge.notifyRightClick(e.clientX, e.clientY, term.hasSelection(), window.hoveredUri);\n    }\n  }\n\n  window.onkeydown = (e) => {\n    // Disable WebView zooming to prevent crash on too small font size\n    if ((e.ctrlKey && !e.altKey && (e.keyCode === 189 || e.keyCode === 187)) ||\n        (e.ctrlKey && (e.key === \"Add\" || e.key === \"Subtract\"))) {\n      e.preventDefault();\n    }\n  }\n\n  window.addEventListener(\"wheel\", function(event){\n    // Disable WebView zooming to prevent crash on too small font size\n    if(event.ctrlKey){\n      event.preventDefault();\n    }\n  });\n\n  term.attachCustomKeyEventHandler(function (e) {\n    if (e.altKey && e.type === \"keydown\" && e.location === 2) {\n        altGrPressed = true;\n    } else if (e.altKey && e.type === \"keyup\" && e.key === \"Control\") {\n      altGrPressed = false\n    }\n\n    if (e.type != \"keydown\" || altGrPressed) {\n      return true;\n    }\n\n    for (var i = 0; i < window.keyBindings.length; i++) {\n      var keyBinding = window.keyBindings[i];\n      if (keyBinding.ctrl == e.ctrlKey\n        && keyBinding.meta == e.metaKey\n        && keyBinding.alt == e.altKey\n        && keyBinding.shift == e.shiftKey\n        && keyBinding.key == e.keyCode) {\n        if (document.visibilityState == 'visible') {\n          if (keyBinding.command == 'Copy' && term.getSelection() == '') {\n            return true;\n          }\n          if (keyBinding.command == 'Clear') {\n            term.clearSelection();\n            term.clear();\n            return false;\n          }\n          if (keyBinding.command == 'SelectAll') {\n            term.selectAll();\n            return false;\n          }\n          if (keyBinding.command == 'CloseSearch') {\n            return true;\n          }\n\n          e.preventDefault();\n          window.terminalBridge.invokeCommand(keyBinding.command);\n        }\n        return false;\n      }\n    }\n    return true;\n  });\n\n  window.terminalBridge.initialized();\n\n  return JSON.stringify({\n    rows: term.rows,\n    columns: term.cols\n  });\n}\n\nwindow.changeTheme = (theme) => {\n  theme = JSON.parse(theme);\n  term.setOption('theme', theme);\n}\n\nwindow.changeOptions = (options) => {\n  options = JSON.parse(options);\n\n  term.setOption('bellStyle', options.bellStyle);\n  term.setOption('cursorBlink', options.cursorBlink);\n  term.setOption('cursorStyle', options.cursorStyle);\n  term.setOption('fontFamily', options.fontFamily);\n  term.setOption('fontSize', options.fontSize);\n  term.setOption('fontWeight', options.fontWeight);\n  term.setOption('fontWeightBold', convertBoldText(options.fontWeight));\n  term.setOption('scrollback', options.scrollBackLimit);\n  term.setOption('wordSeparator', DecodeSpecialChars(options.wordSeparator));\n  setScrollBarStyle(options.scrollBarStyle);\n  setPadding(options.padding);\n}\n\nfunction setScrollBarStyle(scrollBarStyle) {\n  switch (scrollBarStyle) {\n    case 'hidden': return terminalContainer.style['-ms-overflow-style'] = 'none';\n    case 'autoHiding': return terminalContainer.style['-ms-overflow-style'] = '-ms-autohiding-scrollbar';\n    case 'visible': return terminalContainer.style['-ms-overflow-style'] = 'scrollbar';\n  }\n}\n\nfunction setPadding(padding) {\n  document.querySelector('.terminal')[\"style\"].padding = padding + 'px';\n  fitAddon.fit();\n}\n\nwindow.changeKeyBindings = (keyBindings) => {\n  keyBindings = JSON.parse(keyBindings);\n  window[\"keyBindings\"] = keyBindings;\n}\n\nwindow.findNext = (content: string, caseSensitive: boolean, wholeWord: boolean, regex: boolean) => {\n  searchAddon.findNext(content, { caseSensitive: caseSensitive, wholeWord: wholeWord, regex: regex });\n}\n\nwindow.findPrevious = (content: string, caseSensitive: boolean, wholeWord: boolean, regex: boolean) => {\n  searchAddon.findPrevious(content, { caseSensitive: caseSensitive, wholeWord: wholeWord, regex: regex });\n}\n\ndocument.oncontextmenu = function () {\n  return false;\n};\n\nfunction convertBoldText(fontWeight: FontWeight) : FontWeight {\n  return parseInt(fontWeight.toString()) > 600 ? '900' : 'bold';\n}"
  },
  {
    "path": "FluentTerminal.Client/src/style.css",
    "content": "* {\n    margin: 0;\n}\n\nhtml, body {\n    background: transparent;\n    height: 100%;\n    width: 100%;\n    overflow: hidden;\n    -ms-content-zooming: none;\n}\n\n#terminal-container {\n    width: 100%;\n    height: 100%;\n    /* re-enable scrolling only in the xterm container */\n    overflow-y: auto;\n    overflow-x: hidden;\n    touch-action: pan-y;\n    -ms-touch-action: pan-y;\n}\n\n.xterm .xterm-viewport {\n    background-color: transparent !important;\n}\n\n.terminal {\n    background: transparent !important;\n}"
  },
  {
    "path": "FluentTerminal.Client/tsconfig.json",
    "content": "{\n    \"compilerOptions\": {\n      \"outDir\": \"./dist/\",\n      \"module\": \"commonjs\",\n      \"target\": \"es5\",\n      \"allowJs\": true\n    }\n  }"
  },
  {
    "path": "FluentTerminal.Client/webpack.config.js",
    "content": "const path = require('path');\n\nmodule.exports = {\n  entry: './src/index.ts',\n  module: {\n    rules: [\n      {\n        test: /\\.tsx?$/,\n        use: 'ts-loader',\n        exclude: /node_modules/,\n      },\n    ],\n  },\n  resolve: {\n    extensions: [ '.tsx', '.ts', '.js' ],\n  },\n  output: {\n    filename: 'bundle.js',\n    path: path.resolve(__dirname, 'dist'),\n  },\n};"
  },
  {
    "path": "FluentTerminal.Models/ApplicationSettings.cs",
    "content": "﻿using FluentTerminal.Models.Enums;\n\nnamespace FluentTerminal.Models\n{\n    public class ApplicationSettings\n    {\n        public bool ConfirmClosingTabs { get; set; }\n        public bool ConfirmClosingWindows { get; set; }\n        public bool UnderlineSelectedTab { get; set; }\n        public InactiveTabColorMode InactiveTabColorMode { get; set; }\n        public NewTerminalLocation NewTerminalLocation { get; set; }\n        public bool TabWindowCascadingAppMenu { get; set; }\n        public TabsPosition TabsPosition { get; set; }\n        public bool CopyOnSelect { get; set; }\n        public MouseAction MouseMiddleClickAction { get; set; }\n        public MouseAction MouseRightClickAction { get; set; }\n        public bool ShowNewOutputIndicator { get; set; }\n        public bool EnableTrayIcon { get; set; }\n        public bool ShowCustomTitleInTitlebar { get; set; }\n        public bool UseMoshByDefault { get; set; }\n        public bool AutoFallbackToWindowsUsernameInLinks { get; set; }\n        public bool RTrimCopiedLines { get; set; }\n        public bool MuteTerminalBeeps { get; set; }\n        public bool EnableLogging { get; set; }\n        public bool PrintableOutputOnly { get; set; }\n        public string LogDirectoryPath { get; set; }\n        public bool UseConPty { get; set; }\n        public bool ShowTextCopied { get; set; }\n\n        public ApplicationSettings Clone() => new ApplicationSettings\n        {\n            ConfirmClosingTabs = ConfirmClosingTabs,\n            ConfirmClosingWindows = ConfirmClosingWindows,\n            UnderlineSelectedTab = UnderlineSelectedTab,\n            InactiveTabColorMode = InactiveTabColorMode,\n            NewTerminalLocation = NewTerminalLocation,\n            TabWindowCascadingAppMenu = TabWindowCascadingAppMenu,\n            TabsPosition = TabsPosition,\n            CopyOnSelect = CopyOnSelect,\n            MouseMiddleClickAction = MouseMiddleClickAction,\n            MouseRightClickAction = MouseRightClickAction,\n            ShowNewOutputIndicator = ShowNewOutputIndicator,\n            EnableTrayIcon = EnableTrayIcon,\n            ShowCustomTitleInTitlebar = ShowCustomTitleInTitlebar,\n            UseMoshByDefault = UseMoshByDefault,\n            AutoFallbackToWindowsUsernameInLinks = AutoFallbackToWindowsUsernameInLinks,\n            RTrimCopiedLines = RTrimCopiedLines,\n            MuteTerminalBeeps = MuteTerminalBeeps,\n            EnableLogging = EnableLogging,\n            PrintableOutputOnly = PrintableOutputOnly,\n            LogDirectoryPath = LogDirectoryPath,\n            UseConPty = UseConPty,\n            ShowTextCopied = ShowTextCopied\n        };\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/BellStyle.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum BellStyle\n    {\n        None,\n        Sound\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/Command.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum Command\n    {\n        ToggleWindow,\n        NextTab,\n        PreviousTab,\n        NewTab,\n        NewWindow,\n        NewSshTab,\n        NewSshWindow,\n        NewCustomCommandTab, \n        NewCustomCommandWindow,\n        ChangeTabTitle,\n        CloseTab,\n        ShowSettings,\n        Copy,\n        Paste,\n        PasteWithoutNewlines,\n        Search,\n        CloseSearch,\n        ToggleFullScreen,\n        SelectAll,\n        Clear,\n        SwitchToTerm1,\n        SwitchToTerm2,\n        SwitchToTerm3,\n        SwitchToTerm4,\n        SwitchToTerm5,\n        SwitchToTerm6,\n        SwitchToTerm7,\n        SwitchToTerm8,\n        SwitchToTerm9,\n        DuplicateTab,\n        ReconnectTab,\n        IncreaseFontSize,\n        DecreaseFontSize,\n        ResetFontSize\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/CursorStyle.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum CursorStyle\n    {\n        Block,\n        Underline,\n        Bar\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/ExtendedVirtualKey.cs",
    "content": "﻿using System.ComponentModel;\n\nnamespace FluentTerminal.Models.Enums\n{\n    public enum ExtendedVirtualKey\n    {\n        None = 0,\n        LeftButton = 1,\n        RightButton = 2,\n        Cancel = 3,\n        MiddleButton = 4,\n        XButton1 = 5,\n        XButton2 = 6,\n        Back = 8,\n        Tab = 9,\n        Clear = 12,\n        Enter = 13,\n        Shift = 16,\n        Control = 17,\n        Menu = 18,\n        Pause = 19,\n        CapitalLock = 20,\n        Kana = 21,\n        Hangul = 21,\n        Junja = 23,\n        Final = 24,\n        Hanja = 25,\n        Kanji = 25,\n        Escape = 27,\n        Convert = 28,\n        NonConvert = 29,\n        Accept = 30,\n        ModeChange = 31,\n        Space = 32,\n        PageUp = 33,\n        PageDown = 34,\n        End = 35,\n        Home = 36,\n        Left = 37,\n        Up = 38,\n        Right = 39,\n        Down = 40,\n        Select = 41,\n        Print = 42,\n        Execute = 43,\n        Snapshot = 44,\n        Insert = 45,\n        Delete = 46,\n        Help = 47,\n\n        [Description(\"0\")]\n        Number0 = 48,\n\n        [Description(\"1\")]\n        Number1 = 49,\n\n        [Description(\"2\")]\n        Number2 = 50,\n\n        [Description(\"3\")]\n        Number3 = 51,\n\n        [Description(\"4\")]\n        Number4 = 52,\n\n        [Description(\"5\")]\n        Number5 = 53,\n\n        [Description(\"6\")]\n        Number6 = 54,\n\n        [Description(\"7\")]\n        Number7 = 55,\n\n        [Description(\"8\")]\n        Number8 = 56,\n\n        [Description(\"9\")]\n        Number9 = 57,\n\n        A = 65,\n        B = 66,\n        C = 67,\n        D = 68,\n        E = 69,\n        F = 70,\n        G = 71,\n        H = 72,\n        I = 73,\n        J = 74,\n        K = 75,\n        L = 76,\n        M = 77,\n        N = 78,\n        O = 79,\n        P = 80,\n        Q = 81,\n        R = 82,\n        S = 83,\n        T = 84,\n        U = 85,\n        V = 86,\n        W = 87,\n        X = 88,\n        Y = 89,\n        Z = 90,\n        LeftWindows = 91,\n        RightWindows = 92,\n        Application = 93,\n        Sleep = 95,\n        NumberPad0 = 96,\n        NumberPad1 = 97,\n        NumberPad2 = 98,\n        NumberPad3 = 99,\n        NumberPad4 = 100,\n        NumberPad5 = 101,\n        NumberPad6 = 102,\n        NumberPad7 = 103,\n        NumberPad8 = 104,\n        NumberPad9 = 105,\n        Multiply = 106,\n        Add = 107,\n        Separator = 108,\n        Subtract = 109,\n        Decimal = 110,\n        Divide = 111,\n        F1 = 112,\n        F2 = 113,\n        F3 = 114,\n        F4 = 115,\n        F5 = 116,\n        F6 = 117,\n        F7 = 118,\n        F8 = 119,\n        F9 = 120,\n        F10 = 121,\n        F11 = 122,\n        F12 = 123,\n        F13 = 124,\n        F14 = 125,\n        F15 = 126,\n        F16 = 127,\n        F17 = 128,\n        F18 = 129,\n        F19 = 130,\n        F20 = 131,\n        F21 = 132,\n        F22 = 133,\n        F23 = 134,\n        F24 = 135,\n        NavigationView = 136,\n        NavigationMenu = 137,\n        NavigationUp = 138,\n        NavigationDown = 139,\n        NavigationLeft = 140,\n        NavigationRight = 141,\n        NavigationAccept = 142,\n        NavigationCancel = 143,\n        NumberKeyLock = 144,\n        Scroll = 145,\n        LeftShift = 160,\n        RightShift = 161,\n        LeftControl = 162,\n        RightControl = 163,\n        LeftMenu = 164,\n        RightMenu = 165,\n        GoBack = 166,\n        GoForward = 167,\n        Refresh = 168,\n        Stop = 169,\n        Search = 170,\n        Favorites = 171,\n        GoHome = 172,\n        VolumeMute = 173,\n        VolumeDown = 174,\n        VolumeUp = 175,\n        MediaNext = 176,\n        MediaPrevious = 177,\n        MediaStop = 178,\n        MediaPlayPause = 179,\n\n        [Description(\";\")]\n        OEM_1 = 186,\n\n        [Description(\"+\")]\n        Plus = 187,\n\n        [Description(\",\")]\n        Comma = 188,\n\n        [Description(\"-\")]\n        Minus = 189,\n\n        [Description(\".\")]\n        Period = 190,\n\n        [Description(\"/\")]\n        OEM_2 = 191,\n\n        [Description(\"`\")]\n        OEM_3 = 192,\n\n        GamepadA = 195,\n        GamepadB = 196,\n        GamepadX = 197,\n        GamepadY = 198,\n        GamepadRightShoulder = 199,\n        GamepadLeftShoulder = 200,\n        GamepadLeftTrigger = 201,\n        GamepadRightTrigger = 202,\n        GamepadDPadUp = 203,\n        GamepadDPadDown = 204,\n        GamepadDPadLeft = 205,\n        GamepadDPadRight = 206,\n        GamepadMenu = 207,\n        GamepadView = 208,\n        GamepadLeftThumbstickButton = 209,\n        GamepadRightThumbstickButton = 210,\n        GamepadLeftThumbstickUp = 211,\n        GamepadLeftThumbstickDown = 212,\n        GamepadLeftThumbstickRight = 213,\n        GamepadLeftThumbstickLeft = 214,\n        GamepadRightThumbstickUp = 215,\n        GamepadRightThumbstickDown = 216,\n        GamepadRightThumbstickRight = 217,\n        GamepadRightThumbstickLeft = 218,\n\n        [Description(\"[\")]\n        OEM_4 = 219,\n\n        [Description(@\"\\\")]\n        OEM_5 = 220,\n\n        [Description(\"]\")]\n        OEM_6 = 221,\n\n        [Description(\"'\")]\n        OEM_7 = 222,\n\n        [Description(\"<\")]\n        OEM_102 = 226\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/InactiveTabColorMode.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum InactiveTabColorMode\n    {\n        Background,\n        Underlined\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Enums/MouseAction.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum MouseAction\n    {\n        None,\n        ContextMenu,\n        Paste,\n        CopySelectionOrPaste\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/NewTerminalLocation.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum NewTerminalLocation\n    {\n        Tab,\n        Window\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/ScrollBarStyle.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum ScrollBarStyle\n    {\n        Hidden,\n        AutoHiding,\n        Visible\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Enums/SessionType.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum SessionType\n    {\n        Unknown,\n        WinPty,\n        ConPty\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Enums/StartupTaskStatus.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    // Mirrors Windows.ApplicationModel.StartupTaskState\n    public enum StartupTaskStatus\n    {\n        Disabled = 0,\n        DisabledByUser = 1,\n        Enabled = 2,\n        DisabledByPolicy = 3,\n        EnabledByPolicy = 4\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Enums/TabThemeKey.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum TabThemeKey\n    {\n        Background,\n        BackgroundPointerOver,\n        BackgroundPressed,\n        BackgroundSelected,\n        BackgroundSelectedPointerOver,\n        BackgroundSelectedPressed\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Enums/TabsPosition.cs",
    "content": "﻿namespace FluentTerminal.Models.Enums\n{\n    public enum TabsPosition\n    {\n        Top,\n        Bottom\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/ExecutedCommand.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models\n{\n    public class ExecutedCommand\n    {\n        public string Value { get; set; }\n\n        public Guid? ProfileId { get; set; }\n\n        public DateTime LastExecution { get; set; }\n\n        public int ExecutionCount { get; set; }\n\n        public ShellProfile ShellProfile { get; set; }\n\n        public ExecutedCommand Clone() => new ExecutedCommand\n        {\n            Value = Value, ProfileId = ProfileId, LastExecution = LastExecution, ExecutionCount = ExecutionCount,\n            ShellProfile = ShellProfile?.Clone()\n        };\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/ExportedTerminalTheme.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace FluentTerminal.Models\n{\n    public class ExportedTerminalTheme : TerminalTheme\n    {\n        public ExportedTerminalTheme()\n        {\n        }\n\n        public ExportedTerminalTheme(TerminalTheme other, string encodedImage)\n            : base(other)\n        {\n            EncodedImage = encodedImage;\n        }\n\n        public string EncodedImage { get; set; }\n\n        public override bool Equals(object obj)\n        {\n            return obj is ExportedTerminalTheme theme &&\n                   base.Equals(obj) &&\n                   EncodedImage == theme.EncodedImage;\n        }\n\n        public override int GetHashCode()\n        {\n            return -1751912210 + EqualityComparer<string>.Default.GetHashCode(EncodedImage);\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/File.cs",
    "content": "﻿using System.IO;\n\nnamespace FluentTerminal.Models\n{\n    public class File\n    {\n        public File(string name, string fileType, string path, Stream content)\n        {\n            Name = name;\n            FileType = fileType;\n            Path = path;\n            Content = content;\n        }\n\n        public string Name { get; }\n        public string FileType { get; }\n        public string Path { get; }\n        public Stream Content { get; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/FluentTerminal.Models.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.Bcl.HashCode\" Version=\"1.1.1\" />\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.2\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "FluentTerminal.Models/IMessage.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public interface IMessage\n    {\n        byte Identifier { get; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/ImageFile.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace FluentTerminal.Models\n{\n    public class ImageFile\n    {\n        public ImageFile(string name,\n                         string fileType,\n                         string path)\n        {\n            Name = name;\n            FileType = fileType;\n            Path = path;\n        }\n\n        public string Name { get; }\n        public string FileType { get; }\n        public string Path { get; }\n\n        public override bool Equals(object obj)\n        {\n            return obj is ImageFile file &&\n                   Name == file.Name &&\n                   FileType == file.FileType &&\n                   Path == file.Path;\n        }\n\n        public override int GetHashCode()\n        {\n            var hashCode = -596750737;\n            hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Name);\n            hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(FileType);\n            hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Path);\n            return hashCode;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/KeyBinding.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models\n{\n    public class KeyBinding\n    {\n        public KeyBinding()\n        {\n\n        }\n\n        public KeyBinding(KeyBinding other)\n        {\n            Command = other.Command;\n            Key = other.Key;\n            Ctrl = other.Ctrl;\n            Alt = other.Alt;\n            Shift = other.Shift;\n            Meta = other.Meta;\n        }\n\n        public string Command { get; set; }\n        public int Key { get; set; }\n        public bool Ctrl { get; set; }\n        public bool Alt { get; set; }\n        public bool Shift { get; set; }\n        public bool Meta { get; set; }\n\n        public override bool Equals(object obj)\n        {\n            if (obj is KeyBinding other)\n            {\n                return other.Command.Equals(Command)\n                    && other.Key == Key\n                    && other.Ctrl == Ctrl\n                    && other.Alt == Alt\n                    && other.Shift == Shift\n                    && other.Meta == Meta;\n            }\n            return false;\n        }\n\n        public override int GetHashCode()\n        {\n            return HashCode.Combine(Command, Key, Ctrl, Alt, Shift, Meta);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/MessageIdentifiers.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public enum MessageIdentifiers : byte\n    {\n        WriteDataMessage = 0,\n        CreateTerminalRequest = 1,\n        GetUserNameRequest = 2,\n        ResizeTerminalRequest = 3,\n        SaveTextFileRequest = 4,\n        SetToggleWindowKeyBindingsRequest = 5,\n        TerminalExitedRequest = 6,\n        CommonResponse = 7,\n        CreateTerminalResponse = 8,\n        StringValueResponse = 9,\n        CheckFileExistsRequest = 10,\n        GetSshConfigFolderRequest = 11,\n        GetSshConfigFolderResponse = 12,\n        MuteTerminalRequest = 13,\n        UpdateSettingsRequest = 14,\n        GetCommandPathRequest = 15,\n        PauseTerminalOutputRequest = 16,\n        PauseTerminalOutputResponse = 17,\n        QuitApplicationRequest = 18,\n        ReadTextFileRequest = 19\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/MessageKeys.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public static class MessageKeys\n    {\n        public static string Type => \"T\";\n\n        public static string Content => \"C\";\n\n        public static string TerminalId => \"I\";\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/ApplicationSettingsChangedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class ApplicationSettingsChangedMessage\n    {\n        public ApplicationSettings ApplicationSettings { get; }\n\n        public ApplicationSettingsChangedMessage(ApplicationSettings applicationSettings)\n        {\n            ApplicationSettings = applicationSettings ?? throw new ArgumentNullException(nameof(applicationSettings));\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/CommandHistoryChangedMessage.cs",
    "content": "﻿namespace FluentTerminal.Models.Messages\n{\n    public class CommandHistoryChangedMessage\n    {\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/CurrentThemeChangedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class CurrentThemeChangedMessage\n    {\n        public Guid ThemeId { get; }\n\n        public CurrentThemeChangedMessage(Guid themeId)\n        {\n            ThemeId = themeId;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/DefaultShellProfileChangedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class DefaultShellProfileChangedMessage\n    {\n        public Guid NewDefaultProfileId { get; }\n\n        public DefaultShellProfileChangedMessage(Guid newDefaultProfileId) => NewDefaultProfileId = newDefaultProfileId;\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/KeyBindingsChangedMessage.cs",
    "content": "﻿namespace FluentTerminal.Models.Messages\n{\n    public class KeyBindingsChangedMessage\n    {\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/ShellProfileAddedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class ShellProfileAddedMessage\n    {\n        public ShellProfile ShellProfile { get; }\n\n        public ShellProfileAddedMessage(ShellProfile shellProfile)\n        {\n            ShellProfile = shellProfile ?? throw new ArgumentNullException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/ShellProfileChangedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class ShellProfileChangedMessage\n    {\n        public ShellProfile ShellProfile { get; }\n\n        public ShellProfileChangedMessage(ShellProfile shellProfile)\n        {\n            ShellProfile = shellProfile ?? throw new ArgumentNullException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/ShellProfileDeletedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class ShellProfileDeletedMessage\n    {\n        public Guid ProfileId { get; }\n\n        public ShellProfileDeletedMessage(Guid profileId)\n        {\n            ProfileId = profileId;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/TerminalOptionsChangedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class TerminalOptionsChangedMessage\n    {\n        public TerminalOptions TerminalOptions { get; }\n\n        public TerminalOptionsChangedMessage(TerminalOptions terminalOptions)\n        {\n            TerminalOptions = terminalOptions ?? throw new ArgumentNullException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/ThemeAddedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class ThemeAddedMessage\n    {\n        public TerminalTheme Theme { get; }\n\n        public ThemeAddedMessage(TerminalTheme theme)\n        {\n            Theme = theme ?? throw new ArgumentNullException();\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Messages/ThemeDeletedMessage.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models.Messages\n{\n    public class ThemeDeletedMessage\n    {\n        public Guid ThemeId { get; }\n\n        public ThemeDeletedMessage(Guid themeId)\n        {\n            ThemeId = themeId;\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/CheckFileExistsRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class CheckFileExistsRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.CheckFileExistsRequest;\n\n        public string Path { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/CreateTerminalRequest.cs",
    "content": "﻿using FluentTerminal.Models.Enums;\n\nnamespace FluentTerminal.Models.Requests\n{\n    public class CreateTerminalRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.CreateTerminalRequest;\n\n        public byte Id { get; set; }\n        public TerminalSize Size { get; set; }\n        public ShellProfile Profile { get; set; }\n        public SessionType SessionType { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/GetCommandPathRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class GetCommandPathRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.GetCommandPathRequest;\n\n        public string Command { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/GetSshConfigFolderRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class GetSshConfigFolderRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.GetSshConfigFolderRequest;\n\n        public bool IncludeContent { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/GetUserNameRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\r\n{\r\n    public class GetUserNameRequest : IMessage\r\n    {\r\n        public byte Identifier => (byte) MessageIdentifiers.GetUserNameRequest;\r\n    }\r\n}\r\n"
  },
  {
    "path": "FluentTerminal.Models/Requests/MuteTerminalRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class MuteTerminalRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.MuteTerminalRequest;\n\n        public bool Mute { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Requests/PauseTerminalOutputRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class PauseTerminalOutputRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.PauseTerminalOutputRequest;\n\n        public bool Pause { get; set; }\n\n        public byte Id { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/QuitApplicationRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class QuitApplicationRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.QuitApplicationRequest;\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Requests/ReadTextFileRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class ReadTextFileRequest : IMessage\n    {\n        public byte Identifier => (byte)MessageIdentifiers.ReadTextFileRequest;\n\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Requests/ResizeTerminalRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class ResizeTerminalRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.ResizeTerminalRequest;\n\n        public byte TerminalId { get; set; }\n\n        public TerminalSize NewSize { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/SaveTextFileRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\r\n{\r\n    public class SaveTextFileRequest : IMessage\r\n    {\r\n        public byte Identifier => (byte) MessageIdentifiers.SaveTextFileRequest;\r\n\r\n        public string Path { get; set; }\r\n\r\n        public string Content { get; set; }\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/SetToggleWindowKeyBindingsRequest.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace FluentTerminal.Models.Requests\n{\n    public class SetToggleWindowKeyBindingsRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.SetToggleWindowKeyBindingsRequest;\n\n        public IEnumerable<KeyBinding> KeyBindings { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/TerminalExitedRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class TerminalExitedRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.TerminalExitedRequest;\n\n        public byte TerminalId { get; set; }\n        public int ExitCode { get; set; }\n\n        public TerminalExitedRequest(byte terminalId, int exitCode)\n        {\n            TerminalId = terminalId;\n            ExitCode = exitCode;\n        }\n\n        public TerminalExitedRequest(byte terminalId)\n        {\n            TerminalId = terminalId;\n            ExitCode = -1;\n        }\n\n        public TerminalExitedRequest()\n        {\n        }\n\n        public TerminalExitedRequest(TerminalExitStatus status)\n        {\n            TerminalId = status.TerminalId;\n            ExitCode = status.ExitCode;\n        }\n\n        public TerminalExitStatus ToStatus()\n        {\n            return new TerminalExitStatus(TerminalId, ExitCode);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Requests/UpdateSettingsRequest.cs",
    "content": "﻿namespace FluentTerminal.Models.Requests\n{\n    public class UpdateSettingsRequest : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.UpdateSettingsRequest;\n\n        public ApplicationSettings Settings { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/Responses/CommonResponse.cs",
    "content": "﻿namespace FluentTerminal.Models.Responses\r\n{\r\n    public class CommonResponse : TerminalResponse\r\n    {\r\n        public override byte Identifier => (byte) MessageIdentifiers.CommonResponse;\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.Models/Responses/CreateTerminalResponse.cs",
    "content": "﻿namespace FluentTerminal.Models.Responses\n{\n    public class CreateTerminalResponse : TerminalResponse\n    {\n        public override byte Identifier => (byte) MessageIdentifiers.CreateTerminalResponse;\n\n        public string Name { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Responses/GetSshConfigFolderResponse.cs",
    "content": "﻿namespace FluentTerminal.Models.Responses\n{\n    public class GetSshConfigFolderResponse : IMessage\n    {\n        public byte Identifier => (byte) MessageIdentifiers.GetSshConfigFolderResponse;\n\n        public bool Success { get; set; }\n\n        public string Error { get; set; }\n\n        public string Path { get; set; }\n\n        public string[] Files { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Responses/PauseTerminalOutputResponse.cs",
    "content": "﻿namespace FluentTerminal.Models.Responses\n{\n    public class PauseTerminalOutputResponse : TerminalResponse\n    {\n        public override byte Identifier => (byte) MessageIdentifiers.PauseTerminalOutputResponse;\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Responses/StringValueResponse.cs",
    "content": "﻿namespace FluentTerminal.Models.Responses\n{\n    public class StringValueResponse : CommonResponse\n    {\n        public override byte Identifier => (byte) MessageIdentifiers.StringValueResponse;\n\n        public string Value { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/Responses/TerminalResponse.cs",
    "content": "﻿namespace FluentTerminal.Models.Responses\n{\n    public abstract class TerminalResponse : IMessage\n    {\n        public abstract byte Identifier { get; }\n        public bool Success { get; set; }\n        public string Error { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/SearchRequest.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public class SearchRequest\n    {\n        public string Term { get; set; }\n        public bool MatchCase { get; set; }\n        public bool WholeWord { get; set; }\n        public bool Regex { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/ShellProfile.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Text.RegularExpressions;\r\nusing System.Linq;\r\nusing Newtonsoft.Json;\r\n\r\nnamespace FluentTerminal.Models\r\n{\r\n    public class ShellProfile\r\n    {\r\n        /// <summary>\r\n        /// Replace all instances of anything resembling a newline, treating pairs of \\r\\n in either order as a single linebreak.\r\n        /// </summary>\r\n        public static readonly Regex NewlinePattern = new Regex(@\"\\n\\r|\\r\\n|\\r|\\n\", RegexOptions.Compiled);\r\n        public const int CurrentMigrationVersion = 1;\r\n\r\n        public ShellProfile()\r\n        {\r\n\r\n        }\r\n\r\n        protected ShellProfile(ShellProfile other)\r\n        {\r\n            Id = other.Id;\r\n            PreInstalled = other.PreInstalled;\r\n            Name = other.Name;\r\n            Arguments = other.Arguments;\r\n            Location = other.Location;\r\n            WorkingDirectory = other.WorkingDirectory;\r\n            TabThemeId = other.TabThemeId;\r\n            TerminalThemeId = other.TerminalThemeId;\r\n            UseConPty = other.UseConPty;\r\n            UseBuffer = other.UseBuffer;\r\n            KeyBindings = other.KeyBindings.Select(x => new KeyBinding(x)).ToList();\r\n        }\r\n\r\n        public Guid Id { get; set; }\r\n        public bool PreInstalled { get; set; }\r\n        public string Name { get; set; }\r\n        public string Arguments { get; set; }\r\n        public string Location { get; set; }\r\n        public string WorkingDirectory { get; set; }\r\n        public int TabThemeId { get; set; }\r\n        public Dictionary<string, string> EnvironmentVariables { get; set; } = new Dictionary<string, string>();\r\n        public bool UseConPty { get; set; }\r\n        public bool UseBuffer { get; set; } = true;\r\n\r\n        public int MigrationVersion { get; set; } = CurrentMigrationVersion;\r\n\r\n        /// <summary>\r\n        /// For attaching a data to the profile. This property doesn't get serialized nor cloned.\r\n        /// </summary>\r\n        [JsonIgnore]\r\n        public object Tag { get; set; }\r\n\r\n        public Guid TerminalThemeId { get; set; }\r\n        public ICollection<KeyBinding> KeyBindings { get; set; } = new List<KeyBinding>();\r\n\r\n        public virtual bool EqualTo(ShellProfile other)\r\n        {\r\n            if (other == null)\r\n            {\r\n                return false;\r\n            }\r\n\r\n            if (ReferenceEquals(this, other))\r\n            {\r\n                return true;\r\n            }\r\n\r\n            return other.Id.Equals(Id)\r\n                   && other.PreInstalled.Equals(PreInstalled)\r\n                   && other.Name.NullableEqualTo(Name)\r\n                   && other.Arguments.NullableEqualTo(Arguments)\r\n                   && other.Location.NullableEqualTo(Location)\r\n                   && other.WorkingDirectory.NullableEqualTo(WorkingDirectory)\r\n                   && other.TabThemeId.Equals(TabThemeId)\r\n                   && other.TerminalThemeId.Equals(TerminalThemeId)\r\n                   && other.UseConPty == UseConPty\r\n                   && other.UseBuffer == UseBuffer\r\n                   && other.KeyBindings.SequenceEqual(KeyBindings);\r\n        }\r\n\r\n        public virtual ShellProfile Clone() => new ShellProfile(this);\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.Models/SshProfile.cs",
    "content": "﻿using System.Linq;\n\nnamespace FluentTerminal.Models\n{\n    public class SshProfile : ShellProfile\n    {\n        #region Constants\n\n        public const ushort DefaultSshPort = 22;\n        public const ushort DefaultMoshPortsFrom = 60001;\n        public const ushort DefaultMoshPortsTo = 60999;\n\n        #endregion Constants\n\n        #region Properties\n\n        public string Host { get; set; }\n\n        public ushort SshPort { get; set; } = DefaultSshPort;\n\n        public string Username { get; set; }\n\n        public string IdentityFile { get; set; }\n\n        public bool UseMosh { get; set; }\n\n        public ushort MoshPortFrom { get; set; } = DefaultMoshPortsFrom;\n\n        public ushort MoshPortTo { get; set; } = DefaultMoshPortsTo;\n\n        #endregion Properties\n\n        #region Constructors\n\n        public SshProfile(bool conPtyAvailable)\n        {\n            UseConPty = conPtyAvailable;\n        }\n\n        /// <summary>\n        /// for Serializer only\n        /// </summary>\n        public SshProfile()\n        {\n        }\n\n        public bool RequestConPty\n        {\n            set\n            {\n                UseConPty = UseConPty && value;\n            }\n        }\n\n        protected SshProfile(SshProfile other) : base(other)\n        {\n            Host = other.Host;\n            SshPort = other.SshPort;\n            Username = other.Username;\n            IdentityFile = other.IdentityFile;\n            UseMosh = other.UseMosh;\n            MoshPortFrom = other.MoshPortFrom;\n            MoshPortTo = other.MoshPortTo;\n            TerminalThemeId = other.TerminalThemeId;\n            TabThemeId = other.TabThemeId;\n            KeyBindings = other.KeyBindings.Select(x => new KeyBinding(x)).ToList();\n        }\n\n        #endregion Constructors\n\n        #region Methods\n\n        public override bool EqualTo(ShellProfile other)\n        {\n            if (!(other is SshProfile otherSsh) || !base.EqualTo(other))\n            {\n                return false;\n            }\n\n            if (ReferenceEquals(this, otherSsh))\n            {\n                return true;\n            }\n\n            return otherSsh.Host.NullableEqualTo(Host)\n                   && otherSsh.SshPort.Equals(SshPort)\n                   && otherSsh.Username.NullableEqualTo(Username)\n                   && otherSsh.IdentityFile.NullableEqualTo(IdentityFile)\n                   && otherSsh.UseMosh.Equals(UseMosh)\n                   && otherSsh.MoshPortFrom.Equals(MoshPortFrom)\n                   && otherSsh.MoshPortTo.Equals(MoshPortTo);\n        }\n\n        public override ShellProfile Clone() => new SshProfile(this);\n\n        #endregion Methods\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/StringExtensions.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.Text.RegularExpressions;\r\n\r\nnamespace FluentTerminal.Models\r\n{\r\n    public static class StringExtensions\r\n    {\r\n        private static readonly Regex RxNonWhiteSpace = new Regex(@\"\\S+\", RegexOptions.Compiled);\r\n\r\n        /// <summary>\r\n        /// Compares two strings for equality, but assumes that null string is equal to an empty string.\r\n        /// </summary>\r\n        public static bool NullableEqualTo(this string original, string other,\r\n            StringComparison stringComparison = StringComparison.Ordinal) => string.IsNullOrEmpty(original)\r\n            ? string.IsNullOrEmpty(other)\r\n            : original.Equals(other, stringComparison);\r\n\r\n        /// <summary>\r\n        /// Splits input text into words, by splitting at white-space characters. It doesn't take care about quotes.\r\n        /// </summary>\r\n        public static IEnumerable<string> SplitWords(this string text)\r\n        {\r\n            if (string.IsNullOrWhiteSpace(text))\r\n            {\r\n                yield break;\r\n            }\r\n\r\n            foreach (Match match in RxNonWhiteSpace.Matches(text.Trim()))\r\n            {\r\n                yield return match.Value;\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.Models/TabTheme.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public class TabTheme\n    {\n        public int Id { get; set; }\n        public string Name { get; set; }\n        public string Color { get; set; }\n        public double BackgroundOpacity { get; set; } = 0.35;\n        public double BackgroundPointerOverOpacity { get; set; } = 0.4;\n        public double BackgroundPressedOpacity { get; set; } = 0.45;\n        public double BackgroundSelectedOpacity { get; set; } = 0.7;\n        public double BackgroundSelectedPointerOverOpacity { get; set; } = 0.8;\n        public double BackgroundSelectedPressedOpacity { get; set; } = 0.9;\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/TerminalColors.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models\n{\n    public class TerminalColors\n    {\n        public string Foreground { get; set; }\n        public string Background { get; set; }\n        public string Cursor { get; set; }\n        public string CursorAccent { get; set; }\n        public string Selection { get; set; }\n        public string SelectionForeground { get; set; }\n        public string SelectionBackground { get; set; }\n\n        public string Black { get; set; }\n        public string Red { get; set; }\n        public string Green { get; set; }\n        public string Yellow { get; set; }\n        public string Blue { get; set; }\n        public string Magenta { get; set; }\n        public string Cyan { get; set; }\n        public string White { get; set; }\n\n        public string BrightBlack { get; set; }\n        public string BrightRed { get; set; }\n        public string BrightGreen { get; set; }\n        public string BrightYellow { get; set; }\n        public string BrightBlue { get; set; }\n        public string BrightMagenta { get; set; }\n        public string BrightCyan { get; set; }\n        public string BrightWhite { get; set; }\n\n        public TerminalColors()\n        {\n        }\n\n        public TerminalColors(TerminalColors other)\n        {\n            Foreground = other.Foreground;\n            Background = other.Background;\n            Cursor = other.Cursor;\n            CursorAccent = other.CursorAccent;\n            Selection = other.Selection;\n\n            Black = other.Black;\n            Red = other.Red;\n            Green = other.Green;\n            Yellow = other.Yellow;\n            Blue = other.Blue;\n            Magenta = other.Magenta;\n            Cyan = other.Cyan;\n            White = other.White;\n\n            BrightBlack = other.BrightBlack;\n            BrightRed = other.BrightRed;\n            BrightGreen = other.BrightGreen;\n            BrightYellow = other.BrightYellow;\n            BrightBlue = other.BrightBlue;\n            BrightMagenta = other.BrightMagenta;\n            BrightCyan = other.BrightCyan;\n            BrightWhite = other.BrightWhite;\n        }\n\n        public override bool Equals(object obj)\n        {\n            if (obj is TerminalColors other)\n            {\n                return other.Foreground.Equals(Foreground)\n                    && other.Background.Equals(Background)\n                    && other.Cursor.Equals(Cursor)\n                    && other.CursorAccent.Equals(CursorAccent)\n                    && other.Selection.Equals(Selection)\n                    && other.Black.Equals(Black)\n                    && other.Red.Equals(Red)\n                    && other.Green.Equals(Green)\n                    && other.Yellow.Equals(Yellow)\n                    && other.Blue.Equals(Blue)\n                    && other.Magenta.Equals(Magenta)\n                    && other.Cyan.Equals(Cyan)\n                    && other.White.Equals(White)\n                    && other.BrightBlack.Equals(BrightBlack)\n                    && other.BrightRed.Equals(BrightRed)\n                    && other.BrightGreen.Equals(BrightGreen)\n                    && other.BrightYellow.Equals(BrightYellow)\n                    && other.BrightBlue.Equals(BrightBlue)\n                    && other.BrightMagenta.Equals(BrightMagenta)\n                    && other.BrightCyan.Equals(BrightCyan)\n                    && other.BrightWhite.Equals(BrightWhite);\n            }\n            return false;\n        }\n\n        public override int GetHashCode()\n        {\n            return HashCode.Combine(\n                HashCode.Combine(Foreground, Background, Cursor, CursorAccent, Selection),\n                HashCode.Combine(Black, Red, Green, Yellow, Blue, Magenta, Cyan, White),\n                HashCode.Combine(BrightBlack, BrightRed, BrightGreen, BrightYellow, BrightBlue, BrightMagenta, BrightCyan, BrightWhite)\n            );\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/TerminalExitStatus.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public class TerminalExitStatus\n    {\n        public TerminalExitStatus(byte terminalId, int exitCode)\n        {\n            TerminalId = terminalId;\n            ExitCode = exitCode;\n        }\n\n        public byte TerminalId { get; set; }\n        public int ExitCode { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/TerminalOptions.cs",
    "content": "﻿using FluentTerminal.Models.Enums;\n\nnamespace FluentTerminal.Models\n{\n    public class TerminalOptions\n    {\n        public string FontFamily { get; set; }\n\n        public int FontSize { get; set; }\n\n        public int FontWeight { get; set; }\n\n        public CursorStyle CursorStyle { get; set; }\n\n        public bool CursorBlink { get; set; }\n\n        public BellStyle BellStyle { get; set; }\n\n        public ScrollBarStyle ScrollBarStyle { get; set; }\n\n        public double BackgroundOpacity { get; set; }\n\n        public bool UseAcrylicBackground { get; set; }\n\n        public int Padding { get; set; }\n\n        public uint ScrollBackLimit { get; set; }\n\n        public string WordSeparator { get; set; }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/TerminalOutput.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public class TerminalOutput\n    {\n        public byte TerminalId { get; set; }\n        public byte[] Data { get; set; }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.Models/TerminalSize.cs",
    "content": "﻿namespace FluentTerminal.Models\n{\n    public class TerminalSize\n    {\n        public int Columns { get; set; }\n\n        public int Rows { get; set; }\n\n        public bool EquivalentTo(TerminalSize other) => ReferenceEquals(this, other) ||\n                                                        other != null && Columns.Equals(other.Columns) &&\n                                                        Rows.Equals(other.Rows);\n    }\n}"
  },
  {
    "path": "FluentTerminal.Models/TerminalTheme.cs",
    "content": "﻿using System;\n\nnamespace FluentTerminal.Models\n{\n    public class TerminalTheme\n    {\n        public TerminalTheme()\n        {\n        }\n\n        public TerminalTheme(TerminalTheme other)\n        {\n            Id = other.Id;\n            Name = other.Name;\n            Author = other.Author;\n            PreInstalled = other.PreInstalled;\n            Colors = new TerminalColors(other.Colors);\n            BackgroundImage = other.BackgroundImage;\n        }\n\n        public Guid Id { get; set; }\n        public string Name { get; set; }\n        public string Author { get; set; }\n        public bool PreInstalled { get; set; }\n        public TerminalColors Colors { get; set; }\n        public ImageFile BackgroundImage { get; set; }\n\n        public override bool Equals(object obj)\n        {\n            if (obj is TerminalTheme other)\n            {\n                return Equals(other.Name, Name)\n                    && Equals(other.Author, Author)\n                    && Equals(other.Colors, Colors)\n                    && Equals(other.BackgroundImage, BackgroundImage);\n            }\n            return false;\n        }\n\n        public override int GetHashCode()\n        {\n            return HashCode.Combine(Name, Author, Colors);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.Package/FluentTerminal.Package.wapproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup Condition=\"'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '15.0'\">\n    <VisualStudioVersion>15.0</VisualStudioVersion>\n  </PropertyGroup>\n  <ItemGroup Label=\"ProjectConfigurations\">\n    <ProjectConfiguration Include=\"Debug|x86\">\n      <Configuration>Debug</Configuration>\n      <Platform>x86</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|x86\">\n      <Configuration>Release</Configuration>\n      <Platform>x86</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Debug|x64\">\n      <Configuration>Debug</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|x64\">\n      <Configuration>Release</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Debug|ARM\">\n      <Configuration>Debug</Configuration>\n      <Platform>ARM</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|ARM\">\n      <Configuration>Release</Configuration>\n      <Platform>ARM</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Debug|ARM64\">\n      <Configuration>Debug</Configuration>\n      <Platform>ARM64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|ARM64\">\n      <Configuration>Release</Configuration>\n      <Platform>ARM64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Debug|AnyCPU\">\n      <Configuration>Debug</Configuration>\n      <Platform>AnyCPU</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|AnyCPU\">\n      <Configuration>Release</Configuration>\n      <Platform>AnyCPU</Platform>\n    </ProjectConfiguration>\n  </ItemGroup>\n  <PropertyGroup Label=\"Configuration\">\n    <PostBuildEvent>\n    </PostBuildEvent>\n  </PropertyGroup>\n  <PropertyGroup>\n    <WapProjPath Condition=\"'$(WapProjPath)'==''\">$(MSBuildExtensionsPath)\\Microsoft\\DesktopBridge\\</WapProjPath>\n  </PropertyGroup>\n  <Import Project=\"$(WapProjPath)\\Microsoft.DesktopBridge.props\" />\n  <PropertyGroup>\n    <ProjectGuid>da0bf206-f386-404c-82df-5eae2f5b1aa5</ProjectGuid>\n    <TargetPlatformVersion>10.0.19041.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <AppxPackageSigningEnabled>True</AppxPackageSigningEnabled>\n    <PackageCertificateKeyFile>FluentTerminal.App_StoreKey.pfx</PackageCertificateKeyFile>\n    <EntryPointProjectUniqueName>$(SolutionDir)FluentTerminal.App\\FluentTerminal.App.csproj</EntryPointProjectUniqueName>\n    <GenerateAppInstallerFile>False</GenerateAppInstallerFile>\n    <AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>\n    <GenerateTestArtifacts>False</GenerateTestArtifacts>\n    <AppxBundlePlatforms>x86|x64</AppxBundlePlatforms>\n    <HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>\n    <AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|ARM'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|ARM64'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|AnyCPU'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|ARM'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|AnyCPU'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|ARM64'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x86'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x86'\">\n    <AppxBundle>Always</AppxBundle>\n    <DefaultLanguage>en-US</DefaultLanguage>\n  </PropertyGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"FluentTerminal.App_StoreKey.pfx\" />\n    <Content Include=\"Images\\AppIcons\\Full-transparent.png\" />\n    <Content Include=\"Images\\AppIcons\\LargeTile.scale-100.png\" />\n    <Content Include=\"Images\\AppIcons\\LargeTile.scale-125.png\" />\n    <Content Include=\"Images\\AppIcons\\LargeTile.scale-150.png\" />\n    <Content Include=\"Images\\AppIcons\\LargeTile.scale-200.png\" />\n    <Content Include=\"Images\\AppIcons\\LargeTile.scale-400.png\" />\n    <Content Include=\"Images\\AppIcons\\SmallTile.scale-100.png\" />\n    <Content Include=\"Images\\AppIcons\\SmallTile.scale-125.png\" />\n    <Content Include=\"Images\\AppIcons\\SmallTile.scale-150.png\" />\n    <Content Include=\"Images\\AppIcons\\SmallTile.scale-200.png\" />\n    <Content Include=\"Images\\AppIcons\\SmallTile.scale-400.png\" />\n    <Content Include=\"Images\\AppIcons\\SplashScreen.scale-100.png\" />\n    <Content Include=\"Images\\AppIcons\\SplashScreen.scale-125.png\" />\n    <Content Include=\"Images\\AppIcons\\SplashScreen.scale-150.png\" />\n    <Content Include=\"Images\\AppIcons\\SplashScreen.scale-200.png\" />\n    <Content Include=\"Images\\AppIcons\\SplashScreen.scale-400.png\" />\n    <Content Include=\"Images\\AppIcons\\Square150x150Logo.scale-100.png\" />\n    <Content Include=\"Images\\AppIcons\\Square150x150Logo.scale-125.png\" />\n    <Content Include=\"Images\\AppIcons\\Square150x150Logo.scale-150.png\" />\n    <Content Include=\"Images\\AppIcons\\Square150x150Logo.scale-200.png\" />\n    <Content Include=\"Images\\AppIcons\\Square150x150Logo.scale-400.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.altform-unplated_targetsize-16.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.altform-unplated_targetsize-24.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.altform-unplated_targetsize-256.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.altform-unplated_targetsize-32.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.altform-unplated_targetsize-48.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.scale-100.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.scale-125.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.scale-150.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.scale-200.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.scale-400.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-16.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-16_altform-lightunplated.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-24.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-24_altform-lightunplated.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-256.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-256_altform-lightunplated.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-32.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-32_altform-lightunplated.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-48.png\" />\n    <Content Include=\"Images\\AppIcons\\Square44x44Logo.targetsize-48_altform-lightunplated.png\" />\n    <Content Include=\"Images\\AppIcons\\StoreLogo.scale-100.png\" />\n    <Content Include=\"Images\\AppIcons\\StoreLogo.scale-125.png\" />\n    <Content Include=\"Images\\AppIcons\\StoreLogo.scale-150.png\" />\n    <Content Include=\"Images\\AppIcons\\StoreLogo.scale-200.png\" />\n    <Content Include=\"Images\\AppIcons\\StoreLogo.scale-400.png\" />\n    <Content Include=\"Images\\AppIcons\\Wide310x150Logo.scale-100.png\" />\n    <Content Include=\"Images\\AppIcons\\Wide310x150Logo.scale-125.png\" />\n    <Content Include=\"Images\\AppIcons\\Wide310x150Logo.scale-150.png\" />\n    <Content Include=\"Images\\AppIcons\\Wide310x150Logo.scale-200.png\" />\n    <Content Include=\"Images\\AppIcons\\Wide310x150Logo.scale-400.png\" />\n    <None Include=\"Package.StoreAssociation.xml\" />\n    <None Include=\"priconfig.default.xml\" />\n    <None Include=\"priconfig.packaging.xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"$(SolutionDir)FluentTerminal.App\\FluentTerminal.App.csproj\" />\n    <ProjectReference Include=\"$(SolutionDir)FluentTerminal.SystemTray\\FluentTerminal.SystemTray.csproj\" />\n  </ItemGroup>\n  <Import Project=\"$(WapProjPath)\\Microsoft.DesktopBridge.targets\" />\n</Project>"
  },
  {
    "path": "FluentTerminal.Package/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n  xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n  xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\"\n  xmlns:uap5=\"http://schemas.microsoft.com/appx/manifest/uap/windows10/5\"\n  xmlns:rescap=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities\"\n  xmlns:desktop=\"http://schemas.microsoft.com/appx/manifest/desktop/windows10\"\n  IgnorableNamespaces=\"uap rescap desktop\">\n\n  <Identity Name=\"53621FSApps.FluentTerminal\" Publisher=\"CN=BDC72197-B634-438A-B863-16DCB7D90C85\" Version=\"0.7.7.0\" />\n\n  <Properties>\n    <DisplayName>Fluent Terminal</DisplayName>\n    <PublisherDisplayName>FS Apps</PublisherDisplayName>\n    <Logo>Images\\AppIcons\\StoreLogo.png</Logo>\n  </Properties>\n\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.0.0\" MaxVersionTested=\"10.0.0.0\" />\n    <TargetDeviceFamily Name=\"Windows.Desktop\" MinVersion=\"10.0.14393.0\" MaxVersionTested=\"10.0.14393.0\" />\n  </Dependencies>\n\n  <Resources>\n    <Resource Language=\"x-generate\"/>\n  </Resources>\n\n  <Applications>\n    <Application Id=\"App\" EntryPoint=\"FluentTerminal.App.App\" Executable=\"FluentTerminal.App\\FluentTerminal.App.exe\">\n      <uap:VisualElements DisplayName=\"Fluent Terminal\" Square150x150Logo=\"Images\\AppIcons\\Square150x150Logo.png\" Square44x44Logo=\"Images\\AppIcons\\Square44x44Logo.png\" Description=\"Fluent Terminal\" BackgroundColor=\"transparent\">\n        <uap:DefaultTile Wide310x150Logo=\"Images\\AppIcons\\Wide310x150Logo.png\" ShortName=\"Fluent Terminal\" Square310x310Logo=\"Images\\AppIcons\\LargeTile.png\" Square71x71Logo=\"Images\\AppIcons\\SmallTile.png\">\n          <uap:ShowNameOnTiles>\n            <uap:ShowOn Tile=\"square150x150Logo\" />\n            <uap:ShowOn Tile=\"wide310x150Logo\" />\n            <uap:ShowOn Tile=\"square310x310Logo\" />\n          </uap:ShowNameOnTiles>\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Images\\AppIcons\\SplashScreen.png\" uap5:Optional=\"true\" />\n      </uap:VisualElements>\n      <Extensions>\n        <desktop:Extension Category=\"windows.fullTrustProcess\" Executable=\"FluentTerminal.SystemTray\\FluentTerminal.SystemTray.exe\">\n          <desktop:FullTrustProcess>\n            <desktop:ParameterGroup GroupId=\"AppLaunchedParameterGroup\" Parameters=\"appLaunched\" />\n          </desktop:FullTrustProcess>\n        </desktop:Extension>\n        <uap5:Extension Category=\"windows.appExecutionAlias\" Executable=\"FluentTerminal.App.exe\" EntryPoint=\"FluentTerminal.App.App\">\n          <uap5:AppExecutionAlias>\n            <uap5:ExecutionAlias Alias=\"flute.exe\" />\n          </uap5:AppExecutionAlias>\n        </uap5:Extension>\n        <desktop:Extension Category=\"windows.startupTask\" Executable=\"FluentTerminal.SystemTray\\FluentTerminal.SystemTray.exe\" EntryPoint=\"Windows.FullTrustApplication\">\n          <desktop:StartupTask TaskId=\"FluentTerminalStartupTask\" Enabled=\"false\" DisplayName=\"Fluent Terminal\" />\n        </desktop:Extension>\n        <uap:Extension Category=\"windows.appService\">\n          <uap:AppService Name=\"FluentTerminalAppService\" />\n        </uap:Extension>\n        <uap:Extension Category=\"windows.protocol\">\n          <uap:Protocol Name=\"ssh\">\n            <uap:DisplayName>SSH Session</uap:DisplayName>\n          </uap:Protocol>\n        </uap:Extension>\n        <uap:Extension Category=\"windows.protocol\">\n          <uap:Protocol Name=\"mosh\">\n            <uap:DisplayName>Mobile Shell Session</uap:DisplayName>\n          </uap:Protocol>\n        </uap:Extension>\n        <uap:Extension Category=\"windows.protocol\">\n          <uap:Protocol Name=\"ftcmd\">\n            <uap:DisplayName>Fluent-specific SSH</uap:DisplayName>\n          </uap:Protocol>\n        </uap:Extension>\n      </Extensions>\n    </Application>\n  </Applications>\n\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n    <rescap:Capability Name=\"confirmAppClose\"/>\n    <rescap:Capability Name=\"runFullTrust\" />\n  </Capabilities>\n</Package>\n"
  },
  {
    "path": "FluentTerminal.Package/priconfig.default.xml",
    "content": "﻿<default>\n  <qualifier name=\"Language\" value=\"ar;ar-IQ;az-Latn;bs;de;en-US;eo;es;fa;fr;he;hi;hr;hu;id;it;ja;ko;nl;pl;pt-BR;ro;ru;sl;sv;tr;ug-Arab;uk;uz-Latn;zh-Hans;zh-Hant\" />\n</default>"
  },
  {
    "path": "FluentTerminal.Package/priconfig.packaging.xml",
    "content": "﻿<packaging>\n  <autoResourcePackage qualifier=\"Scale\" />\n  <autoResourcePackage qualifier=\"DXFeatureLevel\" />\n</packaging>"
  },
  {
    "path": "FluentTerminal.RuntimeComponent/Enums/MouseButton.cs",
    "content": "﻿namespace FluentTerminal.RuntimeComponent.Enums\n{\n    public enum MouseButton\n    {\n        Left,\n        Middle,\n        Right\n    }\n}"
  },
  {
    "path": "FluentTerminal.RuntimeComponent/FluentTerminal.RuntimeComponent.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{BAAE6239-343F-454C-977F-F81F91715961}</ProjectGuid>\n    <OutputType>winmdobj</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>FluentTerminal.RuntimeComponent</RootNamespace>\n    <AssemblyName>FluentTerminal.RuntimeComponent</AssemblyName>\n    <DefaultLanguage>de-DE</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion Condition=\" '$(TargetPlatformVersion)' == '' \">10.0.19041.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <PlatformTarget>x86</PlatformTarget>\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <PlatformTarget>ARM</PlatformTarget>\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <PlatformTarget>x64</PlatformTarget>\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <LangVersion>8.0</LangVersion>\n  </PropertyGroup>\n  <PropertyGroup>\n    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Enums\\MouseButton.cs\" />\n    <Compile Include=\"Interfaces\\IxtermEventListener.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"WebAllowedObjects\\TerminalBridge.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.NETCore.UniversalWindowsPlatform\">\n      <Version>6.2.13</Version>\n    </PackageReference>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "FluentTerminal.RuntimeComponent/Interfaces/IxtermEventListener.cs",
    "content": "﻿using FluentTerminal.RuntimeComponent.Enums;\nusing System;\nusing System.Runtime.InteropServices.WindowsRuntime;\n\nnamespace FluentTerminal.RuntimeComponent.Interfaces\n{\n    public interface IxtermEventListener\n    {\n        void OnTerminalResized(int columns, int rows);\n\n        void OnTitleChanged(string title);\n\n        void OnKeyboardCommand(string command);\n\n        void OnMouseClick(MouseButton mouseButton, int x, int y, bool hasSelection, string hoveredUri);\n\n        void OnSelectionChanged(string selection);\n\n        void OnError(string error);\n\n        void OnInput([ReadOnlyArray]byte[] data);\n\n        void OnInitialized();\n\n        event EventHandler<object> OnOutput;\n        event EventHandler<string> OnPaste;\n        event EventHandler<string> OnSessionRestart;\n    }\n}"
  },
  {
    "path": "FluentTerminal.RuntimeComponent/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following\n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"FluentTerminal.RuntimeComponent\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"FluentTerminal.RuntimeComponent\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2018\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version\n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers\n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "FluentTerminal.RuntimeComponent/WebAllowedObjects/TerminalBridge.cs",
    "content": "﻿using FluentTerminal.RuntimeComponent.Enums;\nusing FluentTerminal.RuntimeComponent.Interfaces;\nusing System;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Windows.Foundation.Metadata;\n\nnamespace FluentTerminal.RuntimeComponent.WebAllowedObjects\n{\n    [AllowForWeb]\n    public sealed class TerminalBridge\n    {\n        private IxtermEventListener _terminalEventListener;\n\n        public TerminalBridge(IxtermEventListener terminalEventListener)\n        {\n            _terminalEventListener = terminalEventListener;\n            _terminalEventListener.OnOutput += OnOutput;\n            _terminalEventListener.OnPaste += OnPaste;\n            _terminalEventListener.OnSessionRestart += OnSessionRestart;\n        }\n\n        private void OnPaste(object sender, string e)\n        {\n            Task.Factory.StartNew(() => Paste?.Invoke(this, e));\n        }\n\n        private void OnOutput(object sender, object e)\n        {\n            Task.Factory.StartNew(() => Output?.Invoke(this, e));\n        }\n\n        private void OnSessionRestart(object sender, string e)\n        {\n            Task.Factory.StartNew(() => SessionRestart?.Invoke(this, e));\n        }\n\n        public event EventHandler<object> Output;\n        public event EventHandler<string> Paste;\n        public event EventHandler<string> SessionRestart;\n\n        public void InputReceived(string message)\n        {\n            _terminalEventListener?.OnInput(Encoding.UTF8.GetBytes(message));\n        }\n\n        public void BinaryReceived(string binary)\n        {\n            _terminalEventListener?.OnInput(Encoding.UTF8.GetBytes(binary));\n        }\n\n        public void Initialized()\n        {\n            _terminalEventListener.OnInitialized();\n        }\n\n        public void DisposalPrepare()\n        {\n            _terminalEventListener.OnOutput -= OnOutput;\n            _terminalEventListener.OnPaste -= OnPaste;\n            _terminalEventListener = null;\n        }\n\n        public void NotifySizeChanged(int columns, int rows)\n        {\n            _terminalEventListener?.OnTerminalResized(columns, rows);\n        }\n\n        public void NotifyTitleChanged(string title)\n        {\n            _terminalEventListener?.OnTitleChanged(title);\n        }\n\n        public void InvokeCommand(string command)\n        {\n            _terminalEventListener?.OnKeyboardCommand(command);\n        }\n\n        public void NotifyRightClick(int x, int y, bool hasSelection, string hoveredUri)\n        {\n            _terminalEventListener?.OnMouseClick(MouseButton.Right, x, y, hasSelection, hoveredUri);\n        }\n\n        public void NotifyMiddleClick(int x, int y, bool hasSelection, string hoveredUri)\n        {\n            _terminalEventListener?.OnMouseClick(MouseButton.Middle, x, y, hasSelection, hoveredUri);\n        }\n\n        public void NotifySelectionChanged(string selection)\n        {\n            _terminalEventListener?.OnSelectionChanged(selection);\n        }\n\n        public void ReportError(string error)\n        {\n            _terminalEventListener?.OnError(error);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup>\n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.8\"/>\n    </startup>\n    <System.Windows.Forms.ApplicationConfigurationSection>\n      <add key=\"DpiAwareness\" value=\"PerMonitorV2\"/>\n    </System.Windows.Forms.ApplicationConfigurationSection>\n</configuration>\n"
  },
  {
    "path": "FluentTerminal.SystemTray/BufferedReader.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.SystemTray\n{\n    internal sealed class BufferedReader : IDisposable\n    {\n        private const int MaxTotalDelayMilliseconds = 100;\n        private const int WaitPeriodMilliseconds = 30;\n        private const int NearReadsPeriodMilliseconds = 20;\n        private const int NearReadsBufferingTrigger = 3;\n        private const int BufferSize = 204800;\n\n        private readonly object _lock = new object();\n\n        private readonly Stream _stream;\n        private readonly Action<byte[]> _callback;\n        private readonly bool _enableBuffer;\n\n        private bool _disposed;\n        private bool _paused;\n\n        private byte[] _buffer;\n        private int _bufferIndex;\n        private DateTime _lastRead;\n        private DateTime _sendingDeadline;\n        private DateTime _scheduledSend;\n        private int _nearReadingsCount;\n        private Task _sendingTask;\n\n        internal BufferedReader(Stream stream, Action<byte[]> callback, bool enableBuffer)\n        {\n            _stream = stream;\n            _callback = callback;\n            _enableBuffer = enableBuffer;\n\n            // ReSharper disable once AssignmentIsFullyDiscarded\n            _ = Task.Factory.StartNew(ReadingLoop, TaskCreationOptions.LongRunning);\n        }\n\n        internal void SetPaused(bool value)\n        {\n            lock (_lock) _paused = value;\n        }\n\n        public void Dispose()\n        {\n            lock (_lock) _disposed = true;\n        }\n\n        private async Task ReadingLoop()\n        {\n            while (true)\n            {\n                // Allow CPU to jump between TerminalSessions' ReadingLoop Tasks \n                await Task.Delay(1).ConfigureAwait(false);\n\n                bool paused;\n\n                lock (_lock)\n                {\n                    if (_disposed) return;\n\n                    paused = _paused;\n                }\n\n                if (paused)\n                {\n                    await Task.Delay(WaitPeriodMilliseconds).ConfigureAwait(false);\n\n                    continue;\n                }\n\n                var currentBuffer = new byte[BufferSize];\n\n                int read;\n\n                try\n                {\n                    read = await _stream.ReadAsync(currentBuffer, 0, currentBuffer.Length).ConfigureAwait(false);\n                }\n                catch\n                {\n                    read = 0;\n                }\n\n                if (read < 1)\n                {\n                    // Expected to happen only when terminal is closed.\n                    // Probably not recoverable, but we'll wait anyway 'till disposed.\n                    await Task.Delay(50).ConfigureAwait(false);\n\n                    continue;\n                }\n\n                if (!_enableBuffer)\n                {\n                    // Buffering disabled. Just send.\n\n                    _buffer = currentBuffer;\n                    _bufferIndex = read;\n\n                    SendBuffer();\n\n                    continue;\n                }\n\n                var now = DateTime.UtcNow;\n\n                lock (_lock)\n                {\n                    if (_buffer != null)\n                    {\n                        // We're already in buffered mode\n\n                        if (_bufferIndex + read > BufferSize)\n                        {\n                            // No room in the buffer. Have to flush it.\n                            SendBuffer();\n\n                            _buffer = currentBuffer;\n                            _bufferIndex = 0;\n\n                            _scheduledSend = now.AddMilliseconds(WaitPeriodMilliseconds);\n                            _sendingDeadline = now.AddMilliseconds(MaxTotalDelayMilliseconds);\n                        }\n                        else\n                        {\n                            // Copy to existing buffer\n                            Buffer.BlockCopy(currentBuffer, 0, _buffer, _bufferIndex, read);\n                            _bufferIndex += read;\n\n                            _scheduledSend = now.AddMilliseconds(WaitPeriodMilliseconds);\n                        }\n\n                        if (now.Subtract(_lastRead).TotalMilliseconds < NearReadsPeriodMilliseconds)\n                        {\n                            // We should stop buffered mode\n                            SendBuffer();\n                        }\n\n                        _lastRead = now;\n\n                        continue;\n                    }\n\n                    if (now.Subtract(_lastRead).TotalMilliseconds < NearReadsPeriodMilliseconds)\n                    {\n                        _nearReadingsCount++;\n                    }\n                    else\n                    {\n                        _nearReadingsCount = 0;\n                    }\n\n                    _lastRead = now;\n\n                    if (_nearReadingsCount >= NearReadsBufferingTrigger)\n                    {\n                        // We should enter buffered mode\n                        _buffer = currentBuffer;\n                        _bufferIndex = 0;\n                        _sendingDeadline = now.AddMilliseconds(MaxTotalDelayMilliseconds);\n                        _scheduledSend = now.AddMilliseconds(WaitPeriodMilliseconds);\n\n                        if (_sendingTask == null) _sendingTask = SendAsync();\n\n                        _nearReadingsCount = 0;\n\n                        continue;\n                    }\n\n                    // Not in buffering mode. Just send.\n                    _buffer = currentBuffer;\n                    _bufferIndex = read;\n\n                    SendBuffer();\n                }\n            }\n        }\n\n        private async Task SendAsync()\n        {\n            // Just to release the calling thread asap\n            await Task.Delay(5).ConfigureAwait(false);\n\n            while (true)\n            {\n                TimeSpan sleep;\n\n                lock (_lock)\n                {\n                    if (_buffer == null)\n                    {\n                        _sendingTask = null;\n\n                        return;\n                    }\n\n                    if (_paused)\n                    {\n                        sleep = TimeSpan.FromMilliseconds(WaitPeriodMilliseconds);\n                    }\n                    else\n                    {\n                        sleep = _scheduledSend < _sendingDeadline\n                            ? _scheduledSend.Subtract(DateTime.UtcNow)\n                            : _sendingDeadline.Subtract(DateTime.UtcNow);\n\n                        if (sleep.TotalMilliseconds < 5)\n                        {\n                            // Time to send\n                            SendBuffer();\n\n                            _sendingTask = null;\n\n                            return;\n                        }\n                    }\n                }\n\n                await Task.Delay(sleep).ConfigureAwait(false);\n            }\n        }\n\n        // Has to be called from a locked code!\n        private void SendBuffer()\n        {\n            if (_bufferIndex == _buffer.Length)\n            {\n                _callback(_buffer);\n            }\n            else\n            {\n                var newBuffer = new byte[_bufferIndex];\n\n                Buffer.BlockCopy(_buffer, 0, newBuffer, 0, _bufferIndex);\n\n                _callback(newBuffer);\n            }\n\n            _buffer = null;\n            _bufferIndex = 0;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/FileFinder.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Threading;\n\nnamespace FluentTerminal.SystemTray\n{\n    public static class FileFinder\n    {\n        public static string GetCommandPath(this string command)\n        {\n            var procLock = new object();\n\n            string path = null;\n            string error = null;\n\n            using(var process = new Process())\n            using (var mre = new ManualResetEvent(false))\n            {\n                process.StartInfo.FileName = \"where\";\n                process.StartInfo.Arguments = command;\n                process.StartInfo.UseShellExecute = false;\n                process.StartInfo.RedirectStandardInput = false;\n                process.StartInfo.RedirectStandardOutput = true;\n                process.StartInfo.RedirectStandardError = true;\n\n                process.OutputDataReceived += (sender, e) =>\n                {\n                    lock (procLock)\n                    {\n                        if (!string.IsNullOrWhiteSpace(e.Data))\n                        {\n                            path = e.Data.Trim();\n\n                            // ReSharper disable once AccessToDisposedClosure\n                            mre.Set();\n                        }\n                    }\n                };\n\n                process.ErrorDataReceived += (sender, e) =>\n                {\n                    lock (procLock)\n                    {\n                        if (!string.IsNullOrWhiteSpace(e.Data))\n                        {\n                            error = e.Data.Trim();\n\n                            // ReSharper disable once AccessToDisposedClosure\n                            mre.Set();\n                        }\n                    }\n                };\n\n                process.Start();\n\n                process.BeginOutputReadLine();\n                process.BeginErrorReadLine();\n\n                process.WaitForExit();\n\n                mre.WaitOne(50);\n\n                lock (procLock)\n                {\n                    if (process.ExitCode == 0)\n                    {\n                        if (string.IsNullOrEmpty(path))\n                        {\n                            throw new Exception(\"Should not happen! 'where' exit code is 0, yet the path is empty.\");\n                        }\n\n                        if (!File.Exists(path))\n                        {\n                            throw new Exception(\n                                \"Should not happen! 'where' returned a path that doesn't exist: \" + path);\n                        }\n\n                        return path;\n                    }\n\n                    if (!string.IsNullOrEmpty(error))\n                    {\n                        throw new Exception($\"'{command}' command not found. Error message: \" + error);\n                    }\n\n                    throw new Exception($\"'{command}' command not found. Exit code: {process.ExitCode:##########}\");\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/FluentTerminal.SystemTray.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProjectGuid>{9EDDE318-0003-4553-B6F9-3FE5473563FD}</ProjectGuid>\r\n    <OutputType>WinExe</OutputType>\r\n    <RootNamespace>FluentTerminal.SystemTray</RootNamespace>\r\n    <AssemblyName>FluentTerminal.SystemTray</AssemblyName>\r\n    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\r\n    <TargetFrameworkProfile />\r\n    <LangVersion>7.1</LangVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <PlatformTarget>AnyCPU</PlatformTarget>\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <LangVersion>8.0</LangVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <PlatformTarget>AnyCPU</PlatformTarget>\r\n    <DebugType>pdbonly</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <LangVersion>8.0</LangVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ApplicationManifest>app.manifest</ApplicationManifest>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\r\n    <DefineConstants>TRACE;DEBUG;X64</DefineConstants>\r\n    <DebugType>full</DebugType>\r\n    <PlatformTarget>x64</PlatformTarget>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <LangVersion>8.0</LangVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\r\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE;X64</DefineConstants>\r\n    <Optimize>true</Optimize>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x64</PlatformTarget>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <LangVersion>8.0</LangVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <DebugType>full</DebugType>\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <LangVersion>8.0</LangVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\r\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <Optimize>true</Optimize>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <LangVersion>8.0</LangVersion>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Store|AnyCPU'\">\r\n    <OutputPath>bin\\Store\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <Optimize>true</Optimize>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>AnyCPU</PlatformTarget>\r\n    <LangVersion>8.0</LangVersion>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Store|x64'\">\r\n    <OutputPath>bin\\x64\\Store\\</OutputPath>\r\n    <DefineConstants>TRACE;X64;STORE</DefineConstants>\r\n    <Optimize>true</Optimize>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x64</PlatformTarget>\r\n    <LangVersion>8.0</LangVersion>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Store|x86'\">\r\n    <OutputPath>bin\\x86\\Store\\</OutputPath>\r\n    <DefineConstants>TRACE;STORE</DefineConstants>\r\n    <Optimize>true</Optimize>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <LangVersion>8.0</LangVersion>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Management\" />\r\n    <Reference Include=\"System.Runtime.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL\">\r\n      <SpecificVersion>False</SpecificVersion>\r\n      <HintPath>$(MSBuildProgramFiles32)\\Reference Assemblies\\Microsoft\\Framework\\.NETCore\\v4.5\\System.Runtime.WindowsRuntime.dll</HintPath>\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Runtime.WindowsRuntime.UI.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL\">\r\n      <SpecificVersion>False</SpecificVersion>\r\n      <HintPath>$(MSBuildProgramFiles32)\\Reference Assemblies\\Microsoft\\Framework\\.NETCore\\v4.5\\System.Runtime.WindowsRuntime.UI.Xaml.dll</HintPath>\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Deployment\" />\r\n    <Reference Include=\"System.Drawing\" />\r\n    <Reference Include=\"System.Net.Http\" />\r\n    <Reference Include=\"System.Windows.Forms\" />\r\n    <Reference Include=\"System.Xml\" />\r\n    <Reference Include=\"Windows\">\r\n      <HintPath>$(MSBuildProgramFiles32)\\Windows Kits\\10\\UnionMetadata\\10.0.19041.0\\Facade\\Windows.winmd</HintPath>\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"Windows.Foundation.FoundationContract\">\r\n      <HintPath>$(MSBuildProgramFiles32)\\Windows Kits\\10\\References\\10.0.19041.0\\Windows.Foundation.FoundationContract\\4.0.0.0\\Windows.Foundation.FoundationContract.winmd</HintPath>\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"Windows.Foundation.UniversalApiContract\">\r\n      <HintPath>$(MSBuildProgramFiles32)\\Windows Kits\\10\\References\\10.0.19041.0\\Windows.Foundation.UniversalApiContract\\10.0.0.0\\Windows.Foundation.UniversalApiContract.winmd</HintPath>\r\n      <Private>False</Private>\r\n    </Reference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"BufferedReader.cs\" />\r\n    <Compile Include=\"ProcessUtils.cs\" />\r\n    <Compile Include=\"FileFinder.cs\" />\r\n    <Compile Include=\"Native\\ProcessApi.cs\" />\r\n    <Compile Include=\"Native\\WindowApi.cs\" />\r\n    <Compile Include=\"Program.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n    <Compile Include=\"Properties\\Resources.Designer.cs\">\r\n      <AutoGen>True</AutoGen>\r\n      <DesignTime>True</DesignTime>\r\n      <DependentUpon>Resources.resx</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"Services\\AppCommunicationService.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\ConPtySession.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\Native\\ConsoleApi.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\Native\\ProcessApi.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\Native\\PseudoConsoleApi.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\Processes\\Process.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\Processes\\ProcessFactory.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\PseudoConsole.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\PseudoConsolePipe.cs\" />\r\n    <Compile Include=\"Services\\ConPty\\Terminal.cs\" />\r\n    <Compile Include=\"Services\\ITerminalSession.cs\" />\r\n    <Compile Include=\"Services\\ToggleWindowService.cs\" />\r\n    <Compile Include=\"Services\\TerminalsManager.cs\" />\r\n    <Compile Include=\"Services\\WinPty\\WinPtySession.cs\" />\r\n    <Compile Include=\"SystemTrayApplicationContext.cs\" />\r\n    <Compile Include=\"Utilities.cs\" />\r\n    <Compile Include=\"VolumeControl.cs\" />\r\n    <EmbeddedResource Include=\"Properties\\Resources.resx\">\r\n      <Generator>ResXFileCodeGenerator</Generator>\r\n      <SubType>Designer</SubType>\r\n      <LastGenOutput>Resources.Designer.cs</LastGenOutput>\r\n    </EmbeddedResource>\r\n    <None Include=\"app.manifest\" />\r\n    <None Include=\"Properties\\Settings.settings\">\r\n      <Generator>SettingsSingleFileGenerator</Generator>\r\n      <LastGenOutput>Settings.Designer.cs</LastGenOutput>\r\n    </None>\r\n    <Compile Include=\"Properties\\Settings.Designer.cs\">\r\n      <AutoGen>True</AutoGen>\r\n      <DependentUpon>Settings.settings</DependentUpon>\r\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\r\n    </Compile>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"App.config\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <PackageReference Include=\"Autofac\">\r\n      <Version>6.3.0</Version>\r\n    </PackageReference>\r\n    <PackageReference Include=\"GlobalHotKey\">\r\n      <Version>1.1.0</Version>\r\n    </PackageReference>\r\n    <PackageReference Include=\"winpty.NET\">\r\n      <Version>0.4.2</Version>\r\n    </PackageReference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ProjectReference Include=\"..\\FluentTerminal.App.Services\\FluentTerminal.App.Services.csproj\">\r\n      <Project>{A1AD7385-F92E-46AC-A349-43DC99B1E72D}</Project>\r\n      <Name>FluentTerminal.App.Services</Name>\r\n    </ProjectReference>\r\n    <ProjectReference Include=\"..\\FluentTerminal.Models\\FluentTerminal.Models.csproj\">\r\n      <Project>{5EA40453-A0AA-449E-8406-D6EA51D7E70E}</Project>\r\n      <Name>FluentTerminal.Models</Name>\r\n    </ProjectReference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Content Include=\"..\\Dependencies\\MoshExecutables\\$(Platform)\\mosh-client.exe\">\r\n      <Link>mosh-client.exe</Link>\r\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n    </Content>\r\n    <Content Include=\"..\\Dependencies\\MoshExecutables\\$(Platform)\\mosh.exe\">\r\n      <Link>mosh.exe</Link>\r\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n    </Content>\r\n    <Content Include=\"..\\Dependencies\\WinPty\\$(Platform)\\winpty-agent.exe\">\r\n      <Link>winpty-agent.exe</Link>\r\n    </Content>\r\n    <Content Include=\"..\\Dependencies\\WinPty\\$(Platform)\\winpty-debugserver.exe\">\r\n      <Link>winpty-debugserver.exe</Link>\r\n    </Content>\r\n    <Content Include=\"..\\Dependencies\\WinPty\\$(Platform)\\winpty.dll\">\r\n      <Link>winpty.dll</Link>\r\n    </Content>\r\n    <None Include=\"Resources\\Icon_mono_light.ico\" />\r\n    <None Include=\"Resources\\Icon_mono_dark.ico\" />\r\n  </ItemGroup>\r\n  <ItemGroup />\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <PropertyGroup>\r\n    <PostBuildEvent>\r\n    </PostBuildEvent>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <PreBuildEvent>\r\n    </PreBuildEvent>\r\n  </PropertyGroup>\r\n</Project>"
  },
  {
    "path": "FluentTerminal.SystemTray/Native/ProcessApi.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\n\nnamespace FluentTerminal.SystemTray.Native\n{\n    public static class ProcessApi\n    {\n        [DllImport(\"kernel32.dll\")]\n        public static extern int GetProcessId(IntPtr handle);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        public static extern bool GetExitCodeProcess(IntPtr hProcess, out uint ExitCode);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Native/WindowApi.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\n\nnamespace FluentTerminal.SystemTray.Native\n{\n    public static class WindowApi\n    {\n        public const int SW_HIDE = 0;\n        public const int SW_SHOWNORMAL = 1;\n        public const int SW_SHOWMINIMIZED = 2;\n        public const int SW_SHOWMAXIMIZED = 3;\n        public const int SW_SHOWNOACTIVATE = 4;\n        public const int SW_MINIMIZE = 6;\n        public const int SW_RESTORE = 9;\n        public const int SW_SHOWDEFAULT = 10;\n\n        [DllImport(\"user32.dll\")]\n        public static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out uint ProcessId);\n\n        [DllImport(\"user32.dll\")]\n        public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/ProcessUtils.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Management;\n\nnamespace FluentTerminal.SystemTray\n{\n    public static class ProcessUtils\n    {\n        /// <summary>\n        /// Kill a process, and all of its children, grandchildren, etc.\n        /// </summary>\n        /// <param name=\"pid\">Process ID.</param>\n        public static void KillTree(int pid)\n        {\n            var searcher = new ManagementObjectSearcher(\"Select * From Win32_Process Where ParentProcessID=\" + pid);\n            foreach (ManagementObject mo in searcher.Get())\n            {\n                KillTree(Convert.ToInt32(mo[\"ProcessID\"]));\n            }\n\n            try\n            {\n                Process.GetProcessById(pid).Kill();\n            }\n            catch (ArgumentException)\n            {\n                // Process already exited.\n            }\n            catch (Win32Exception)\n            {\n                // Ignore access is denied\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Program.cs",
    "content": "﻿using Autofac;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Adapters;\nusing FluentTerminal.App.Services.Implementation;\nusing FluentTerminal.SystemTray.Services;\nusing GlobalHotKey;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Newtonsoft.Json.Serialization;\nusing System;\nusing System.IO;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing System.Windows.Threading;\nusing Windows.Storage;\n\nnamespace FluentTerminal.SystemTray\n{\n    public static class Program\n    {\n        private const string MutexName = \"FluentTerminalMutex\";\n\n        [STAThread]\n        public static void Main(string[] args)\n        {\n            if (!Mutex.TryOpenExisting(MutexName, out _))\n            {\n                using (new Mutex(false, MutexName))\n                {\n                    Application.EnableVisualStyles();\n                    Application.SetCompatibleTextRenderingDefault(false);\n\n                    JsonConvert.DefaultSettings = () =>\n                    {\n                        var settings = new JsonSerializerSettings\n                        {\n                            ContractResolver = new CamelCasePropertyNamesContractResolver(),\n                        };\n                        settings.Converters.Add(new StringEnumConverter(typeof(CamelCaseNamingStrategy)));\n\n                        return settings;\n                    };\n\n                    var applicationDataContainers = new ApplicationDataContainers\n                    {\n                        LocalSettings = new ApplicationDataContainerAdapter(ApplicationData.Current.LocalSettings),\n                        RoamingSettings = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings),\n                        KeyBindings = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.KeyBindingsContainerName, ApplicationDataCreateDisposition.Always)),\n                        ShellProfiles = new ApplicationDataContainerAdapter(ApplicationData.Current.LocalSettings.CreateContainer(Constants.ShellProfilesContainerName, ApplicationDataCreateDisposition.Always)),\n                        Themes = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.ThemesContainerName, ApplicationDataCreateDisposition.Always))\n                    };\n\n                    var containerBuilder = new ContainerBuilder();\n\n                    containerBuilder.RegisterInstance(applicationDataContainers);\n                    containerBuilder.RegisterType<NotificationService>().As<INotificationService>().InstancePerDependency();\n                    containerBuilder.RegisterType<TerminalsManager>().SingleInstance();\n                    containerBuilder.RegisterType<ToggleWindowService>().SingleInstance();\n                    containerBuilder.RegisterInstance(new HotKeyManager()).SingleInstance();\n                    containerBuilder.RegisterType<SystemTrayApplicationContext>().SingleInstance();\n                    containerBuilder.RegisterType<AppCommunicationService>().SingleInstance();\n                    containerBuilder.RegisterType<DefaultValueProvider>().As<IDefaultValueProvider>();\n                    containerBuilder.RegisterType<SettingsService>().As<ISettingsService>().SingleInstance();\n                    containerBuilder.RegisterType<UpdateService>().As<IUpdateService>().SingleInstance();\n                    containerBuilder.RegisterInstance(Dispatcher.CurrentDispatcher).SingleInstance();\n\n                    var container = containerBuilder.Build();\n\n                    // TODO: It's maybe better to wait for logging to be configured before continuing?\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = ConfigureLoggingAsync();\n\n                    var appCommunicationService = container.Resolve<AppCommunicationService>();\n\n                    if (args.Length > 0 && args[2] == \"appLaunched\")\n                    {\n                        // ReSharper disable once AssignmentIsFullyDiscarded\n                        _ = appCommunicationService.StartAppServiceConnectionAsync();\n                    }\n\n#if !STORE\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = Task.Factory.StartNew(() => container.Resolve<IUpdateService>().CheckForUpdateAsync());\n#endif\n                    var settingsService = container.Resolve<ISettingsService>();\n\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = Task.Factory.StartNew(() => Utilities.MuteTerminal(settingsService.GetApplicationSettings().MuteTerminalBeeps));\n\n                    if (settingsService.GetApplicationSettings().EnableTrayIcon)\n                    {\n                        Application.Run(container.Resolve<SystemTrayApplicationContext>());\n                    }\n                    else\n                    {\n                        Application.Run();\n                    }\n                }\n            }\n            else\n            {\n                var eventWaitHandle = EventWaitHandle.OpenExisting(AppCommunicationService.EventWaitHandleName, System.Security.AccessControl.EventWaitHandleRights.Modify);\n                eventWaitHandle.Set();\n            }\n        }\n\n        private static async Task ConfigureLoggingAsync()\n        {\n            var logDirectory = await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync(\"Logs\", CreationCollisionOption.OpenIfExists).AsTask().ConfigureAwait(false);\n            var logFile = Path.Combine(logDirectory.Path, \"fluentterminal.systemtray.log\");\n            var configFile = await logDirectory.CreateFileAsync(\"config.json\", CreationCollisionOption.OpenIfExists).AsTask().ConfigureAwait(false);\n            var configContent = await FileIO.ReadTextAsync(configFile).AsTask().ConfigureAwait(false);\n            var config = JsonConvert.DeserializeObject<Logger.Configuration>(configContent) ?? new Logger.Configuration();\n            Logger.Instance.Initialize(logFile, config);\n\n            AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;\n\n            TaskScheduler.UnobservedTaskException += (sender, e) =>\n                Logger.Instance.Error(e.Exception, \"Unobserved Task Exception\");\n        }\n\n        private static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)\n        {\n            Logger.Instance.Error((Exception)e.ExceptionObject, \"Unhandled Exception\");\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// Allgemeine Informationen über eine Assembly werden über die folgenden\n// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,\n// die einer Assembly zugeordnet sind.\n[assembly: AssemblyTitle(\"FluentTerminal.SystemTray\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"FluentTerminal.SystemTray\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2017\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly\n// für COM-Komponenten unsichtbar.  Wenn Sie auf einen Typ in dieser Assembly von\n// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf \"True\" festlegen.\n[assembly: ComVisible(false)]\n\n// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird\n[assembly: Guid(\"9edde318-0003-4553-b6f9-3fe5473563fd\")]\n\n// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:\n//\n//      Hauptversion\n//      Nebenversion\n//      Buildnummer\n//      Revision\n//\n// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,\n// übernehmen, indem Sie \"*\" eingeben:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]"
  },
  {
    "path": "FluentTerminal.SystemTray/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace FluentTerminal.SystemTray.Properties {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class Resources {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Resources() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"FluentTerminal.SystemTray.Properties.Resources\", typeof(Resources).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\n        /// </summary>\n        internal static System.Drawing.Icon Icon_mono_dark {\n            get {\n                object obj = ResourceManager.GetObject(\"Icon_mono_dark\", resourceCulture);\n                return ((System.Drawing.Icon)(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\n        /// </summary>\n        internal static System.Drawing.Icon Icon_mono_light {\n            get {\n                object obj = ResourceManager.GetObject(\"Icon_mono_light\", resourceCulture);\n                return ((System.Drawing.Icon)(obj));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"Icon_mono_dark\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\Icon_mono_dark.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\n  </data>\n  <data name=\"Icon_mono_light\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\Icon_mono_light.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\n  </data>\n</root>"
  },
  {
    "path": "FluentTerminal.SystemTray/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace FluentTerminal.SystemTray.Properties {\n    \n    \n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"17.0.3.0\")]\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {\n        \n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\n        \n        public static Settings Default {\n            get {\n                return defaultInstance;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\">\n  <Profiles>\n    <Profile Name=\"(Default)\" />\n  </Profiles>\n  <Settings />\n</SettingsFile>\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/AppCommunicationService.cs",
    "content": "﻿using FluentTerminal.Models;\nusing FluentTerminal.Models.Requests;\nusing Newtonsoft.Json;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.AppService;\nusing Windows.Foundation.Collections;\nusing System;\nusing System.IO;\nusing System.Linq;\nusing FluentTerminal.Models.Responses;\nusing FluentTerminal.App.Services;\nusing System.Windows.Forms;\nusing Windows.Foundation;\n\nnamespace FluentTerminal.SystemTray.Services\n{\n    public class AppCommunicationService\n    {\n        private AppServiceConnection _appServiceConnection;\n        private readonly TerminalsManager _terminalsManager;\n        private readonly ToggleWindowService _toggleWindowService;\n        private readonly ISettingsService _settingsService;\n\n        public const string EventWaitHandleName = \"FluentTerminalNewInstanceEvent\";\n\n        public AppCommunicationService(TerminalsManager terminalsManager, ToggleWindowService toggleWindowService, ISettingsService settingsService)\n        {\n            _terminalsManager = terminalsManager;\n            _terminalsManager.DisplayOutputRequested += _terminalsManager_DisplayOutputRequested;\n            _terminalsManager.TerminalExited += _terminalsManager_TerminalExited;\n            _toggleWindowService = toggleWindowService;\n            _settingsService = settingsService;\n\n            Task.Factory.StartNew(() =>\n            {\n                var eventWaitHandle = new EventWaitHandle(false, EventResetMode.AutoReset, EventWaitHandleName);\n\n                while (true)\n                {\n                    eventWaitHandle.WaitOne();\n                    // ReSharper disable once AssignmentIsFullyDiscarded\n                    _ = StartAppServiceConnectionAsync();\n                }\n            }, TaskCreationOptions.LongRunning);\n        }\n\n        private void _terminalsManager_TerminalExited(object sender, TerminalExitStatus status)\n        {\n            var request = new TerminalExitedRequest(status);\n            _appServiceConnection?.SendMessageAsync(CreateMessage(request));\n        }\n\n        private void _terminalsManager_DisplayOutputRequested(object sender, TerminalOutput e)\n        {\n            var message = new ValueSet\n            {\n                [MessageKeys.Type] = Constants.TerminalBufferRequestIdentifier,\n                [MessageKeys.TerminalId] = e.TerminalId,\n                [MessageKeys.Content] = e.Data\n            };\n\n            // ReSharper disable once AssignmentIsFullyDiscarded\n            _ = _appServiceConnection.SendMessageAsync(message);\n        }\n\n        public IAsyncOperation<AppServiceConnectionStatus> StartAppServiceConnectionAsync()\n        {\n            _appServiceConnection = new AppServiceConnection\n            {\n                AppServiceName = \"FluentTerminalAppService\",\n                PackageFamilyName = Package.Current.Id.FamilyName\n            };\n            _appServiceConnection.RequestReceived += OnRequestReceived;\n            _appServiceConnection.ServiceClosed += OnServiceClosed;\n\n            return _appServiceConnection.OpenAsync();\n        }\n\n        private void OnServiceClosed(AppServiceConnection sender, AppServiceClosedEventArgs args)\n        {\n            _appServiceConnection.RequestReceived -= OnRequestReceived;\n            _appServiceConnection.ServiceClosed -= OnServiceClosed;\n\n            _appServiceConnection = null;\n        }\n\n        private async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)\n        {\n            var messageType = (byte)args.Request.Message[MessageKeys.Type];\n\n            switch ((MessageIdentifiers) messageType)\n            {\n                case MessageIdentifiers.WriteDataMessage:\n                    HandleWriteDataMessage(args);\n                    return;\n                case MessageIdentifiers.CreateTerminalRequest:\n                    await HandleCreateTerminalRequestAsync(args).ConfigureAwait(false);\n                    return;\n                case MessageIdentifiers.ResizeTerminalRequest:\n                    HandleResizeTerminalRequest(args);\n                    return;\n                case MessageIdentifiers.SetToggleWindowKeyBindingsRequest:\n                    HandleSetToggleWindowKeyBindingsRequest(args);\n                    return;\n                case MessageIdentifiers.TerminalExitedRequest:\n                    HandleTerminalExitedRequest(args);\n                    return;\n                case MessageIdentifiers.GetUserNameRequest:\n                    await HandleGetUserNameRequestAsync(args).ConfigureAwait(false);\n                    return;\n                case MessageIdentifiers.SaveTextFileRequest:\n                    await HandleSaveTextFileRequestAsync(args).ConfigureAwait(false);\n                    return;\n                case MessageIdentifiers.GetSshConfigFolderRequest:\n                    await HandleGetSshConfigFolderRequestAsync(args).ConfigureAwait(false);\n                    return;\n                case MessageIdentifiers.CheckFileExistsRequest:\n                    await HandleCheckFileExistsRequestAsync(args).ConfigureAwait(false);\n                    return;\n                case MessageIdentifiers.MuteTerminalRequest:\n                    HandleMuteTerminalRequest(args);\n                    return;\n                case MessageIdentifiers.UpdateSettingsRequest:\n                    HandleUpdateSettingsRequest(args);\n                    return;\n                case MessageIdentifiers.GetCommandPathRequest:\n                    await GetCommandPathRequestHandlerAsync(args).ConfigureAwait(false);\n                    return;\n                case MessageIdentifiers.PauseTerminalOutputRequest:\n                    await HandlePauseTerminalOutputRequestAsync(args).ConfigureAwait(false);\n                    return;\n                case MessageIdentifiers.QuitApplicationRequest:\n                    HandleQuitApplicationRequest();\n                    return;\n                case MessageIdentifiers.ReadTextFileRequest:\n                    await HandleReadTextFileRequestAsync(args).ConfigureAwait(false);\n                    return;\n                default:\n                    Logger.Instance.Error(\"Received unknown message type: {messageType}\", messageType);\n                    return;\n            }\n        }\n\n        private void HandleQuitApplicationRequest()\n        {\n            Application.Exit();\n        }\n\n        private void HandleWriteDataMessage(AppServiceRequestReceivedEventArgs args)\n        {\n            var terminalId = (byte)args.Request.Message[MessageKeys.TerminalId];\n            var content = (byte[])args.Request.Message[MessageKeys.Content];\n            _terminalsManager.Write(terminalId, content);\n        }\n\n        private async Task HandleCreateTerminalRequestAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<CreateTerminalRequest>(messageContent);\n            var response = _terminalsManager.CreateTerminal(request);\n            await args.Request.SendResponseAsync(CreateMessage(response));\n            deferral.Complete();\n        }\n\n        private void HandleResizeTerminalRequest(AppServiceRequestReceivedEventArgs args)\n        {\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<ResizeTerminalRequest>(messageContent);\n            _terminalsManager.ResizeTerminal(request.TerminalId, request.NewSize);\n        }\n\n        private void HandleSetToggleWindowKeyBindingsRequest(AppServiceRequestReceivedEventArgs args)\n        {\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<SetToggleWindowKeyBindingsRequest>(messageContent);\n            _toggleWindowService.SetHotKeys(request.KeyBindings);\n        }\n\n        private void HandleTerminalExitedRequest(AppServiceRequestReceivedEventArgs args)\n        {\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<TerminalExitedRequest>(messageContent);\n            _terminalsManager.CloseTerminal(request.TerminalId);\n        }\n\n        private async Task HandleGetUserNameRequestAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            var response = new StringValueResponse { Success = !string.IsNullOrEmpty(Environment.UserName), Value = Environment.UserName.Split('\\\\').Last() };\n            await args.Request.SendResponseAsync(CreateMessage(response));\n            deferral.Complete();\n        }\n\n        private async Task HandleSaveTextFileRequestAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<SaveTextFileRequest>(messageContent);\n            var response = new CommonResponse();\n\n            try\n            {\n                Utilities.SaveFile(request.Path, request.Content);\n                response.Success = true;\n            }\n            catch (Exception e)\n            {\n                response.Success = false;\n                response.Error = e.Message;\n            }\n\n            await args.Request.SendResponseAsync(CreateMessage(response));\n\n            deferral.Complete();\n        }\n\n        private async Task HandleReadTextFileRequestAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferreal = args.GetDeferral();\n            var deferral = args.GetDeferral();\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<ReadTextFileRequest>(messageContent);\n            var response = new StringValueResponse();\n\n            try\n            {\n                var content = Utilities.ReadFile(request.Path);\n                response.Success = true;\n                response.Value = content;\n            }\n            catch (Exception e)\n            {\n                response.Success = false;\n                response.Error = e.Message;\n            }\n\n            await args.Request.SendResponseAsync(CreateMessage(response));\n\n            deferral.Complete();\n        }\n\n        private async Task HandleGetSshConfigFolderRequestAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<GetSshConfigFolderRequest>(messageContent);\n            var response = new GetSshConfigFolderResponse();\n\n            try\n            {\n                var sshDir = new DirectoryInfo(\n                    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), \".ssh\"));\n\n                if (sshDir.Exists)\n                {\n                    response.Path = sshDir.FullName;\n\n                    if (request.IncludeContent)\n                    {\n                        response.Files = sshDir.GetFiles().Select(fi => fi.Name).ToArray();\n                    }\n                }\n\n                response.Success = true;\n            }\n            catch (Exception e)\n            {\n                response.Success = false;\n                response.Error = e.Message;\n            }\n\n            await args.Request.SendResponseAsync(CreateMessage(response));\n\n            deferral.Complete();\n        }\n\n        private void HandleMuteTerminalRequest(AppServiceRequestReceivedEventArgs args)\n        {\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<MuteTerminalRequest>(messageContent);\n            Utilities.MuteTerminal(request.Mute);\n        }\n\n        private void HandleUpdateSettingsRequest(AppServiceRequestReceivedEventArgs args)\n        {\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<UpdateSettingsRequest>(messageContent);\n            _settingsService.NotifyApplicationSettingsChanged(request.Settings);\n        }\n        \n        private async Task HandlePauseTerminalOutputRequestAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<PauseTerminalOutputRequest>(messageContent);\n            var response = _terminalsManager.PauseTermimal(request.Id, request.Pause);\n\n            await args.Request.SendResponseAsync(CreateMessage(response));\n\n            deferral.Complete();\n        }\n\n        private async Task HandleCheckFileExistsRequestAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<CheckFileExistsRequest>(messageContent);\n            var response = new CommonResponse();\n\n            try\n            {\n                response.Success = System.IO.File.Exists(request.Path);\n\n                if (!response.Success)\n                {\n                    response.Error = \"File not found.\";\n                }\n            }\n            catch (Exception e)\n            {\n                response.Success = false;\n                response.Error = e.Message;\n            }\n\n            await args.Request.SendResponseAsync(CreateMessage(response));\n\n            deferral.Complete();\n        }\n\n        private async Task GetCommandPathRequestHandlerAsync(AppServiceRequestReceivedEventArgs args)\n        {\n            var deferral = args.GetDeferral();\n            var messageContent = (string)args.Request.Message[MessageKeys.Content];\n            var request = JsonConvert.DeserializeObject<GetCommandPathRequest>(messageContent);\n            var response = new StringValueResponse();\n\n            try\n            {\n                response.Value = request.Command.GetCommandPath();\n                response.Success = true;\n            }\n            catch (Exception e)\n            {\n                response.Success = false;\n                response.Error = e.Message;\n            }\n\n            await args.Request.SendResponseAsync(CreateMessage(response));\n\n            deferral.Complete();\n        }\n\n        private ValueSet CreateMessage(IMessage content)\n        {\n            return new ValueSet\n            {\n                [MessageKeys.Type] = content.Identifier,\n                [MessageKeys.Content] = JsonConvert.SerializeObject(content)\n            };\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/ConPtySession.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Threading.Tasks;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Requests;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty\n{\n    public class ConPtySession : ITerminalSession\n    {\n        private TerminalsManager _terminalsManager;\n        private Terminal _terminal;\n\n        private BufferedReader _reader;\n        private bool _enableBuffer;\n\n        public byte Id { get; private set; }\n\n        public string ShellExecutableName { get; private set; }\n\n        public event EventHandler<int> ConnectionClosed;\n\n        public void Close()\n        {\n            _reader?.Dispose();\n\n            ConnectionClosed?.Invoke(this, _terminal.ExitCode);\n        }\n\n        public void Resize(TerminalSize size)\n        {\n            _terminal?.Resize(size.Columns, size.Rows);\n        }\n\n        public void Start(CreateTerminalRequest request, TerminalsManager terminalsManager)\n        {\n            _enableBuffer = false; // request.Profile.UseBuffer;\n\n            _reader?.Dispose();\n            _reader = null;\n\n            Id = request.Id;\n            _terminalsManager = terminalsManager;\n\n            ShellExecutableName = Path.GetFileNameWithoutExtension(request.Profile.Location);\n            var cwd = GetWorkingDirectory(request.Profile);\n\n            var args = !string.IsNullOrWhiteSpace(request.Profile.Location)\n                ? $\"\\\"{request.Profile.Location}\\\" {request.Profile.Arguments}\"\n                : request.Profile.Arguments;\n\n            _terminal = new Terminal();\n            _terminal.OutputReady += _terminal_OutputReady;\n            _terminal.Exited += _terminal_Exited;\n\n            Task.Factory.StartNew(() => _terminal.Start(args, cwd,\n                terminalsManager.GetDefaultEnvironmentVariableString(request.Profile.EnvironmentVariables),\n                request.Size.Columns, request.Size.Rows));\n        }\n\n        private void _terminal_Exited(object sender, EventArgs e)\n        {\n            Close();\n        }\n\n        private string GetWorkingDirectory(ShellProfile configuration)\n        {\n            if (string.IsNullOrWhiteSpace(configuration.WorkingDirectory) || !Directory.Exists(configuration.WorkingDirectory))\n            {\n                return Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);\n            }\n            return configuration.WorkingDirectory;\n        }\n\n        private void _terminal_OutputReady(object sender, EventArgs e)\n        {\n            if (_reader == null)\n            {\n                _reader = new BufferedReader(_terminal.ConsoleOutStream,\n                    bytes => _terminalsManager.DisplayTerminalOutput(Id, bytes), _enableBuffer);\n            }\n        }\n\n        public void Write(byte[] data)\n        {\n            _terminal?.WriteToPseudoConsole(data);\n        }\n\n        public void Pause(bool value)\n        {\n            _reader?.SetPaused(value);\n        }\n\n        ~ConPtySession()\n        {\n            Dispose(false);\n        }\n\n        #region IDisposable Support\n\n        private bool _disposed;\n\n        private void Dispose(bool disposing)\n        {\n            if (!_disposed)\n            {\n                if (disposing)\n                {\n                    _terminal?.Dispose();\n                }\n\n                _disposed = true;\n\n                _reader?.Dispose();\n            }\n        }\n\n        public void Dispose()\n        {\n            _terminal.Exited -= _terminal_Exited;\n            _terminal.OutputReady -= _terminal_OutputReady;\n            Dispose(true);\n        }\n\n        #endregion IDisposable Support\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/Native/ConsoleApi.cs",
    "content": "﻿using Microsoft.Win32.SafeHandles;\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty.Native\n{\n    /// <summary>\n    /// PInvoke signatures for Win32's Console API.\n    /// </summary>\n    internal static class ConsoleApi\n    {\n        internal const uint ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004;\n        internal const uint DISABLE_NEWLINE_AUTO_RETURN = 0x0008;\n        internal const uint GENERIC_WRITE = 0x40000000;\n        internal const uint GENERIC_READ = 0x80000000;\n        internal const uint FILE_SHARE_WRITE = 0x00000002;\n        internal const uint OPEN_EXISTING = 0x00000003;\n        internal const uint FILE_ATTRIBUTE_NORMAL = 0x80;\n        internal const string ConsoleOutPseudoFilename = \"CONOUT$\";\n\n        [DllImport(\"kernel32.dll\", EntryPoint = \"AllocConsole\", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]\n        internal static extern bool AllocConsole();\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern IntPtr GetConsoleWindow();\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern bool SetConsoleMode(SafeFileHandle hConsoleHandle, uint mode);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern bool GetConsoleMode(SafeFileHandle handle, out uint mode);\n\n        [DllImport(\"kernel32.dll\", EntryPoint = \"CreateFileW\", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]\n        internal static extern IntPtr CreateFileW(\n             string lpFileName,\n             uint dwDesiredAccess,\n             uint dwShareMode,\n             IntPtr lpSecurityAttributes,\n             uint dwCreationDisposition,\n             uint dwFlagsAndAttributes,\n             IntPtr hTemplateFile);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern bool SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add);\n        internal delegate bool ConsoleEventDelegate(CtrlTypes ctrlType);\n\n        internal enum CtrlTypes : uint\n        {\n            CTRL_C_EVENT = 0,\n            CTRL_BREAK_EVENT,\n            CTRL_CLOSE_EVENT,\n            CTRL_LOGOFF_EVENT = 5,\n            CTRL_SHUTDOWN_EVENT\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/Native/ProcessApi.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty.Native\n{\n    /// <summary>\n    /// PInvoke signatures for Win32's Process API.\n    /// </summary>\n    internal static class ProcessApi\n    {\n        internal const uint EXTENDED_STARTUPINFO_PRESENT = 0x00080000;\n\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]\n        internal struct STARTUPINFOEX\n        {\n            public STARTUPINFO StartupInfo;\n            public IntPtr lpAttributeList;\n        }\n\n        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]\n        internal struct STARTUPINFO\n        {\n            public int cb;\n            public string lpReserved;\n            public string lpDesktop;\n            public string lpTitle;\n            public int dwX;\n            public int dwY;\n            public int dwXSize;\n            public int dwYSize;\n            public int dwXCountChars;\n            public int dwYCountChars;\n            public int dwFillAttribute;\n            public int dwFlags;\n            public short wShowWindow;\n            public short cbReserved2;\n            public IntPtr lpReserved2;\n            public IntPtr hStdInput;\n            public IntPtr hStdOutput;\n            public IntPtr hStdError;\n        }\n\n        [StructLayout(LayoutKind.Sequential)]\n        internal struct PROCESS_INFORMATION\n        {\n            public IntPtr hProcess;\n            public IntPtr hThread;\n            public int dwProcessId;\n            public int dwThreadId;\n        }\n\n        [StructLayout(LayoutKind.Sequential)]\n        internal struct SECURITY_ATTRIBUTES\n        {\n            public int nLength;\n            public IntPtr lpSecurityDescriptor;\n            public int bInheritHandle;\n        }\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        internal static extern bool InitializeProcThreadAttributeList(\n            IntPtr lpAttributeList, int dwAttributeCount, int dwFlags, ref IntPtr lpSize);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        internal static extern bool UpdateProcThreadAttribute(\n            IntPtr lpAttributeList, uint dwFlags, IntPtr attribute, IntPtr lpValue,\n            IntPtr cbSize, IntPtr lpPreviousValue, IntPtr lpReturnSize);\n\n        [DllImport(\"kernel32.dll\")]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        internal static extern bool CreateProcess(\n            string lpApplicationName, string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes,\n            ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags,\n            IntPtr lpEnvironment, string lpCurrentDirectory, [In] ref STARTUPINFOEX lpStartupInfo,\n            out PROCESS_INFORMATION lpProcessInformation);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        [return: MarshalAs(UnmanagedType.Bool)]\n        internal static extern bool DeleteProcThreadAttributeList(IntPtr lpAttributeList);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern bool CloseHandle(IntPtr hObject);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/Native/PseudoConsoleApi.cs",
    "content": "﻿using Microsoft.Win32.SafeHandles;\nusing System;\nusing System.Runtime.InteropServices;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty.Native\n{\n    /// <summary>\n    /// PInvoke signatures for Win32's PseudoConsole API.\n    /// </summary>\n    internal static class PseudoConsoleApi\n    {\n        internal const uint PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016;\n\n        [StructLayout(LayoutKind.Sequential)]\n        internal struct COORD\n        {\n            public short X;\n            public short Y;\n        }\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern int CreatePseudoConsole(COORD size, SafeFileHandle hInput, SafeFileHandle hOutput, uint dwFlags, out IntPtr phPC);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern int ResizePseudoConsole(IntPtr hPC, COORD size);\n\n        [DllImport(\"kernel32.dll\", SetLastError = true)]\n        internal static extern int ClosePseudoConsole(IntPtr hPC);\n\n        [DllImport(\"kernel32.dll\", CharSet = CharSet.Auto, SetLastError = true)]\n        internal static extern bool CreatePipe(out SafeFileHandle hReadPipe, out SafeFileHandle hWritePipe, IntPtr lpPipeAttributes, int nSize);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/Processes/Process.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Runtime.InteropServices;\nusing static FluentTerminal.SystemTray.Native.ProcessApi;\nusing static FluentTerminal.SystemTray.Services.ConPty.Native.ProcessApi;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty.Processes\n{\n    /// <summary>\n    /// Represents an instance of a process.\n    /// </summary>\n    internal sealed class Process : IDisposable\n    {\n        public Process(STARTUPINFOEX startupInfo, PROCESS_INFORMATION processInfo)\n        {\n            StartupInfo = startupInfo;\n            ProcessInfo = processInfo;\n        }\n\n        ~Process()\n        {\n            Dispose(false);\n        }\n\n        public STARTUPINFOEX StartupInfo { get; }\n        public PROCESS_INFORMATION ProcessInfo { get; }\n\n        /// <summary>\n        /// Returns the exit code for the process.\n        /// </summary>\n        public uint GetExitCode() {\n            if (!GetExitCodeProcess(ProcessInfo.hProcess, out uint exitCode))\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), \"could not retrieve process exit code\");\n            }\n            return exitCode;\n        }\n\n        // <summary>\n        // Kills the process and its children, and grandchildren etc.\n        // </summary>\n        public void KillTree() {\n            if (ProcessInfo.dwProcessId > 0)\n            {\n                ProcessUtils.KillTree(ProcessInfo.dwProcessId);\n            }\n        }\n\n        #region IDisposable Support\n\n        public void Dispose()\n        {\n            Dispose(true);\n        }\n\n        private bool alreadyDisposed = false; // To detect redundant calls\n\n        public void Dispose(bool disposeManaged)\n        {\n            if (alreadyDisposed)\n            {\n                return;\n            }\n            \n            // Clean up resources (all unmanaged in this case)\n\n            // Kill the process and any children\n            KillTree();\n\n            // Free the attribute list\n            if (StartupInfo.lpAttributeList != IntPtr.Zero)\n            {\n                DeleteProcThreadAttributeList(StartupInfo.lpAttributeList);\n                Marshal.FreeHGlobal(StartupInfo.lpAttributeList);\n            }\n\n            // Close process and thread handles\n            if (ProcessInfo.hProcess != IntPtr.Zero)\n            {\n                CloseHandle(ProcessInfo.hProcess);\n            }\n            if (ProcessInfo.hThread != IntPtr.Zero)\n            {\n                CloseHandle(ProcessInfo.hThread);\n            }\n\n            alreadyDisposed = true;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/Processes/ProcessFactory.cs",
    "content": "﻿using FluentTerminal.App.Services;\nusing System;\nusing System.ComponentModel;\nusing System.Runtime.InteropServices;\nusing static FluentTerminal.SystemTray.Services.ConPty.Native.ProcessApi;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty.Processes\n{\n    /// <summary>\n    /// Support for starting and configuring processes.\n    /// </summary>\n    /// <remarks>\n    /// Possible to replace with managed code? The key is being able to provide the PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE attribute\n    /// </remarks>\n    internal static class ProcessFactory\n    {\n        /// <summary>\n        /// Start and configure a process. The return value represents the process and should be disposed.\n        /// </summary>\n        internal static Process Start(string command, string directory, string environment, IntPtr attributes, IntPtr hPC)\n        {\n            var startupInfo = ConfigureProcessThread(hPC, attributes);\n            var processInfo = RunProcess(ref startupInfo, command, directory, environment);\n            return new Process(startupInfo, processInfo);\n        }\n\n        private static STARTUPINFOEX ConfigureProcessThread(IntPtr hPC, IntPtr attributes)\n        {\n            // this method implements the behavior described in https://docs.microsoft.com/en-us/windows/console/creating-a-pseudoconsole-session#preparing-for-creation-of-the-child-process\n\n            var lpSize = IntPtr.Zero;\n            var success = InitializeProcThreadAttributeList(\n                lpAttributeList: IntPtr.Zero,\n                dwAttributeCount: 1,\n                dwFlags: 0,\n                lpSize: ref lpSize\n            );\n            if (success || lpSize == IntPtr.Zero) // we're not expecting `success` here, we just want to get the calculated lpSize\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), \"Could not calculate the number of bytes for the attribute list.\");\n            }\n\n            var startupInfo = new STARTUPINFOEX();\n            startupInfo.StartupInfo.cb = Marshal.SizeOf<STARTUPINFOEX>();\n            startupInfo.lpAttributeList = Marshal.AllocHGlobal(lpSize);\n\n            success = InitializeProcThreadAttributeList(\n                lpAttributeList: startupInfo.lpAttributeList,\n                dwAttributeCount: 1,\n                dwFlags: 0,\n                lpSize: ref lpSize\n            );\n            if (!success)\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), \"Could not set up attribute list.\");\n            }\n\n            success = UpdateProcThreadAttribute(\n                lpAttributeList: startupInfo.lpAttributeList,\n                dwFlags: 0,\n                attribute: attributes,\n                lpValue: hPC,\n                cbSize: (IntPtr)IntPtr.Size,\n                lpPreviousValue: IntPtr.Zero,\n                lpReturnSize: IntPtr.Zero\n            );\n            if (!success)\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), \"Could not set pseudoconsole thread attribute.\");\n            }\n\n            return startupInfo;\n        }\n\n        private static PROCESS_INFORMATION RunProcess(ref STARTUPINFOEX sInfoEx, string commandLine, string directory, string environment)\n        {\n            var lpEnvironment = Marshal.StringToHGlobalAnsi(environment);\n            int securityAttributeSize = Marshal.SizeOf<SECURITY_ATTRIBUTES>();\n            var pSec = new SECURITY_ATTRIBUTES { nLength = securityAttributeSize };\n            var tSec = new SECURITY_ATTRIBUTES { nLength = securityAttributeSize };\n            var success = CreateProcess(\n                lpApplicationName: null,\n                lpCommandLine: commandLine,\n                lpProcessAttributes: ref pSec,\n                lpThreadAttributes: ref tSec,\n                bInheritHandles: false,\n                dwCreationFlags: EXTENDED_STARTUPINFO_PRESENT,\n                lpEnvironment: lpEnvironment,\n                lpCurrentDirectory: directory,\n                lpStartupInfo: ref sInfoEx,\n                lpProcessInformation: out PROCESS_INFORMATION pInfo\n            );\n            if (!success)\n            {\n                var errorCode = Marshal.GetLastWin32Error();\n                Logger.Instance.Error(\"RunProcess: Could not create Process. Win32 Error: {@errorCode}\", errorCode);\n                Marshal.FreeHGlobal(lpEnvironment);\n                throw new Win32Exception(errorCode, \"Could not create process.\");\n            }\n\n            Marshal.FreeHGlobal(lpEnvironment);\n            return pInfo;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/PseudoConsole.cs",
    "content": "﻿using Microsoft.Win32.SafeHandles;\nusing System;\nusing System.ComponentModel;\nusing static FluentTerminal.SystemTray.Services.ConPty.Native.PseudoConsoleApi;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty\n{\n    /// <summary>\n    /// Utility functions around the new Pseudo Console APIs.\n    /// </summary>\n    internal sealed class PseudoConsole : IDisposable\n    {\n        public static readonly IntPtr PseudoConsoleThreadAttribute = (IntPtr)PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE;\n\n        public IntPtr Handle { get; }\n\n        private PseudoConsole(IntPtr handle)\n        {\n            Handle = handle;\n        }\n\n        ~PseudoConsole()\n        {\n            Dispose();\n        }\n\n        internal static PseudoConsole Create(SafeFileHandle inputReadSide, SafeFileHandle outputWriteSide, int width, int height)\n        {\n            var createResult = CreatePseudoConsole(\n                new COORD { X = (short)width, Y = (short)height },\n                inputReadSide, outputWriteSide,\n                0, out IntPtr hPC);\n            if (createResult != 0)\n            {\n                throw new Win32Exception(createResult, \"Could not create psuedo console.\");\n            }\n            return new PseudoConsole(hPC);\n        }\n\n        internal void Resize(int width, int height)\n        {\n            ResizePseudoConsole(Handle, new COORD { X = (short)width, Y = (short)height });\n        }\n\n        private bool alreadyDisposed = false;\n\n        public void Dispose()\n        {\n            if (alreadyDisposed)\n            {\n                return;\n            }\n\n            ClosePseudoConsole(Handle);\n            GC.SuppressFinalize(this);\n\n            alreadyDisposed = true;\n        }\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/PseudoConsolePipe.cs",
    "content": "﻿using Microsoft.Win32.SafeHandles;\nusing System;\nusing System.ComponentModel;\nusing System.Runtime.InteropServices;\nusing static FluentTerminal.SystemTray.Services.ConPty.Native.PseudoConsoleApi;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty\n{\n    /// <summary>\n    /// A pipe used to talk to the pseudoconsole, as described in:\n    /// https://docs.microsoft.com/en-us/windows/console/creating-a-pseudoconsole-session\n    /// </summary>\n    /// <remarks>\n    /// We'll have two instances of this class, one for input and one for output.\n    /// </remarks>\n    internal sealed class PseudoConsolePipe : IDisposable\n    {\n        public readonly SafeFileHandle ReadSide;\n        public readonly SafeFileHandle WriteSide;\n\n        public PseudoConsolePipe()\n        {\n            if (!CreatePipe(out ReadSide, out WriteSide, IntPtr.Zero, 0))\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), \"failed to create pipe\");\n            }\n        }\n\n        ~PseudoConsolePipe()\n        {\n            Dispose(false);\n        }\n\n        #region IDisposable\n\n        public void Dispose()\n        {\n            Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        void Dispose(bool disposing)\n        {\n            if (disposing)\n            {\n                ReadSide?.Dispose();\n                WriteSide?.Dispose();\n            }\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ConPty/Terminal.cs",
    "content": "﻿using Microsoft.Win32.SafeHandles;\nusing System;\nusing System.ComponentModel;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing System.Threading;\nusing FluentTerminal.SystemTray.Services.ConPty.Processes;\nusing static FluentTerminal.SystemTray.Native.WindowApi;\nusing static FluentTerminal.SystemTray.Services.ConPty.Native.ConsoleApi;\n\nnamespace FluentTerminal.SystemTray.Services.ConPty\n{\n    /// <summary>\n    /// Class for managing communication with the underlying console, and communicating with its pseudoconsole.\n    /// </summary>\n    public sealed class Terminal : IDisposable\n    {\n        private SafeFileHandle _consoleInputPipeWriteHandle;\n        private FileStream _consoleInputWriter;\n        private PseudoConsolePipe _inputPipe;\n        private PseudoConsolePipe _outputPipe;\n        private PseudoConsole _pseudoConsole;\n        private Process _process;\n\n        /// <summary>\n        /// A stream of VT-100-enabled output from the console.\n        /// </summary>\n        public FileStream ConsoleOutStream { get; private set; }\n\n        /// <summary>\n        /// Fired once the console has been hooked up and is ready to receive input.\n        /// </summary>\n        public event EventHandler OutputReady;\n        public event EventHandler Exited;\n\n        /// <summary>\n        /// The exit code of the terminal's process. -1 if the process hasn't exited yet.\n        /// </summary>\n        public int ExitCode { get; private set; } = -1;\n\n        public Terminal()\n        {\n            // By default, UI applications don't have a console associated with them.\n            // So first, we check to see if this process has a console.\n            if (GetConsoleWindow() == IntPtr.Zero)\n            {\n                // If it doesn't ask Windows to allocate one to it for us.\n                bool createConsoleSuccess = AllocConsole();\n                if (!createConsoleSuccess)\n                {\n                    throw new Win32Exception(Marshal.GetLastWin32Error(), $\"Could not allocate console for this process.\");\n                }\n            }\n\n            var windowHandle = GetConsoleWindow();\n            ShowWindow(windowHandle, SW_HIDE);\n\n            // And enable VT processing for our process's console.\n            EnableVirtualTerminalSequenceProcessing();\n        }\n\n        ~Terminal()\n        {\n            Dispose(false);\n        }\n\n        private void EnableVirtualTerminalSequenceProcessing()\n        {\n            SafeFileHandle screenBuffer = GetConsoleScreenBuffer();\n            if (!GetConsoleMode(screenBuffer, out uint outConsoleMode))\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), $\"Could not get console mode.\");\n            }\n            outConsoleMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING | DISABLE_NEWLINE_AUTO_RETURN;\n\n            if (!SetConsoleMode(screenBuffer, outConsoleMode))\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), $\"Could not enable virtual terminal processing.\");\n            }\n        }\n\n        /// <summary>\n        /// Start the psuedoconsole and run the process as shown in \n        /// https://docs.microsoft.com/en-us/windows/console/creating-a-pseudoconsole-session#creating-the-pseudoconsole\n        /// </summary>\n        /// <param name=\"command\">the command to run, e.g. cmd.exe</param>\n        /// <param name=\"consoleHeight\">The height (in characters) to start the pseudoconsole with. Defaults to 80.</param>\n        /// <param name=\"consoleWidth\">The width (in characters) to start the pseudoconsole with. Defaults to 30.</param>\n        public void Start(string command, string directory, string environment, int consoleWidth = 80, int consoleHeight = 30)\n        {\n            _inputPipe = new PseudoConsolePipe();\n            _outputPipe = new PseudoConsolePipe();\n            _pseudoConsole = PseudoConsole.Create(_inputPipe.ReadSide, _outputPipe.WriteSide, consoleWidth, consoleHeight);\n\n            _process = ProcessFactory.Start(command, directory, environment, PseudoConsole.PseudoConsoleThreadAttribute, _pseudoConsole.Handle);\n\n            // copy all pseudoconsole output to a FileStream and expose it to the rest of the app\n            ConsoleOutStream = new FileStream(_outputPipe.ReadSide, FileAccess.Read);\n            OutputReady.Invoke(this, EventArgs.Empty);\n\n            // Store input pipe handle, and a writer for later reuse\n            _consoleInputPipeWriteHandle = _inputPipe.WriteSide;\n            _consoleInputWriter = new FileStream(_consoleInputPipeWriteHandle, FileAccess.Write);\n\n            WaitForExit(_process).WaitOne(Timeout.Infinite);\n            this.ExitCode = (int)_process.GetExitCode();\n\n            Exited?.Invoke(this, EventArgs.Empty);\n        }\n\n        public  void Resize(int width, int height)\n        {\n            _pseudoConsole?.Resize(width, height);\n        }\n\n        /// <summary>\n        /// Sends the given string to the anonymous pipe that writes to the active pseudoconsole.\n        /// </summary>\n        public void WriteToPseudoConsole(byte[] data)\n        {\n            _consoleInputWriter?.Write(data, 0, data.Length);\n            _consoleInputWriter?.Flush();\n        }\n\n        /// <summary>\n        /// Get an AutoResetEvent that signals when the process exits\n        /// </summary>\n        private static AutoResetEvent WaitForExit(Process process) =>\n            new AutoResetEvent(false)\n            {\n                SafeWaitHandle = new SafeWaitHandle(process.ProcessInfo.hProcess, ownsHandle: false)\n            };\n\n        /// <summary>\n        /// A helper method that opens a handle on the console's screen buffer, which will allow us to get its output,\n        /// even if STDOUT has been redirected (which Visual Studio does by default).\n        /// </summary>\n        /// <returns>A file handle to the console's screen buffer.</returns>\n        /// <remarks>This is described in more detail here: https://docs.microsoft.com/en-us/windows/console/console-handles </remarks>\n        private SafeFileHandle GetConsoleScreenBuffer()\n        {\n            IntPtr file = CreateFileW(\n                ConsoleOutPseudoFilename,\n                GENERIC_WRITE | GENERIC_READ,\n                FILE_SHARE_WRITE,\n                IntPtr.Zero,\n                OPEN_EXISTING,\n                FILE_ATTRIBUTE_NORMAL,\n                IntPtr.Zero);\n\n            if (file == new IntPtr(-1))\n            {\n                throw new Win32Exception(Marshal.GetLastWin32Error(), \"Could not get console screen buffer.\");\n            }\n\n            return new SafeFileHandle(file, true);\n        }\n\n        #region IDisposable Support\n\n        public void Dispose()\n        {\n            Dispose(true);\n            GC.SuppressFinalize(true);\n        }\n\n        private bool alreadyDisposed = false;\n\n        public void Dispose(bool disposeManaged)\n        {\n            if (alreadyDisposed)\n            {\n                return;\n            }\n\n            if (disposeManaged)\n            {\n                ConsoleOutStream.Dispose();\n                // Dispose pseudo console before _consoleInputWriter to avoid\n                // hanging on call of ClosePseudoConsole\n                _pseudoConsole?.Dispose();\n                _consoleInputWriter?.Dispose();\n                _process?.Dispose();\n                _outputPipe?.Dispose();\n                _inputPipe?.Dispose();\n            }\n\n            alreadyDisposed = true;\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ITerminalSession.cs",
    "content": "﻿using System;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Requests;\n\nnamespace FluentTerminal.SystemTray.Services\n{\n    public interface ITerminalSession : IDisposable\n    {\n        byte Id { get; }\n        string ShellExecutableName { get; }\n\n        event EventHandler<int> ConnectionClosed;\n\n        void Close();\n        void Resize(TerminalSize size);\n        void Write(byte[] data);\n        void Start(CreateTerminalRequest request, TerminalsManager terminalsManager);\n        void Pause(bool value);\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/TerminalsManager.cs",
    "content": "﻿using FluentTerminal.App.Services;\r\nusing FluentTerminal.Models;\r\nusing FluentTerminal.Models.Enums;\r\nusing FluentTerminal.Models.Requests;\r\nusing FluentTerminal.Models.Responses;\r\nusing FluentTerminal.SystemTray.Services.ConPty;\r\nusing FluentTerminal.SystemTray.Services.WinPty;\r\nusing System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Text;\r\nusing System.Text.RegularExpressions;\r\nusing Windows.ApplicationModel;\r\nusing FluentTerminal.Models.Messages;\r\nusing Microsoft.Toolkit.Mvvm.Messaging;\r\n\r\nnamespace FluentTerminal.SystemTray.Services\r\n{\r\n    public struct TerminalSessionInfo\r\n    {\r\n        public DateTime StartTime { get; set; }\r\n        public string ProfileName { get; set; }\r\n        public ITerminalSession Session { get; set; }\r\n    }\r\n\r\n    public class TerminalsManager\r\n    {\r\n        private readonly Dictionary<byte, TerminalSessionInfo> _terminals = new Dictionary<byte, TerminalSessionInfo>();\r\n\r\n        public event EventHandler<TerminalOutput> DisplayOutputRequested;\r\n\r\n        public event EventHandler<TerminalExitStatus> TerminalExited;\r\n\r\n        private static readonly Regex EscapeSequencePattern = new Regex(@\"((\\x9B|\\x1B\\[)[0-?]*[ -\\/]*[@-~])|((\\x9D|\\x1B\\]).*\\x07)\", RegexOptions.Compiled);\r\n\r\n        private readonly Dictionary<byte, string> _cachedLogPath = new Dictionary<byte, string>();\r\n\r\n        private ApplicationSettings _applicationSettings;\r\n\r\n        public TerminalsManager(ISettingsService settingsService)\r\n        {\r\n            _applicationSettings = settingsService.GetApplicationSettings();\r\n            WeakReferenceMessenger.Default.Register<TerminalsManager, ApplicationSettingsChangedMessage>(this, (r, m) => r.OnApplicationSettingsChanged(m));\r\n        }\r\n\r\n        private void OnApplicationSettingsChanged(ApplicationSettingsChangedMessage message)\r\n        {\r\n            _applicationSettings = message.ApplicationSettings;\r\n        }\r\n\r\n        public void DisplayTerminalOutput(byte terminalId, byte[] output)\r\n        {\r\n            if (_applicationSettings.EnableLogging && Directory.Exists(_applicationSettings.LogDirectoryPath))\r\n            {\r\n                var logOutput = output;\r\n                if (_applicationSettings.PrintableOutputOnly)\r\n                {\r\n                    var strOutput = Encoding.UTF8.GetString(logOutput);\r\n                    strOutput = EscapeSequencePattern.Replace(strOutput, \"\");\r\n                    logOutput = Encoding.UTF8.GetBytes(strOutput);\r\n                }\r\n\r\n                try\r\n                {\r\n                    using var logFileStream = System.IO.File.Open(GetLogFilePath(terminalId), System.IO.FileMode.Append);\r\n                    logFileStream.Write(logOutput, 0, logOutput.Length);\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    Logger.Instance.Debug(\"DisplayTerminalOutput failed. Exception: {0}\", e);\r\n                }\r\n            }\r\n\r\n            DisplayOutputRequested?.Invoke(this, new TerminalOutput\r\n            {\r\n                TerminalId = terminalId,\r\n                Data = output\r\n            });\r\n        }\r\n\r\n        private string GetLogFilePath(byte terminalId)\r\n        {\r\n            if (!_terminals.ContainsKey(terminalId))\r\n                return string.Empty;\r\n\r\n            if (!_cachedLogPath.ContainsKey(terminalId))\r\n            {\r\n                var sb = new StringBuilder();\r\n                sb.Append(_applicationSettings.LogDirectoryPath);\r\n                sb.Append(Path.DirectorySeparatorChar);\r\n                sb.Append(_terminals[terminalId].StartTime.ToString(\"yyyyMMddhhmmssfff\"));\r\n                sb.Append(\"_\");\r\n                sb.Append(_terminals[terminalId].ProfileName);\r\n                sb.Append(\".log\");\r\n\r\n                _cachedLogPath.Add(terminalId, sb.ToString());\r\n            }\r\n\r\n            return _cachedLogPath[terminalId];\r\n        }\r\n\r\n        public CreateTerminalResponse CreateTerminal(CreateTerminalRequest request)\r\n        {\r\n            if (_terminals.ContainsKey(request.Id))\r\n            {\r\n                // App terminated without cleaning up, removing orphaned sessions\r\n                foreach (var item in _terminals.Values)\r\n                {\r\n                    item.Session.Dispose();\r\n                }\r\n                _terminals.Clear();\r\n            }\r\n\r\n            request.Profile.Location = Utilities.ResolveLocation(request.Profile.Location);\r\n\r\n            ITerminalSession terminal = null;\r\n            try\r\n            {\r\n                if (request.SessionType == SessionType.WinPty)\r\n                {\r\n                    terminal = new WinPtySession();\r\n                }\r\n                else\r\n                {\r\n                    terminal = new ConPtySession();\r\n                }\r\n                terminal.Start(request, this);\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                return new CreateTerminalResponse { Error = e.ToString() };\r\n            }\r\n\r\n            var name = string.IsNullOrEmpty(request.Profile.Name) ? terminal.ShellExecutableName : request.Profile.Name;\r\n            terminal.ConnectionClosed += OnTerminalConnectionClosed;\r\n            _terminals.Add(terminal.Id, new TerminalSessionInfo\r\n            {\r\n                ProfileName = name,\r\n                StartTime = DateTime.Now,\r\n                Session = terminal\r\n            });\r\n            return new CreateTerminalResponse\r\n            {\r\n                Success = true,\r\n                Name = name\r\n            };\r\n        }\r\n\r\n        public void Write(byte id, byte[] data)\r\n        {\r\n            if (_terminals.TryGetValue(id, out TerminalSessionInfo sessionInfo))\r\n            {\r\n                try\r\n                {\r\n                    sessionInfo.Session.Write(data);\r\n                }\r\n                catch (IOException e)\r\n                {\r\n                    Logger.Instance.Error($\"TerminalsManager.Write: sending user input to terminal with id '{id}' failed with exception: {e}\");\r\n                }\r\n            }\r\n        }\r\n\r\n        public void ResizeTerminal(byte id, TerminalSize size)\r\n        {\r\n            if (_terminals.TryGetValue(id, out TerminalSessionInfo sessionInfo))\r\n            {\r\n                try\r\n                {\r\n                    sessionInfo.Session.Resize(size);\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    Logger.Instance.Error($\"ResizeTerminal: resizing of terminal with id '{id}' failed with exception: {e}\");\r\n                }\r\n            }\r\n            else\r\n            {\r\n                Debug.WriteLine($\"ResizeTerminal: terminal with id '{id}' was not found\");\r\n            }\r\n        }\r\n\r\n        public void CloseTerminal(byte id)\r\n        {\r\n            if (_terminals.TryGetValue(id, out TerminalSessionInfo sessionInfo))\r\n            {\r\n                _terminals.Remove(sessionInfo.Session.Id);\r\n                sessionInfo.Session.Close();\r\n            }\r\n        }\r\n\r\n        public PauseTerminalOutputResponse PauseTermimal(byte id, bool pause)\r\n        {\r\n            var response = new PauseTerminalOutputResponse()\r\n            {\r\n                Success = true\r\n            };\r\n            if (_terminals.TryGetValue(id, out TerminalSessionInfo sessionInfo))\r\n            {\r\n                sessionInfo.Session.Pause(pause);\r\n            }\r\n            return response;\r\n        }\r\n\r\n        public string GetDefaultEnvironmentVariableString(Dictionary<string, string> additionalVariables)\r\n        {\r\n            var environmentVariables = Environment.GetEnvironmentVariables();\r\n            environmentVariables[\"TERM_PROGRAM\"] = \"FluentTerminal\";\r\n            environmentVariables[\"TERM_PROGRAM_VERSION\"] = $\"{Package.Current.Id.Version.Major}.{Package.Current.Id.Version.Minor}.{Package.Current.Id.Version.Build}.{Package.Current.Id.Version.Revision}\";\r\n\r\n            if (additionalVariables != null)\r\n            {\r\n                foreach (var kvp in additionalVariables)\r\n                {\r\n                    environmentVariables[kvp.Key] = kvp.Value;\r\n                }\r\n            }\r\n\r\n            var builder = new StringBuilder();\r\n\r\n            foreach (DictionaryEntry item in environmentVariables)\r\n            {\r\n                builder.Append(item.Key).Append(\"=\").Append(item.Value).Append(\"\\0\");\r\n            }\r\n            builder.Append('\\0');\r\n\r\n            return builder.ToString();\r\n        }\r\n\r\n        private void OnTerminalConnectionClosed(object sender, int exitcode)\r\n        {\r\n            if (sender is ITerminalSession terminal)\r\n            {\r\n                _terminals.Remove(terminal.Id);\r\n                TerminalExited?.Invoke(this, new TerminalExitStatus(terminal.Id, exitcode));\r\n                terminal.Dispose();\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/ToggleWindowService.cs",
    "content": "﻿using FluentTerminal.App.Services;\r\nusing FluentTerminal.Models;\r\nusing FluentTerminal.Models.Enums;\r\nusing GlobalHotKey;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows.Input;\r\nusing System.Windows.Threading;\r\nusing Windows.System;\r\nusing static FluentTerminal.SystemTray.Native.WindowApi;\r\n\r\nnamespace FluentTerminal.SystemTray.Services\r\n{\r\n    public class ToggleWindowService : IDisposable\r\n    {\r\n        private readonly HotKeyManager _hotKeyManager;\r\n        private readonly INotificationService _notificationService;\r\n        private readonly Dispatcher _dispatcher;\r\n        private bool _disposedValue;\r\n        private readonly List<HotKey> _hotKeys;\r\n\r\n        public ToggleWindowService(Dispatcher dispatcher, HotKeyManager hotKeyManager, INotificationService notificationService, ISettingsService settingsService)\r\n        {\r\n            _dispatcher = dispatcher;\r\n            _notificationService = notificationService;\r\n            _hotKeyManager = hotKeyManager;\r\n            _hotKeys = new List<HotKey>();\r\n            _hotKeyManager.KeyPressed += OnKeyPressed;\r\n\r\n            var keyBindings = settingsService.GetCommandKeyBindings()[nameof(Command.ToggleWindow)];\r\n            SetHotKeys(keyBindings);\r\n        }\r\n\r\n        public void Dispose()\r\n        {\r\n            Dispose(true);\r\n        }\r\n\r\n        public void SetHotKeys(IEnumerable<KeyBinding> keyBindings)\r\n        {\r\n            foreach (var hotKey in _hotKeys)\r\n            {\r\n                _dispatcher.Invoke(() =>\r\n                {\r\n                    _hotKeyManager.Unregister(hotKey);\r\n                });\r\n            }\r\n\r\n            _hotKeys.Clear();\r\n\r\n            foreach (var keyBinding in keyBindings)\r\n            {\r\n                try\r\n                {\r\n                    var key = Utilities.ExtendVirtualKeyToInputKey((ExtendedVirtualKey)keyBinding.Key);\r\n                    var modifiers = ModifierKeys.None;\r\n                    if (keyBinding.Alt)\r\n                    {\r\n                        modifiers |= ModifierKeys.Alt;\r\n                    }\r\n                    if (keyBinding.Ctrl)\r\n                    {\r\n                        modifiers |= ModifierKeys.Control;\r\n                    }\r\n                    if (keyBinding.Shift)\r\n                    {\r\n                        modifiers |= ModifierKeys.Shift;\r\n                    }\r\n                    if (keyBinding.Meta)\r\n                    {\r\n                        modifiers |= ModifierKeys.Windows;\r\n                    }\r\n\r\n                    var hotKey = new HotKey(key, modifiers);\r\n\r\n                    _dispatcher.Invoke(() =>\r\n                    {\r\n                        _hotKeyManager.Register(hotKey);\r\n                    });\r\n\r\n                    _hotKeys.Add(hotKey);\r\n                }\r\n                catch (Exception)\r\n                {\r\n                    _notificationService.ShowNotification(\"Error\", \"Failed to register the following hotkey: \" + GetKeyBindingRepresentation(keyBinding));\r\n                }\r\n            }\r\n        }\r\n\r\n        protected virtual void Dispose(bool disposing)\r\n        {\r\n            if (!_disposedValue)\r\n            {\r\n                if (disposing)\r\n                {\r\n                    _hotKeyManager?.Dispose();\r\n                }\r\n\r\n                _disposedValue = true;\r\n            }\r\n        }\r\n\r\n        [DllImport(\"user32.dll\")]\r\n        private static extern IntPtr GetForegroundWindow();\r\n\r\n        private static string GetKeyBindingRepresentation(KeyBinding keyBinding)\r\n        {\r\n            var keys = new List<string>();\r\n            if (keyBinding.Ctrl)\r\n            {\r\n                keys.Add(\"Ctrl\");\r\n            }\r\n            if (keyBinding.Alt)\r\n            {\r\n                keys.Add(\"Alt\");\r\n            }\r\n            if (keyBinding.Shift)\r\n            {\r\n                keys.Add(\"Shift\");\r\n            }\r\n\r\n            keys.Add(((ExtendedVirtualKey)keyBinding.Key).ToString());\r\n\r\n            return string.Join(\" + \", keys);\r\n        }\r\n\r\n        \r\n\r\n        private string GetActiveProcessFileName()\r\n        {\r\n            try\r\n            {\r\n                var hwnd = GetForegroundWindow();\r\n                GetWindowThreadProcessId(hwnd, out uint pid);\r\n                var process = Process.GetProcessById((int)pid);\r\n                return process.MainWindowTitle;\r\n            }\r\n            catch (Exception)\r\n            {\r\n                return null;\r\n            }\r\n        }\r\n\r\n        private async void OnKeyPressed(object sender, KeyPressedEventArgs e)\r\n        {\r\n            if (GetActiveProcessFileName().EndsWith(\"Fluent Terminal\"))\r\n            {\r\n                var hwnd = GetForegroundWindow();\r\n                ShowWindow(hwnd, SW_MINIMIZE);\r\n            }\r\n            else\r\n            {\r\n                await Launcher.LaunchUriAsync(new Uri(\"ftcmd://fluent.terminal?focus\"));\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/Services/WinPty/WinPtySession.cs",
    "content": "﻿using FluentTerminal.Models;\nusing FluentTerminal.Models.Requests;\nusing FluentTerminal.SystemTray.Native;\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.IO.Pipes;\nusing static winpty.WinPty;\n\nnamespace FluentTerminal.SystemTray.Services.WinPty\n{\n    public class WinPtySession : ITerminalSession\n    {\n        private bool _disposed;\n        private IntPtr _handle;\n        private Stream _stdin;\n        private Stream _stdout;\n        private TerminalsManager _terminalsManager;\n        private Process _shellProcess;\n        private BufferedReader _reader;\n        private bool _enableBuffer;\n\n        public void Start(CreateTerminalRequest request, TerminalsManager terminalsManager)\n        {\n            _enableBuffer = false; // request.Profile.UseBuffer;\n\n            Id = request.Id;\n            _terminalsManager = terminalsManager;\n\n            var configHandle = IntPtr.Zero;\n            var spawnConfigHandle = IntPtr.Zero;\n            var errorHandle = IntPtr.Zero;\n\n            try\n            {\n                configHandle = winpty_config_new(WINPTY_FLAG_COLOR_ESCAPES, out errorHandle);\n                winpty_config_set_initial_size(configHandle, request.Size.Columns, request.Size.Rows);\n\n                _handle = winpty_open(configHandle, out errorHandle);\n                if (errorHandle != IntPtr.Zero)\n                {\n                    throw new Exception(winpty_error_msg(errorHandle));\n                }\n\n                var cwd = GetWorkingDirectory(request.Profile);\n                var args = request.Profile.Arguments;\n\n                if (!string.IsNullOrWhiteSpace(request.Profile.Location))\n                {\n                    args = $\"\\\"{request.Profile.Location}\\\" {args}\";\n                }\n\n                spawnConfigHandle = winpty_spawn_config_new(WINPTY_SPAWN_FLAG_AUTO_SHUTDOWN, request.Profile.Location, args, cwd, terminalsManager.GetDefaultEnvironmentVariableString(request.Profile.EnvironmentVariables), out errorHandle);\n                if (errorHandle != IntPtr.Zero)\n                {\n                    throw new Exception(winpty_error_msg(errorHandle));\n                }\n\n                _stdin = CreatePipe(winpty_conin_name(_handle), PipeDirection.Out);\n                _stdout = CreatePipe(winpty_conout_name(_handle), PipeDirection.In);\n\n                if (!winpty_spawn(_handle, spawnConfigHandle, out IntPtr process, out IntPtr thread, out int procError, out errorHandle))\n                {\n                    throw new Exception($@\"Failed to start the shell process. Please check your shell settings.{Environment.NewLine}Tried to start: {request.Profile.Location} \"\"{request.Profile.Arguments}\"\"\");\n                }\n\n                var shellProcessId = ProcessApi.GetProcessId(process);\n                _shellProcess = Process.GetProcessById(shellProcessId);\n                _shellProcess.EnableRaisingEvents = true;\n                _shellProcess.Exited += _shellProcess_Exited;\n\n                if (!string.IsNullOrWhiteSpace(request.Profile.Location))\n                {\n                    ShellExecutableName = Path.GetFileNameWithoutExtension(request.Profile.Location);\n                }\n                else\n                {\n                    ShellExecutableName = request.Profile.Arguments.Split(' ')[0];\n                }\n            }\n            finally\n            {\n                winpty_config_free(configHandle);\n                winpty_spawn_config_free(spawnConfigHandle);\n                winpty_error_free(errorHandle);\n            }\n\n            _reader = new BufferedReader(_stdout, bytes => _terminalsManager.DisplayTerminalOutput(Id, bytes),\n                _enableBuffer);\n        }\n\n        private void _shellProcess_Exited(object sender, EventArgs e)\n        {\n            Close();\n        }\n\n        ~WinPtySession()\n        {\n            Dispose(false);\n        }\n\n        private string GetWorkingDirectory(ShellProfile configuration)\n        {\n            if (string.IsNullOrWhiteSpace(configuration.WorkingDirectory) || !Directory.Exists(configuration.WorkingDirectory))\n            {\n                return Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);\n            }\n            return configuration.WorkingDirectory;\n        }\n\n        public event EventHandler<int> ConnectionClosed;\n\n        public byte Id { get; private set; }\n\n        public string ShellExecutableName { get; private set; }\n\n        public void Dispose()\n        {\n            _shellProcess.Exited -= _shellProcess_Exited;\n            Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        public void Close()\n        {\n            _reader?.Dispose();\n\n            int exitCode = -1;\n            if (_shellProcess != null && _shellProcess.HasExited)\n            {\n                exitCode = _shellProcess.ExitCode;\n            }\n            ConnectionClosed?.Invoke(this, exitCode);\n        }\n\n        public void Write(byte[] data)\n        {\n            _stdin.Write(data, 0, data.Length);\n        }\n\n        public void Resize(TerminalSize size)\n        {\n            var errorHandle = IntPtr.Zero;\n            try\n            {\n                winpty_set_size(_handle, size.Columns, size.Rows, out errorHandle);\n                if (errorHandle != IntPtr.Zero)\n                {\n                    throw new Exception(winpty_error_msg(errorHandle));\n                }\n            }\n            finally\n            {\n                winpty_error_free(errorHandle);\n            }\n        }\n\n        protected virtual void Dispose(bool disposing)\n        {\n            if (!_disposed)\n            {\n                if (disposing)\n                {\n                    _stdin?.Dispose();\n                    _stdout?.Dispose();\n                }\n\n                winpty_free(_handle);\n\n                _reader?.Dispose();\n\n                _disposed = true;\n            }\n        }\n\n        private Stream CreatePipe(string pipeName, PipeDirection direction)\n        {\n            string serverName = \".\";\n            if (pipeName.StartsWith(\"\\\\\"))\n            {\n                int slash3 = pipeName.IndexOf('\\\\', 2);\n                if (slash3 != -1)\n                {\n                    serverName = pipeName.Substring(2, slash3 - 2);\n                }\n                int slash4 = pipeName.IndexOf('\\\\', slash3 + 1);\n                if (slash4 != -1)\n                {\n                    pipeName = pipeName.Substring(slash4 + 1);\n                }\n            }\n\n            var pipe = new NamedPipeClientStream(serverName, pipeName, direction);\n            pipe.Connect();\n            return pipe;\n        }\n\n        public void Pause(bool value)\n        {\n            _reader?.SetPaused(value);\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/SystemTrayApplicationContext.cs",
    "content": "﻿using Microsoft.Win32;\nusing System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Windows.Forms;\nusing Windows.ApplicationModel;\n\nnamespace FluentTerminal.SystemTray\n{\n    public class SystemTrayApplicationContext : ApplicationContext\n    {\n        private readonly NotifyIcon _notifyIcon;\n\n        public SystemTrayApplicationContext()\n        {\n            var openMenuItem = new MenuItem(\"Show\", new EventHandler(OpenAppAsync));\n            var newWindowItem = new MenuItem(\"New terminal\", new EventHandler(NewWindow));\n            var settingsMenuItem = new MenuItem(\"Show settings\", new EventHandler(ShowSettings));\n            var exitMenuItem = new MenuItem(\"Exit\", new EventHandler(Exit));\n\n            openMenuItem.DefaultItem = true;\n\n            _notifyIcon = new NotifyIcon();\n            _notifyIcon.DoubleClick += OpenAppAsync;\n            _notifyIcon.Text = \"Fluent Terminal\";\n\n            if (SystemUsesLightTheme())\n            {\n                _notifyIcon.Icon = Properties.Resources.Icon_mono_light;\n            }\n            else\n            {\n                _notifyIcon.Icon = Properties.Resources.Icon_mono_dark;\n            }\n\n            _notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] { openMenuItem, newWindowItem, settingsMenuItem, exitMenuItem });\n            _notifyIcon.Visible = true;\n        }\n\n        private void Exit(object sender, EventArgs e)\n        {\n            _notifyIcon.Dispose(); // cleans up the tray icon\n            Application.Exit();\n        }\n\n        private void NewWindow(object sender, EventArgs e)\n        {\n            Process.Start(\"flute.exe\", \"new\");\n        }\n\n        private async void OpenAppAsync(object sender, EventArgs e)\n        {\n            var appListEntries = await Package.Current.GetAppListEntriesAsync();\n            await appListEntries.First().LaunchAsync();\n        }\n\n        private void ShowSettings(object sender, EventArgs e)\n        {\n            Process.Start(\"flute.exe\", \"settings\");\n        }\n\n        /// <summary>\n        /// Checks whether the new light system theme in Windows 10 1903+ is used\n        /// </summary>\n        private bool SystemUsesLightTheme()\n        {\n            try\n            {\n                using (var regKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, string.Empty).OpenSubKey(@\"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\"))\n                {\n                    if (regKey.GetValueNames().Contains(\"SystemUsesLightTheme\"))\n                    {\n                        var value = regKey.GetValue(\"SystemUsesLightTheme\");\n                        return value is int intValue && intValue == 1;\n                    }\n                    else\n                    {\n                        return false;\n                    }\n                }\n            }\n            catch (Exception)\n            {\n                return false;\n            }\n        }\n    }\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/Utilities.cs",
    "content": "﻿using System;\r\nusing System.ComponentModel;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\nusing System.Reflection;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows.Input;\r\nusing FluentTerminal.App.Services;\r\nusing FluentTerminal.Models.Enums;\r\n\r\nnamespace FluentTerminal.SystemTray\r\n{\r\n    public static class Utilities\r\n    {\r\n        public static Key ExtendVirtualKeyToInputKey(ExtendedVirtualKey key)\r\n        {\r\n            switch (key)\r\n            {\r\n                case ExtendedVirtualKey.Cancel:\r\n                    return Key.Cancel;\r\n\r\n                case ExtendedVirtualKey.Back:\r\n                    return Key.Back;\r\n\r\n                case ExtendedVirtualKey.Tab:\r\n                    return Key.Tab;\r\n\r\n                case ExtendedVirtualKey.Clear:\r\n                    return Key.Clear;\r\n\r\n                case ExtendedVirtualKey.Enter:\r\n                    return Key.Enter;\r\n\r\n                case ExtendedVirtualKey.Shift:\r\n                    return Key.LeftShift;\r\n\r\n                case ExtendedVirtualKey.Menu:\r\n                    return Key.LeftAlt;\r\n\r\n                case ExtendedVirtualKey.Pause:\r\n                    return Key.Pause;\r\n\r\n                case ExtendedVirtualKey.CapitalLock:\r\n                    return Key.CapsLock;\r\n\r\n                case ExtendedVirtualKey.Kana:\r\n                    return Key.KanaMode;\r\n\r\n                case ExtendedVirtualKey.Junja:\r\n                    return Key.JunjaMode;\r\n\r\n                case ExtendedVirtualKey.Final:\r\n                    return Key.FinalMode;\r\n\r\n                case ExtendedVirtualKey.Kanji:\r\n                    return Key.KanjiMode;\r\n\r\n                case ExtendedVirtualKey.Escape:\r\n                    return Key.Escape;\r\n\r\n                case ExtendedVirtualKey.Convert:\r\n                    return Key.ImeConvert;\r\n\r\n                case ExtendedVirtualKey.NonConvert:\r\n                    return Key.ImeNonConvert;\r\n\r\n                case ExtendedVirtualKey.Accept:\r\n                    return Key.ImeAccept;\r\n\r\n                case ExtendedVirtualKey.ModeChange:\r\n                    return Key.ImeModeChange;\r\n\r\n                case ExtendedVirtualKey.Space:\r\n                    return Key.Space;\r\n\r\n                case ExtendedVirtualKey.PageUp:\r\n                    return Key.PageUp;\r\n\r\n                case ExtendedVirtualKey.PageDown:\r\n                    return Key.PageDown;\r\n\r\n                case ExtendedVirtualKey.End:\r\n                    return Key.End;\r\n\r\n                case ExtendedVirtualKey.Home:\r\n                    return Key.Home;\r\n\r\n                case ExtendedVirtualKey.Left:\r\n                    return Key.Left;\r\n\r\n                case ExtendedVirtualKey.Up:\r\n                    return Key.Up;\r\n\r\n                case ExtendedVirtualKey.Right:\r\n                    return Key.Right;\r\n\r\n                case ExtendedVirtualKey.Down:\r\n                    return Key.Down;\r\n\r\n                case ExtendedVirtualKey.Select:\r\n                    return Key.Select;\r\n\r\n                case ExtendedVirtualKey.Print:\r\n                    return Key.Print;\r\n\r\n                case ExtendedVirtualKey.Execute:\r\n                    return Key.Execute;\r\n\r\n                case ExtendedVirtualKey.Snapshot:\r\n                    return Key.Snapshot;\r\n\r\n                case ExtendedVirtualKey.Insert:\r\n                    return Key.Insert;\r\n\r\n                case ExtendedVirtualKey.Delete:\r\n                    return Key.Delete;\r\n\r\n                case ExtendedVirtualKey.Help:\r\n                    return Key.Help;\r\n\r\n                case ExtendedVirtualKey.Number0:\r\n                    return Key.D0;\r\n\r\n                case ExtendedVirtualKey.Number1:\r\n                    return Key.D1;\r\n\r\n                case ExtendedVirtualKey.Number2:\r\n                    return Key.D2;\r\n\r\n                case ExtendedVirtualKey.Number3:\r\n                    return Key.D3;\r\n\r\n                case ExtendedVirtualKey.Number4:\r\n                    return Key.D4;\r\n\r\n                case ExtendedVirtualKey.Number5:\r\n                    return Key.D5;\r\n\r\n                case ExtendedVirtualKey.Number6:\r\n                    return Key.D6;\r\n\r\n                case ExtendedVirtualKey.Number7:\r\n                    return Key.D7;\r\n\r\n                case ExtendedVirtualKey.Number8:\r\n                    return Key.D8;\r\n\r\n                case ExtendedVirtualKey.Number9:\r\n                    return Key.D9;\r\n\r\n                case ExtendedVirtualKey.A:\r\n                    return Key.A;\r\n\r\n                case ExtendedVirtualKey.B:\r\n                    return Key.B;\r\n\r\n                case ExtendedVirtualKey.C:\r\n                    return Key.C;\r\n\r\n                case ExtendedVirtualKey.D:\r\n                    return Key.D;\r\n\r\n                case ExtendedVirtualKey.E:\r\n                    return Key.E;\r\n\r\n                case ExtendedVirtualKey.F:\r\n                    return Key.F;\r\n\r\n                case ExtendedVirtualKey.G:\r\n                    return Key.G;\r\n\r\n                case ExtendedVirtualKey.H:\r\n                    return Key.H;\r\n\r\n                case ExtendedVirtualKey.I:\r\n                    return Key.I;\r\n\r\n                case ExtendedVirtualKey.J:\r\n                    return Key.J;\r\n\r\n                case ExtendedVirtualKey.K:\r\n                    return Key.K;\r\n\r\n                case ExtendedVirtualKey.L:\r\n                    return Key.L;\r\n\r\n                case ExtendedVirtualKey.M:\r\n                    return Key.M;\r\n\r\n                case ExtendedVirtualKey.N:\r\n                    return Key.N;\r\n\r\n                case ExtendedVirtualKey.O:\r\n                    return Key.O;\r\n\r\n                case ExtendedVirtualKey.P:\r\n                    return Key.P;\r\n\r\n                case ExtendedVirtualKey.Q:\r\n                    return Key.Q;\r\n\r\n                case ExtendedVirtualKey.R:\r\n                    return Key.R;\r\n\r\n                case ExtendedVirtualKey.S:\r\n                    return Key.S;\r\n\r\n                case ExtendedVirtualKey.T:\r\n                    return Key.T;\r\n\r\n                case ExtendedVirtualKey.U:\r\n                    return Key.U;\r\n\r\n                case ExtendedVirtualKey.V:\r\n                    return Key.V;\r\n\r\n                case ExtendedVirtualKey.W:\r\n                    return Key.W;\r\n\r\n                case ExtendedVirtualKey.X:\r\n                    return Key.X;\r\n\r\n                case ExtendedVirtualKey.Y:\r\n                    return Key.Y;\r\n\r\n                case ExtendedVirtualKey.Z:\r\n                    return Key.Z;\r\n\r\n                case ExtendedVirtualKey.LeftWindows:\r\n                    return Key.LWin;\r\n\r\n                case ExtendedVirtualKey.RightWindows:\r\n                    return Key.RWin;\r\n\r\n                case ExtendedVirtualKey.Application:\r\n                    return Key.Apps;\r\n\r\n                case ExtendedVirtualKey.Sleep:\r\n                    return Key.Sleep;\r\n\r\n                case ExtendedVirtualKey.NumberPad0:\r\n                    return Key.NumPad0;\r\n\r\n                case ExtendedVirtualKey.NumberPad1:\r\n                    return Key.NumPad1;\r\n\r\n                case ExtendedVirtualKey.NumberPad2:\r\n                    return Key.NumPad2;\r\n\r\n                case ExtendedVirtualKey.NumberPad3:\r\n                    return Key.NumPad3;\r\n\r\n                case ExtendedVirtualKey.NumberPad4:\r\n                    return Key.NumPad4;\r\n\r\n                case ExtendedVirtualKey.NumberPad5:\r\n                    return Key.NumPad5;\r\n\r\n                case ExtendedVirtualKey.NumberPad6:\r\n                    return Key.NumPad6;\r\n\r\n                case ExtendedVirtualKey.NumberPad7:\r\n                    return Key.NumPad7;\r\n\r\n                case ExtendedVirtualKey.NumberPad8:\r\n                    return Key.NumPad8;\r\n\r\n                case ExtendedVirtualKey.NumberPad9:\r\n                    return Key.NumPad9;\r\n\r\n                case ExtendedVirtualKey.Multiply:\r\n                    return Key.Multiply;\r\n\r\n                case ExtendedVirtualKey.Add:\r\n                    return Key.Add;\r\n\r\n                case ExtendedVirtualKey.Separator:\r\n                    return Key.Separator;\r\n\r\n                case ExtendedVirtualKey.Subtract:\r\n                    return Key.Subtract;\r\n\r\n                case ExtendedVirtualKey.Decimal:\r\n                    return Key.Decimal;\r\n\r\n                case ExtendedVirtualKey.Divide:\r\n                    return Key.Divide;\r\n\r\n                case ExtendedVirtualKey.F1:\r\n                    return Key.F1;\r\n\r\n                case ExtendedVirtualKey.F2:\r\n                    return Key.F2;\r\n\r\n                case ExtendedVirtualKey.F3:\r\n                    return Key.F3;\r\n\r\n                case ExtendedVirtualKey.F4:\r\n                    return Key.F4;\r\n\r\n                case ExtendedVirtualKey.F5:\r\n                    return Key.F5;\r\n\r\n                case ExtendedVirtualKey.F6:\r\n                    return Key.F6;\r\n\r\n                case ExtendedVirtualKey.F7:\r\n                    return Key.F7;\r\n\r\n                case ExtendedVirtualKey.F8:\r\n                    return Key.F8;\r\n\r\n                case ExtendedVirtualKey.F9:\r\n                    return Key.F9;\r\n\r\n                case ExtendedVirtualKey.F10:\r\n                    return Key.F10;\r\n\r\n                case ExtendedVirtualKey.F11:\r\n                    return Key.F11;\r\n\r\n                case ExtendedVirtualKey.F12:\r\n                    return Key.F12;\r\n\r\n                case ExtendedVirtualKey.F13:\r\n                    return Key.F13;\r\n\r\n                case ExtendedVirtualKey.F14:\r\n                    return Key.F14;\r\n\r\n                case ExtendedVirtualKey.F15:\r\n                    return Key.F15;\r\n\r\n                case ExtendedVirtualKey.F16:\r\n                    return Key.F16;\r\n\r\n                case ExtendedVirtualKey.F17:\r\n                    return Key.F17;\r\n\r\n                case ExtendedVirtualKey.F18:\r\n                    return Key.F18;\r\n\r\n                case ExtendedVirtualKey.F19:\r\n                    return Key.F19;\r\n\r\n                case ExtendedVirtualKey.F20:\r\n                    return Key.F20;\r\n\r\n                case ExtendedVirtualKey.F21:\r\n                    return Key.F21;\r\n\r\n                case ExtendedVirtualKey.F22:\r\n                    return Key.F22;\r\n\r\n                case ExtendedVirtualKey.F23:\r\n                    return Key.F23;\r\n\r\n                case ExtendedVirtualKey.F24:\r\n                    return Key.F24;\r\n\r\n                case ExtendedVirtualKey.NumberKeyLock:\r\n                    return Key.NumLock;\r\n\r\n                case ExtendedVirtualKey.Scroll:\r\n                    return Key.Scroll;\r\n\r\n                case ExtendedVirtualKey.LeftShift:\r\n                    return Key.LeftShift;\r\n\r\n                case ExtendedVirtualKey.RightShift:\r\n                    return Key.RightShift;\r\n\r\n                case ExtendedVirtualKey.LeftControl:\r\n                    return Key.LeftCtrl;\r\n\r\n                case ExtendedVirtualKey.RightControl:\r\n                    return Key.RightCtrl;\r\n\r\n                case ExtendedVirtualKey.LeftMenu:\r\n                    return Key.LeftAlt;\r\n\r\n                case ExtendedVirtualKey.RightMenu:\r\n                    return Key.RightAlt;\r\n\r\n                case ExtendedVirtualKey.GoBack:\r\n                    return Key.BrowserBack;\r\n\r\n                case ExtendedVirtualKey.GoForward:\r\n                    return Key.BrowserForward;\r\n\r\n                case ExtendedVirtualKey.Refresh:\r\n                    return Key.BrowserRefresh;\r\n\r\n                case ExtendedVirtualKey.Stop:\r\n                    return Key.BrowserStop;\r\n\r\n                case ExtendedVirtualKey.Search:\r\n                    return Key.BrowserSearch;\r\n\r\n                case ExtendedVirtualKey.Favorites:\r\n                    return Key.BrowserFavorites;\r\n\r\n                case ExtendedVirtualKey.GoHome:\r\n                    return Key.BrowserHome;\r\n\r\n                case ExtendedVirtualKey.VolumeMute:\r\n                    return Key.VolumeMute;\r\n\r\n                case ExtendedVirtualKey.VolumeDown:\r\n                    return Key.VolumeDown;\r\n\r\n                case ExtendedVirtualKey.VolumeUp:\r\n                    return Key.VolumeUp;\r\n\r\n                case ExtendedVirtualKey.MediaNext:\r\n                    return Key.MediaNextTrack;\r\n\r\n                case ExtendedVirtualKey.MediaPrevious:\r\n                    return Key.MediaPreviousTrack;\r\n\r\n                case ExtendedVirtualKey.MediaStop:\r\n                    return Key.MediaStop;\r\n\r\n                case ExtendedVirtualKey.MediaPlayPause:\r\n                    return Key.MediaPlayPause;\r\n\r\n                case ExtendedVirtualKey.Plus:\r\n                    return Key.OemPlus;\r\n\r\n                case ExtendedVirtualKey.Comma:\r\n                    return Key.OemComma;\r\n\r\n                case ExtendedVirtualKey.Minus:\r\n                    return Key.OemMinus;\r\n\r\n                case ExtendedVirtualKey.Period:\r\n                    return Key.OemPeriod;\r\n\r\n                case ExtendedVirtualKey.OEM_1:\r\n                    return Key.Oem1;\r\n\r\n                case ExtendedVirtualKey.OEM_2:\r\n                    return Key.Oem1;\r\n\r\n                case ExtendedVirtualKey.OEM_3:\r\n                    return Key.Oem3;\r\n\r\n                case ExtendedVirtualKey.OEM_5:\r\n                    return Key.Oem5;\r\n\r\n                case ExtendedVirtualKey.OEM_6:\r\n                    return Key.Oem6;\r\n\r\n                case ExtendedVirtualKey.OEM_7:\r\n                    return Key.Oem7;\r\n\r\n                case ExtendedVirtualKey.OEM_102:\r\n                    return Key.Oem102;\r\n\r\n                default:\r\n                    return Key.None;\r\n            }\r\n        }\r\n\r\n        #region Mosh/SSH locator\r\n\r\n        public static string ResolveLocation(string location)\r\n        {\r\n            if (string.IsNullOrWhiteSpace(location))\r\n            {\r\n                return location;\r\n            }\r\n\r\n            location = location.Trim();\r\n\r\n            if (location.Equals(Constants.MoshCommandName, StringComparison.OrdinalIgnoreCase) ||\r\n                location.Equals($\"{Constants.MoshCommandName}.exe\", StringComparison.OrdinalIgnoreCase))\r\n            {\r\n                return GetMoshPath();\r\n            }\r\n            else if (location.Equals(Constants.SshCommandName, StringComparison.OrdinalIgnoreCase) ||\r\n                     location.Equals($\"{Constants.SshCommandName}.exe\", StringComparison.OrdinalIgnoreCase))\r\n            {\r\n                return GetSshPath();\r\n            }\r\n\r\n            return location;\r\n        }\r\n\r\n        private static string GetSshPath()\r\n        {\r\n            //\r\n            // See https://stackoverflow.com/a/25919981\r\n            //\r\n\r\n            string path;\r\n            if (Environment.Is64BitOperatingSystem && !Environment.Is64BitProcess)\r\n            {\r\n                path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), @\"Sysnative\");\r\n            }\r\n            else\r\n            {\r\n                path = Environment.GetFolderPath(Environment.SpecialFolder.System);\r\n            }\r\n\r\n            path = Path.Combine(path, @\"OpenSSH\\ssh.exe\");\r\n            return System.IO.File.Exists(path) ? path : null;\r\n        }\r\n\r\n        private static string GetMoshPath()\r\n        {\r\n            var directory = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory;\r\n\r\n            while (directory != null)\r\n            {\r\n                string path = Path.Combine(directory.FullName, \"mosh.exe\");\r\n\r\n                if (File.Exists(path))\r\n                {\r\n                    return path;\r\n                }\r\n\r\n                directory = directory.Parent;\r\n            }\r\n\r\n            return null;\r\n        }\r\n\r\n        #endregion Mosh/SSH locator\r\n\r\n        internal static void SaveFile(string path, string content)\r\n        {\r\n            using (StreamWriter writer = new StreamWriter(path, false))\r\n            {\r\n                writer.Write(content);\r\n            }\r\n        }\r\n\r\n        internal static string ReadFile(string path)\r\n        {\r\n            return File.ReadAllText(path);\r\n        }\r\n\r\n        private static bool? MuteProcess(int id, bool mute, bool force = false)\r\n        {\r\n            bool? isAudioSessionMuted = VolumeControl.GetAudioSessionMute(id);\r\n            if (isAudioSessionMuted != null &&\r\n                (force || isAudioSessionMuted != mute))\r\n            {\r\n                VolumeControl.SetAudioSessionMute(id, mute);\r\n            }\r\n            return isAudioSessionMuted;\r\n        }\r\n\r\n        private static bool MuteConhost(bool mute)\r\n        {\r\n            bool audioSessionFound = false;\r\n            foreach (Process conhost in Process.GetProcessesByName(\"conhost\"))\r\n            {\r\n                bool? isAudioSessionMuted = MuteProcess(conhost.Id, mute);\r\n                if (isAudioSessionMuted != null)\r\n                {\r\n                    audioSessionFound = true;\r\n                }\r\n            }\r\n            return audioSessionFound;\r\n        }\r\n\r\n        private static void Calculate(Func<bool> eval, TimeSpan timeout)\r\n        {\r\n            var watch = Stopwatch.StartNew();\r\n            do\r\n            {\r\n                if (eval()) return;\r\n\r\n            } while (watch.Elapsed < timeout);\r\n        }\r\n\r\n        private static void SpawnConhostProcess(bool mute)\r\n        {\r\n            Logger.Instance.Debug($\"SpawnConhostProcess starts mute={mute}\");\r\n\r\n            Process cmdProcess = new Process();\r\n            cmdProcess.StartInfo.FileName = \"cmd.exe\";\r\n            cmdProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;\r\n            cmdProcess.StartInfo.Arguments = \"/k timeout 1 && \\x07\";\r\n            if (cmdProcess.Start() == false)\r\n            {\r\n                Logger.Instance.Debug($\"Can't start {cmdProcess.StartInfo.FileName} {cmdProcess.StartInfo.Arguments}\");\r\n                return;\r\n            }\r\n\r\n            const int sTimeout = 3;\r\n            int conhostProcessId = 0;\r\n            Calculate(() =>\r\n            {\r\n                if (!cmdProcess.HasExited)\r\n                {\r\n                    foreach (Process conhost in Process.GetProcessesByName(\"conhost\"))\r\n                    {\r\n                        try\r\n                        {\r\n                            Process parent = ProcessUtils.ResolveParent(conhost.Id);\r\n                            if (parent != null && cmdProcess.Id == parent.Id)\r\n                            {\r\n                                conhostProcessId = conhost.Id;\r\n                                return true;\r\n                            }\r\n                        }\r\n                        catch (Win32Exception e)\r\n                        {\r\n                            Logger.Instance.Debug($\"Exception with message \\\"{e.Message}\\\" on \" +\r\n                                $\"getting process parent id for conhost process {conhost.Id}\");\r\n                        }\r\n                    }\r\n                }\r\n                return false;\r\n            }, new TimeSpan(0, 0, sTimeout));\r\n\r\n            if (conhostProcessId == 0)\r\n            {\r\n                Logger.Instance.Debug($\"Can't find child conhost process\");\r\n                return;\r\n            }\r\n\r\n            Logger.Instance.Debug($\"Spawned conhost process id={conhostProcessId}. Starting muting of generated bell sound.\");\r\n\r\n            Calculate(() =>\r\n            {\r\n                return MuteProcess(conhostProcessId, true, true) != null;\r\n\r\n            }, new TimeSpan(0, 0, sTimeout));\r\n\r\n            cmdProcess.WaitForExit(2000);\r\n\r\n            Logger.Instance.Debug($\"Set conhost process mute state to {mute}.\");\r\n\r\n            MuteProcess(conhostProcessId, mute);\r\n\r\n            cmdProcess.Kill();\r\n\r\n            Logger.Instance.Debug($\"SpawnConhostProcess finishes mute={mute}\");\r\n        }\r\n\r\n        internal static void MuteTerminal(bool mute)\r\n        {\r\n            bool audioSessionFound = MuteConhost(mute);\r\n\r\n            if (audioSessionFound == true)\r\n            {\r\n                return;\r\n            }\r\n\r\n            SpawnConhostProcess(mute);\r\n\r\n            MuteConhost(mute);\r\n        }\r\n\r\n        [StructLayout(LayoutKind.Sequential)]\r\n        public struct ProcessUtils\r\n        {\r\n            // PROCESS_BASIC_INFORMATION fields start\r\n            internal IntPtr Reserved1;\r\n            internal IntPtr PebBaseAddress;\r\n            internal IntPtr Reserved2_0;\r\n            internal IntPtr Reserved2_1;\r\n            internal IntPtr UniqueProcessId;\r\n            internal IntPtr InheritedFromUniqueProcessId;\r\n            // PROCESS_BASIC_INFORMATION fields end\r\n\r\n            [DllImport(\"ntdll.dll\")]\r\n            private static extern int NtQueryInformationProcess(IntPtr processHandle, int processInformationClass, ref ProcessUtils processInformation, int processInformationLength, out int returnLength);\r\n\r\n            public static Process ResolveParent(int processId)\r\n            {\r\n                Process process = Process.GetProcessById(processId);\r\n                ProcessUtils pbi = new ProcessUtils();\r\n                int result = NtQueryInformationProcess(process.Handle, 0, ref pbi, Marshal.SizeOf(pbi), out var returnLength);\r\n                if (result != 0)\r\n                {\r\n                    throw new Win32Exception(result);\r\n                }\r\n\r\n                try\r\n                {\r\n                    return Process.GetProcessById(pbi.InheritedFromUniqueProcessId.ToInt32());\r\n                }\r\n                catch (ArgumentException)\r\n                {\r\n                    return null;\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "FluentTerminal.SystemTray/VolumeControl.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\n\nnamespace FluentTerminal.SystemTray\n{\n    public static class VolumeControl\n    {\n        public static bool? GetAudioSessionMute(int processId)\n        {\n            ISimpleAudioVolume volume = GetAudioVolume(processId);\n            if (volume == null)\n                return null;\n\n            volume.GetMute(out var mute);\n            Marshal.ReleaseComObject(volume);\n            return mute;\n        }\n\n        public static void SetAudioSessionMute(int processId, bool mute)\n        {\n            ISimpleAudioVolume volume = GetAudioVolume(processId);\n            if (volume == null)\n                return;\n\n            Guid guid = Guid.Empty;\n            volume.SetMute(mute, ref guid);\n            Marshal.ReleaseComObject(volume);\n        }\n\n        public static bool? GetDefaultAudioEndpointMute()\n        {\n            IMMDevice speakers = GetDefaultDevice();\n\n            Guid IID_IAudioEndpointVolume = typeof(IAudioEndpointVolume).GUID;\n            speakers.Activate(ref IID_IAudioEndpointVolume, 0, IntPtr.Zero, out var result);\n            IAudioEndpointVolume audioEndpoint = (IAudioEndpointVolume)result;\n            if (audioEndpoint == null)\n                return null;\n\n            audioEndpoint.GetMute(out var mute);\n            Marshal.ReleaseComObject(audioEndpoint);\n            return mute;\n        }\n\n        public static void SetDefaultAudioEndpointMute(bool mute)\n        {\n            IMMDevice speakers = GetDefaultDevice();\n\n            Guid IID_IAudioEndpointVolume = typeof(IAudioEndpointVolume).GUID;\n            speakers.Activate(ref IID_IAudioEndpointVolume, 0, IntPtr.Zero, out var result);\n            IAudioEndpointVolume audioEndpoint = (IAudioEndpointVolume)result;\n            if (audioEndpoint == null)\n                return;\n\n            Guid guid = Guid.Empty;\n            audioEndpoint.SetMute(mute, ref guid);\n            Marshal.ReleaseComObject(audioEndpoint);\n        }\n\n        private static IMMDevice GetDefaultDevice()\n        {\n            IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator());\n            deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out var device);\n            Marshal.ReleaseComObject(deviceEnumerator);\n            return device;\n        }\n\n        private static ISimpleAudioVolume GetAudioVolume(int pid)\n        {\n            IMMDevice device = GetDefaultDevice();\n            Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID;\n            device.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out var result);\n            IAudioSessionManager2 sessionManager = (IAudioSessionManager2)result;\n\n            sessionManager.GetSessionEnumerator(out var sessionEnumerator);\n            sessionEnumerator.GetCount(out var count);\n\n            ISimpleAudioVolume volumeControl = null;\n            for (int i = 0; i < count; i++)\n            {\n                sessionEnumerator.GetSession(i, out var sessionControl2);\n                sessionControl2.GetProcessId(out var processId);\n\n                if (processId == pid)\n                {\n                    volumeControl = sessionControl2 as ISimpleAudioVolume;\n                    break;\n                }\n                Marshal.ReleaseComObject(sessionControl2);\n            }\n            Marshal.ReleaseComObject(sessionEnumerator);\n            Marshal.ReleaseComObject(sessionManager);\n            Marshal.ReleaseComObject(device);\n            return volumeControl;\n        }\n    }\n\n    [ComImport]\n    [Guid(\"BCDE0395-E52F-467C-8E3D-C4579291692E\")]\n    internal class MMDeviceEnumerator\n    {\n    }\n\n    internal enum EDataFlow\n    {\n        eRender,\n        eCapture,\n        eAll,\n        EDataFlow_enum_count\n    }\n\n    internal enum ERole\n    {\n        eConsole,\n        eMultimedia,\n        eCommunications,\n        ERole_enum_count\n    }\n\n    [Guid(\"5CDF2C82-841E-4546-9722-0CF74078229A\"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n    internal interface IAudioEndpointVolume\n    {\n        int NoImp1();\n        int NoImp2();\n        int NoImp3();\n        int NoImp4();\n        int NoImp5();\n        int NoImp6();\n        int NoImp7();\n        int NoImp8();\n        int NoImp9();\n        int NoImp10();\n        int NoImp11();\n\n        [PreserveSig]\n        int SetMute([MarshalAs(UnmanagedType.Bool)] Boolean bMute, ref Guid pguidEventContext);\n\n        [PreserveSig]\n        int GetMute(out bool pbMute);\n    }\n\n    [Guid(\"A95664D2-9614-4F35-A746-DE8DB63617E6\"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n    internal interface IMMDeviceEnumerator\n    {\n        int NoImp1();\n\n        [PreserveSig]\n        int GetDefaultAudioEndpoint(EDataFlow dataFlow, ERole role, out IMMDevice ppDevice);\n    }\n\n    [Guid(\"D666063F-1587-4E43-81F1-B948E807363F\"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n    internal interface IMMDevice\n    {\n        [PreserveSig]\n        int Activate(ref Guid iid, int clsCtx, IntPtr pActivationParams, [MarshalAs(UnmanagedType.IUnknown)] out object ppInterface);\n    }\n\n    [Guid(\"77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F\"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n    internal interface IAudioSessionManager2\n    {\n        int NoImp1();\n        int NoImp2();\n\n        [PreserveSig]\n        int GetSessionEnumerator(out IAudioSessionEnumerator SessionEnum);\n    }\n\n    [Guid(\"E2F5BB11-0570-40CA-ACDD-3AA01277DEE8\"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n    internal interface IAudioSessionEnumerator\n    {\n        [PreserveSig]\n        int GetCount(out int SessionCount);\n\n        [PreserveSig]\n        int GetSession(int SessionCount, out IAudioSessionControl2 Session);\n    }\n\n    [Guid(\"87CE5498-68D6-44E5-9215-6DA47EF883D8\"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n    internal interface ISimpleAudioVolume\n    {\n        [PreserveSig]\n        int SetMasterVolume(float fLevel, ref Guid EventContext);\n\n        [PreserveSig]\n        int GetMasterVolume(out float pfLevel);\n\n        [PreserveSig]\n        int SetMute(bool bMute, ref Guid EventContext);\n\n        [PreserveSig]\n        int GetMute(out bool pbMute);\n    }\n\n    [Guid(\"bfb7ff88-7239-4fc9-8fa2-07c950be9c6d\"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]\n    internal interface IAudioSessionControl2\n    {\n        // IAudioSessionControl\n        int NoImp0();\n        int NoImp1();\n        int NoImp2();\n        int NoImp3();\n        int NoImp4();\n        int NoImp5();\n        int NoImp6();\n        int NoImp7();\n        int NoImp8();\n\n        // IAudioSessionControl2\n        [PreserveSig]\n        int GetSessionIdentifier([MarshalAs(UnmanagedType.LPWStr)] out string pRetVal);\n\n        [PreserveSig]\n        int GetSessionInstanceIdentifier([MarshalAs(UnmanagedType.LPWStr)] out string pRetVal);\n\n        [PreserveSig]\n        int GetProcessId(out int pRetVal);\n\n        [PreserveSig]\n        int IsSystemSoundsSession();\n\n        [PreserveSig]\n        int SetDuckingPreference(bool optOut);\n    }\n}\n"
  },
  {
    "path": "FluentTerminal.SystemTray/app.manifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n  <assemblyIdentity version=\"1.0.0.0\" name=\"MyApplication.app\"/>\n  <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v2\">\n    <security>\n      <requestedPrivileges xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n        <!-- UAC-Manifestoptionen\n             Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den \n             Knoten \"requestedExecutionLevel\" wie folgt.\n\n        <requestedExecutionLevel  level=\"asInvoker\" uiAccess=\"false\" />\n        <requestedExecutionLevel  level=\"requireAdministrator\" uiAccess=\"false\" />\n        <requestedExecutionLevel  level=\"highestAvailable\" uiAccess=\"false\" />\n\n            Durch Angabe des Elements \"requestedExecutionLevel\" wird die Datei- und Registrierungsvirtualisierung deaktiviert. \n            Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität\n            für die Anwendung erforderlich ist.\n        -->\n        <requestedExecutionLevel level=\"asInvoker\" uiAccess=\"false\" />\n      </requestedPrivileges>\n    </security>\n  </trustInfo>\n\n  <compatibility xmlns=\"urn:schemas-microsoft-com:compatibility.v1\">\n    <application>\n      <!-- Windows 10 -->\n      <supportedOS Id=\"{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}\" />\n    </application>\n  </compatibility>\n\n  <!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere\n       DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel und müssen sich nicht  \n       anmelden. Für Windows Forms-Anwendungen für .NET Framework 4.6, die sich für diese Einstellung anmelden, muss \n       auch die Einstellung \"'EnableWindowsFormsHighDpiAutoResizing\" in der \"app.config\" auf \"true\" festgelegt werden. -->\n  <!--\n  <application xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n    <windowsSettings>\n      <dpiAware xmlns=\"http://schemas.microsoft.com/SMI/2005/WindowsSettings\">true</dpiAware>\n    </windowsSettings>\n  </application>\n  -->\n\n  <!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->\n  <!--\n  <dependency>\n    <dependentAssembly>\n      <assemblyIdentity\n          type=\"win32\"\n          name=\"Microsoft.Windows.Common-Controls\"\n          version=\"6.0.0.0\"\n          processorArchitecture=\"*\"\n          publicKeyToken=\"6595b64144ccf1df\"\n          language=\"*\"\n        />\n    </dependentAssembly>\n  </dependency>\n  -->\n\n</assembly>\n"
  },
  {
    "path": "FluentTerminal.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.31808.319\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"FluentTerminal.App\", \"FluentTerminal.App\\FluentTerminal.App.csproj\", \"{41020100-3414-4E0A-9A8E-92D3C4179DF8}\"\n\tProjectSection(ProjectDependencies) = postProject\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD} = {9EDDE318-0003-4553-B6F9-3FE5473563FD}\n\t\t{BAAE6239-343F-454C-977F-F81F91715961} = {BAAE6239-343F-454C-977F-F81F91715961}\n\tEndProjectSection\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"FluentTerminal.SystemTray\", \"FluentTerminal.SystemTray\\FluentTerminal.SystemTray.csproj\", \"{9EDDE318-0003-4553-B6F9-3FE5473563FD}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"FluentTerminal.RuntimeComponent\", \"FluentTerminal.RuntimeComponent\\FluentTerminal.RuntimeComponent.csproj\", \"{BAAE6239-343F-454C-977F-F81F91715961}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"FluentTerminal.Models\", \"FluentTerminal.Models\\FluentTerminal.Models.csproj\", \"{5EA40453-A0AA-449E-8406-D6EA51D7E70E}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"FluentTerminal.App.Services\", \"FluentTerminal.App.Services\\FluentTerminal.App.Services.csproj\", \"{A1AD7385-F92E-46AC-A349-43DC99B1E72D}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"FluentTerminal.App.Services.Test\", \"FluentTerminal.App.Services.Test\\FluentTerminal.App.Services.Test.csproj\", \"{B353EAF4-8332-4C89-B986-B0B29F7E21FC}\"\nEndProject\nProject(\"{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}\") = \"FluentTerminal.Package\", \"FluentTerminal.Package\\FluentTerminal.Package.wapproj\", \"{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\t\tStore|x64 = Store|x64\n\t\tStore|x86 = Store|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Debug|x64.Build.0 = Debug|x64\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Debug|x86.Build.0 = Debug|x86\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Release|x64.ActiveCfg = Release|x64\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Release|x64.Build.0 = Release|x64\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Release|x86.ActiveCfg = Release|x86\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Release|x86.Build.0 = Release|x86\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Store|x64.ActiveCfg = Release|x64\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Store|x64.Build.0 = Release|x64\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Store|x86.ActiveCfg = Release|x86\n\t\t{41020100-3414-4E0A-9A8E-92D3C4179DF8}.Store|x86.Build.0 = Release|x86\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Debug|x64.Build.0 = Debug|x64\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Debug|x86.Build.0 = Debug|x86\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Release|x64.ActiveCfg = Release|x64\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Release|x64.Build.0 = Release|x64\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Release|x86.ActiveCfg = Release|x86\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Release|x86.Build.0 = Release|x86\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Store|x64.ActiveCfg = Store|x64\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Store|x64.Build.0 = Store|x64\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Store|x86.ActiveCfg = Store|x86\n\t\t{9EDDE318-0003-4553-B6F9-3FE5473563FD}.Store|x86.Build.0 = Store|x86\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Debug|x64.Build.0 = Debug|x64\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Debug|x86.Build.0 = Debug|x86\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Release|x64.ActiveCfg = Release|x64\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Release|x64.Build.0 = Release|x64\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Release|x86.ActiveCfg = Release|x86\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Release|x86.Build.0 = Release|x86\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Store|x64.ActiveCfg = Release|x64\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Store|x64.Build.0 = Release|x64\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Store|x86.ActiveCfg = Release|x86\n\t\t{BAAE6239-343F-454C-977F-F81F91715961}.Store|x86.Build.0 = Release|x86\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Release|x64.Build.0 = Release|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Release|x86.Build.0 = Release|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Store|x64.ActiveCfg = Release|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Store|x64.Build.0 = Release|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Store|x86.ActiveCfg = Release|Any CPU\n\t\t{5EA40453-A0AA-449E-8406-D6EA51D7E70E}.Store|x86.Build.0 = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Release|x64.Build.0 = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Release|x86.Build.0 = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Store|x64.ActiveCfg = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Store|x64.Build.0 = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Store|x86.ActiveCfg = Release|Any CPU\n\t\t{A1AD7385-F92E-46AC-A349-43DC99B1E72D}.Store|x86.Build.0 = Release|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Store|x64.ActiveCfg = Release|Any CPU\n\t\t{B353EAF4-8332-4C89-B986-B0B29F7E21FC}.Store|x86.ActiveCfg = Release|Any CPU\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Debug|x64.Build.0 = Debug|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Debug|x86.Build.0 = Debug|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Release|x64.ActiveCfg = Release|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Release|x64.Build.0 = Release|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Release|x64.Deploy.0 = Release|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Release|x86.ActiveCfg = Release|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Release|x86.Build.0 = Release|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Release|x86.Deploy.0 = Release|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Store|x64.ActiveCfg = Release|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Store|x64.Build.0 = Release|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Store|x64.Deploy.0 = Release|x64\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Store|x86.ActiveCfg = Release|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Store|x86.Build.0 = Release|x86\n\t\t{DA0BF206-F386-404C-82DF-5EAE2F5B1AA5}.Store|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(ExtensibilityGlobals) = postSolution\n\t\tSolutionGuid = {094EE77F-2C87-4E36-BBFF-C093D31D4DA7}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n"
  },
  {
    "path": "MOSH_README.md",
    "content": "# Using `mosh` with FluentTerminal\n\n`mosh` can be used in FluentTerminal in two ways:\n\n 1. Through GUI, by turning on ***Use mosh*** option in *SSH Connection* dialog ('Ctrl+Shift+Y' and 'Ctrl+Alt+Y');\n 2. As a custom command, in *Quick Launch* dialog ('Ctrl+Shift+Q' and 'Ctrl+Alt+Q').\n\nThe first way, through GUI is very simple and self-descriptive, and it will not be explained here. Using `mosh` in *Quick Launch* is more complicated, but also offers more control. The simplest `mosh` command you can enter is:\n\n    mosh user@host\n\nThis will initiate a `mosh` session with default options (i.e. port range will default to `60000:61000`).\n\n`mosh` additionally supports many more command-line arguments. In fact, it's almost completely compliant to [mosh(1) - Linux man page](https://linux.die.net/man/1/mosh). `mosh` is defined there as:\n\n`mosh [options] [--] [user@]host [command...]`\n\n`mosh` embedded in FluentTerminal only lacks support for the last part (`[command...]`). You can find detailed explanation at the man page mentioned above. Also you can execute custom command `mosh --help`, and you'll get the following output:\n\n    Usage: mosh [options] [user@]host\n    \n          --client=VALUE         Path to client helper on local machine (default:\n                                   \"mosh-client\")\n          --server=VALUE         Command to run server helper on remote machine\n                                   (default: \"mosh-server\").\n                                    Example: '--server=\"mosh-server new -v -c 256\"-\n                                   '.\n                                    See https://linux.die.net/man/1/mosh-server for\n                                   more details.\n          --ssh=VALUE            OpenSSH command to remotely execute mosh-server\n                                   on remote machine (default: \"ssh\").\n                                    Example: ''--ssh=\"ssh -p 2222\"'.\n                                    See https://man.openbsd.org/ssh for more\n                                   details.\n          --predict=VALUE        Controls use of speculative local echo. Defaults\n                                   to 'adaptive' (show predictions on slower links\n                                   and to smooth out network glitches) and can also\n                                   be 'always' or 'never'.\n      -a                         Synonym 'for --predict=always'.\n      -n                         Synonym 'for --predict=never'.\n      -p, --port=VALUE           Use a particular server-side UDP port or port\n                                   range, for example, if this is the only port\n                                   that is forwarded through a firewall to the\n                                   server. Otherwise, mosh will choose a port\n                                   between 60000 and 61000.\n                                    Example: '--port=60000:60100'\n          --help                 Show help.\n          --no-init              Do not send the smcup initialization string and\n                                   rmcup deinitialization string to the client's\n                                   terminal. On many terminals this disables\n                                   alternate screen mode.\n    \n    Exit codes:\n      254 - Invalid command line arguments\n      255 - Initial SSH of Mosh connection setup failed\n      All other values - Exit code returned by remote shell\n"
  },
  {
    "path": "README.md",
    "content": "> **⚠️ Project Status: Unmaintained**\n>\n> This project is no longer being maintained.\n>\n> **Recommendation:** Windows Terminal is now a robust, feature-rich terminal application that contains everything I originally set out to achieve with Fluent Terminal, and more. I highly recommend using [Windows Terminal](https://github.com/microsoft/terminal) as an alternative. Thank you to everyone who supported and contributed to this project!\n\n<p align=\"center\">\n  <img alt=\"fluent terminal logo\" src=\"./Icons/Icon_no_margin.png\" width=\"100px\" />\n  <h1 align=\"center\">Fluent Terminal</h1>\n</p>\n\n![CI](https://github.com/felixse/FluentTerminal/workflows/CI/badge.svg?branch=master)\n[![SonarCloud](https://sonarcloud.io/api/project_badges/measure?project=FluentTerminal&metric=alert_status)](https://sonarcloud.io/dashboard?id=FluentTerminal)\n[![Gitter chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/FluentTerminal)\n[![Downloads](https://img.shields.io/github/downloads/felixse/FluentTerminal/total.svg?label=Downloads)](https://github.com/felixse/FluentTerminal/releases/)\n[![Release](https://img.shields.io/github/release/felixse/FluentTerminal.svg?label=Release)](https://github.com/felixse/FluentTerminal/releases)\n[![Contributors](https://img.shields.io/github/contributors/felixse/FluentTerminal?label=Contributors)](https://github.com/felixse/FluentTerminal/graphs/contributors)\n\nA Terminal Emulator based on UWP and web technologies.\n\n\n<a href='//www.microsoft.com/store/apps/9p2krlmfxf9t?cid=storebadge&ocid=badge'><img src='store-badge.png' alt='Get it from Microsoft' width=\"284px\" height=\"104px\" /></a>\n\n## Features\n\n- Terminal for PowerShell, CMD, WSL or custom shells\n- Built-in support for SSH and [Mosh](https://mosh.org/) connections\n- Supports tabs and multiple windows\n- Theming and appearance configuration\n- Import/Export themes\n- Import iTerm themes\n- Fullscreen mode\n- Editable keybindings\n- Search function\n- Configure shell profiles to quickly switch between different shells\n- Explorer context menu integration (Installation script can be found [here](https://github.com/felixse/FluentTerminal/tree/master/Explorer%20Context%20Menu%20Integration))\n- VsCode Extension ([here](https://marketplace.visualstudio.com/items?itemName=Xherdi.fluent-terminal))\n\n## Screenshots\n\n![Terminal window](Screenshots/terminal.png)\n![Settings window](Screenshots/settings.png)\n\n## Languages\n- Albanian\n- Arabic\n- Arabic (Iraq)\n- Azerbaijani\n- Bosnian\n- Bulgarian\n- Chinese (Simplified)\n- Chinese (Traditional)\n- Croatian\n- Dutch\n- English\n- Esperanto\n- French\n- German\n- Hebrew\n- Hindi\n- Hungarian\n- Indonesian\n- Italian\n- Japanese\n- Korean\n- Persian\n- Polish\n- Portuguese\n- Portuguese (Brazilian)\n- Romanian\n- Russian\n- Serbian\n- Slovenian\n- Spanish\n- Swedish\n- Turkish\n- Ukrainian\n- Uzbek\n- Vietnamese\n\n\nSign up to [POEditor](https://poeditor.com/join/project/TfKNIt826z) to help with existing translations or add a new language\n\n## How to install (as an end-user)\n\n### Prerequisite\n- You need to update to Fall Creators Update or later.\n\n### Microsoft Store\n- Search for Fluent Terminal in the Microsoft Store App or click [here](https://www.microsoft.com/store/apps/9p2krlmfxf9t)\n\n### Chocolatey package manager installation\n\n- Install [Chocolatey](https://chocolatey.org/)\n- From an elevated/admin shell, execute `choco install fluent-terminal`\n\n### Scoop package manager installation\n- Install Scoop\n- Install 7zip and git (to add buckets): `scoop install 7zip git`\n- From an elevated/admin shell, execute\n```\n scoop bucket add nonportable\n scoop install fluent-terminal-np\n ```\n\n### Manual\n\n- Download and extract the latest [release](https://github.com/felixse/FluentTerminal/releases).\n- Double click the *.appxbundle file.\n\n## How to set up a development environment\nPlease refer to [this Wiki page](https://github.com/felixse/FluentTerminal/wiki/How-to-set-up-a-development-environment)\n"
  },
  {
    "path": "UpdateTranslations.ps1",
    "content": "Push-Location (Split-Path -Path $MyInvocation.MyCommand.Definition -Parent)\n\n$api_token = \"4e9bc169a3ef996122f4202665cef35d\";\n$projectId = \"258717\";\n\nfunction DownloadLanguageFile($language, $directory)\n{\n    if (!$directory)\n    {\n        $directory = $language\n    }\n\n    $contentType = 'application/x-www-form-urlencoded' \n    $body = @{\n        api_token = $api_token\n        id = $projectId\n        language = $language\n        type = \"resw\"\n    }\n    \n    $response = Invoke-RestMethod -Uri \"https://api.poeditor.com/v2/projects/export\" -Method Post -Body $body -ContentType $contentType\n\n    Invoke-WebRequest -Uri $response.result.url -OutFile \"FluentTerminal.App/Strings/$($directory)/Resources.resw\"\n}\n\nDownloadLanguageFile \"en\" \"en-US\"\nDownloadLanguageFile \"zh-TW\" \"zh-Hant\"\nDownloadLanguageFile \"zh-Hans\"\nDownloadLanguageFile \"de\"\nDownloadLanguageFile \"es\"\nDownloadLanguageFile \"fr\"\nDownloadLanguageFile \"he\"\nDownloadLanguageFile \"hi\"\nDownloadLanguageFile \"bs\"\nDownloadLanguageFile \"hr\"\nDownloadLanguageFile \"pt-BR\"\nDownloadLanguageFile \"ru\"\nDownloadLanguageFile \"ro\"\nDownloadLanguageFile \"it\"\nDownloadLanguageFile \"nl\"\nDownloadLanguageFile \"pl\"\nDownloadLanguageFile \"ja\"\nDownloadLanguageFile \"ar-iq\"\nDownloadLanguageFile \"uk\"\nDownloadLanguageFile \"ko\"\nDownloadLanguageFile \"az\" \"az-Latn\"\nDownloadLanguageFile \"ar\"\nDownloadLanguageFile \"id\"\nDownloadLanguageFile \"fa\"\nDownloadLanguageFile \"tr\"\nDownloadLanguageFile \"hu\"\nDownloadLanguageFile \"sl\"\nDownloadLanguageFile \"ug\" \"ug-Arab\"\nDownloadLanguageFile \"eo\"\nDownloadLanguageFile \"uz\" \"uz-Latn\"\nDownloadLanguageFile \"sv\"\nDownloadLanguageFile \"sq\"\nDownloadLanguageFile \"pt\"\nDownloadLanguageFile \"sr\" \"sr-Latn\"\nDownloadLanguageFile \"sr-cyrl\"\nDownloadLanguageFile \"vi\"\nDownloadLanguageFile \"bg\""
  },
  {
    "path": "nuget.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <!--To inherit the global NuGet package sources remove the <clear/> line below -->\n    <clear />\n    <add key=\"nuget\" value=\"https://api.nuget.org/v3/index.json\" />\n  </packageSources>\n</configuration>"
  }
]